text: Clazz.declarePackage ("JS");
  Clazz.load (["JS.CIPData"], "JS.CIPDataSmiles", ["JU.Lst", "$.Measure", "JU.BSUtil"], function () {
  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.overrideMethod (c$, "isSmiles", 
  function () {
  return true;
  });
  Clazz.makeConstructor (c$, 
  function () {
  Clazz.superConstructor (this, JS.CIPDataSmiles, []);
  });
  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 (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 ()));
  });
  });
  