ketcher-react 3.5.0-rc.2 → 3.5.0-rc.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/dist/Editor.d.ts +1 -1
  2. package/dist/MicromoleculesEditor.d.ts +1 -0
  3. package/dist/cjs/Editor.d.ts +1 -1
  4. package/dist/cjs/MicromoleculesEditor.d.ts +1 -0
  5. package/dist/cjs/components/StructRender/types.d.ts +1 -2
  6. package/dist/cjs/contexts/appContext.d.ts +1 -2
  7. package/dist/cjs/index.js +618 -564
  8. package/dist/cjs/index.js.map +1 -1
  9. package/dist/cjs/{index.modern-ada6f3d0.js → index.modern-2314b276.js} +69 -43
  10. package/dist/cjs/index.modern-2314b276.js.map +1 -0
  11. package/dist/cjs/script/builders/ketcher/ButtonName.d.ts +1 -1
  12. package/dist/cjs/script/builders/ketcher/KetcherBuilder.d.ts +4 -7
  13. package/dist/cjs/script/editor/Editor.d.ts +2 -1
  14. package/dist/cjs/script/editor/tool/arrow/arrow.types.d.ts +1 -4
  15. package/dist/cjs/script/editor/tool/arrow/multitailArrowMoveTool.d.ts +1 -1
  16. package/dist/cjs/script/editor/tool/arrow/reactionArrowMoveTool.d.ts +1 -1
  17. package/dist/cjs/script/index.d.ts +5 -5
  18. package/dist/cjs/script/ui/App/initApp.d.ts +2 -4
  19. package/dist/cjs/script/ui/dialog/template/template-attach.d.ts +2 -0
  20. package/dist/cjs/script/ui/state/hotkeys.d.ts +1 -1
  21. package/dist/cjs/script/ui/views/components/ContextMenu/ContextMenuTrigger.utils.d.ts +2 -2
  22. package/dist/cjs/script/ui/views/components/ContextMenu/contextMenu.types.d.ts +8 -8
  23. package/dist/cjs/script/ui/views/modal/Modal.container.d.ts +2 -2
  24. package/dist/cjs/script/ui/views/modal/Modal.d.ts +2 -2
  25. package/dist/cjs/script/ui/views/modal/modal.types.d.ts +4 -1
  26. package/dist/cjs/script/ui/views/toolbars/toolbar.types.d.ts +1 -1
  27. package/dist/components/StructRender/types.d.ts +1 -2
  28. package/dist/contexts/appContext.d.ts +1 -2
  29. package/dist/index.js +620 -566
  30. package/dist/index.js.map +1 -1
  31. package/dist/{index.modern-87cd317d.js → index.modern-723c68e1.js} +68 -42
  32. package/dist/index.modern-723c68e1.js.map +1 -0
  33. package/dist/script/builders/ketcher/ButtonName.d.ts +1 -1
  34. package/dist/script/builders/ketcher/KetcherBuilder.d.ts +4 -7
  35. package/dist/script/editor/Editor.d.ts +2 -1
  36. package/dist/script/editor/tool/arrow/arrow.types.d.ts +1 -4
  37. package/dist/script/editor/tool/arrow/multitailArrowMoveTool.d.ts +1 -1
  38. package/dist/script/editor/tool/arrow/reactionArrowMoveTool.d.ts +1 -1
  39. package/dist/script/index.d.ts +5 -5
  40. package/dist/script/ui/App/initApp.d.ts +2 -4
  41. package/dist/script/ui/dialog/template/template-attach.d.ts +2 -0
  42. package/dist/script/ui/state/hotkeys.d.ts +1 -1
  43. package/dist/script/ui/views/components/ContextMenu/ContextMenuTrigger.utils.d.ts +2 -2
  44. package/dist/script/ui/views/components/ContextMenu/contextMenu.types.d.ts +8 -8
  45. package/dist/script/ui/views/modal/Modal.container.d.ts +2 -2
  46. package/dist/script/ui/views/modal/Modal.d.ts +2 -2
  47. package/dist/script/ui/views/modal/modal.types.d.ts +4 -1
  48. package/dist/script/ui/views/toolbars/toolbar.types.d.ts +1 -1
  49. package/package.json +1 -1
  50. package/dist/cjs/index.modern-ada6f3d0.js.map +0 -1
  51. package/dist/index.modern-87cd317d.js.map +0 -1
package/dist/index.js CHANGED
@@ -18,16 +18,16 @@ import _slicedToArray$1 from '@babel/runtime/helpers/slicedToArray';
18
18
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
19
19
  import * as React from 'react';
20
20
  import React__default, { createRef, Component, useRef, useEffect, useLayoutEffect, useMemo, useState, createElement, forwardRef, useCallback, Fragment as Fragment$2, PureComponent, lazy, Suspense } from 'react';
21
+ import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
22
+ import _regeneratorRuntime from '@babel/runtime/regenerator';
21
23
  import 'intersection-observer';
22
24
  import 'element-closest-polyfill';
23
25
  import 'regenerator-runtime/runtime';
24
26
  import 'url-search-params-polyfill';
25
27
  import 'whatwg-fetch';
26
- import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
27
- import _regeneratorRuntime from '@babel/runtime/regenerator';
28
28
  import _classCallCheck$2 from '@babel/runtime/helpers/classCallCheck';
29
29
  import _createClass$2 from '@babel/runtime/helpers/createClass';
30
- import { KetSerializer, MolSerializer, KetcherLogger, Ketcher, defaultBondThickness, FormatterFactory, isClipboardAPIAvailable, notifyCopyCut, notifyRequestCompleted, isControlKey, StereLabelStyleType, StereoColoringType, ShowHydrogenLabels, ShowHydrogenLabelNames, SettingsManager, SdfSerializer, KETCHER_SAVED_OPTIONS_KEY, Bond as Bond$2, Elements, AtomList, getAtomType, StereoLabel, isAttachmentBond, Atom as Atom$2, findStereoAtoms, RxnArrowMode, MULTITAIL_ARROW_TOOL_NAME, SimpleObjectMode, IMAGE_KEY, SGroup as SGroup$1, Pile, identifyStructFormat, SupportedFormat, MULTITAIL_ARROW_KEY, ChemicalMimeType, RenderStruct, Struct, ZoomTool, shortcutStr, MonomerMicromolecule, UnresolvedMonomer, FunctionalGroupsProvider, SaltsAndSolventsProvider, KetcherAsyncEvents, ElementColor, ketcherProvider, generateMenuShortcuts, Vec2, Scale, fromMultipleMove, FunctionalGroup, mergeMapOfItemsToSet, fromSgroupDeletion, fromFragmentDeletion, vectorUtils, fromBondAddition, Action, fromAtomAddition, fromAtomsAttrs, checkOverlapping, fromSeveralSgroupAddition, expandSGroupWithMultipleAttachmentPoint, SgContexts, fromSgroupAction, fromItemsFuse, ReBond, setExpandSGroup, fromBondsAttrs, OperationType, ReStruct, imageReferencePositionToCursor, multitailArrowReferenceLinesToCursor, multitailReferencePositionToCursor, CoordinateTransformation, MultitailArrowRefName, fromMultitailArrowHeadTailMove, fromMultitailArrowHeadTailsResize, fromMultitailArrowMove, fromArrowResizing, fromPaste, fromImageResize, fromSimpleObjectResizing, getItemsToFuse, getHoverToFuse, fromTextDeletion, fromTextUpdating, fromTemplateOnCanvas, fromTemplateOnBondAction, fromTemplateOnAtom, BondAttr, AtomAttr, formatProperties, runAsyncAction, getStructStringFromClipboardData, getStructure, initHotKeys, keyNorm, Fragment as Fragment$1, fromRGroupAttachmentPointUpdate, fromOneBondDeletion, bondChangingAction, fromChain, removeInfoLabelFromAtoms, fromStereoFlagUpdate, fromOneAtomDeletion, fromArrowDeletion, fromPlusDeletion, fromSimpleObjectDeletion, fromRGroupAttachmentPointDeletion, fromImageDeletion, fromMultitailArrowDeletion, notifyItemsToMergeInitializationComplete, RGroup as RGroup$2, fromRGroupFragment, fromUpdateIfThen, fromRGroupAttrs, fromArrowAddition, fromMultitailArrowCreation, fromPlusAddition, getRelSGroupsBySelection, RotateMonomerOperation, fromRotate, fromFlip, fromSimpleObjectAddition, fromTextCreation, fromImageMove, fromImageCreation, fromHighlightCreate, fromHighlightClear, getOptionsWithConvertedUnits, provideEditorSettings, fromNewCanvas, Render, Coordinates, fromDescriptorsAlign, fromSgroupAttachmentPointAddition, SGroupAttachmentPoint, fromSgroupAddition, atomGetAttr, fromBondFlipping, setExpandMonomerSGroup, fromMultitailArrowTailAdd, MultitailArrow, fromMultitailArrowTailRemove, AmbiguousMonomer, genericsList, getAtomCustomQuery, getFormatMimeTypeByFileName, getPropertiesByFormat, StereoFlag, getPropertiesByImgFormat, legacyCopy as legacyCopy$1, b64toBlob, Generics, TextCommand, DefaultStructServiceOptions } from 'ketcher-core';
30
+ import { KetSerializer, MolSerializer, KetcherLogger, ketcherProvider, defaultBondThickness, isClipboardAPIAvailable, notifyCopyCut, notifyRequestCompleted, isControlKey, StereLabelStyleType, StereoColoringType, ShowHydrogenLabels, ShowHydrogenLabelNames, SettingsManager, SdfSerializer, KETCHER_SAVED_OPTIONS_KEY, Bond as Bond$2, Elements, AtomList, getAtomType, StereoLabel, isAttachmentBond, Atom as Atom$2, findStereoAtoms, RxnArrowMode, MULTITAIL_ARROW_TOOL_NAME, SimpleObjectMode, IMAGE_KEY, SGroup as SGroup$1, Pile, identifyStructFormat, SupportedFormat, FormatterFactory, MULTITAIL_ARROW_KEY, ChemicalMimeType, RenderStruct, Struct, ZoomTool, shortcutStr, MonomerMicromolecule, UnresolvedMonomer, FunctionalGroupsProvider, SaltsAndSolventsProvider, KetcherAsyncEvents, ElementColor, generateMenuShortcuts, Vec2, Scale, fromMultipleMove, FunctionalGroup, mergeMapOfItemsToSet, fromSgroupDeletion, fromFragmentDeletion, vectorUtils, fromBondAddition, Action, fromAtomAddition, fromAtomsAttrs, checkOverlapping, fromSeveralSgroupAddition, expandSGroupWithMultipleAttachmentPoint, SgContexts, fromSgroupAction, fromItemsFuse, ReBond, setExpandSGroup, fromBondsAttrs, OperationType, ReStruct, imageReferencePositionToCursor, multitailArrowReferenceLinesToCursor, multitailReferencePositionToCursor, CoordinateTransformation, MultitailArrowRefName, fromMultitailArrowHeadTailMove, fromMultitailArrowHeadTailsResize, fromMultitailArrowMove, fromArrowResizing, fromPaste, fromImageResize, fromSimpleObjectResizing, getItemsToFuse, getHoverToFuse, fromTextDeletion, fromTextUpdating, fromTemplateOnCanvas, fromTemplateOnBondAction, fromTemplateOnAtom, BondAttr, AtomAttr, formatProperties, runAsyncAction, getStructStringFromClipboardData, getStructure, initHotKeys, keyNorm, Fragment as Fragment$1, fromRGroupAttachmentPointUpdate, fromOneBondDeletion, bondChangingAction, fromChain, removeInfoLabelFromAtoms, fromStereoFlagUpdate, fromOneAtomDeletion, fromArrowDeletion, fromPlusDeletion, fromSimpleObjectDeletion, fromRGroupAttachmentPointDeletion, fromImageDeletion, fromMultitailArrowDeletion, notifyItemsToMergeInitializationComplete, RGroup as RGroup$2, fromRGroupFragment, fromUpdateIfThen, fromRGroupAttrs, fromArrowAddition, fromMultitailArrowCreation, fromPlusAddition, getRelSGroupsBySelection, RotateMonomerOperation, fromRotate, fromFlip, fromSimpleObjectAddition, fromTextCreation, fromImageMove, fromImageCreation, fromHighlightCreate, fromHighlightClear, getOptionsWithConvertedUnits, provideEditorSettings, fromNewCanvas, Render, Coordinates, fromDescriptorsAlign, fromSgroupAttachmentPointAddition, SGroupAttachmentPoint, fromSgroupAddition, atomGetAttr, fromBondFlipping, setExpandMonomerSGroup, fromMultitailArrowTailAdd, MultitailArrow, fromMultitailArrowTailRemove, AmbiguousMonomer, genericsList, getAtomCustomQuery, getFormatMimeTypeByFileName, getPropertiesByFormat, StereoFlag, getPropertiesByImgFormat, legacyCopy as legacyCopy$1, b64toBlob, Generics, TextCommand, Ketcher, DefaultStructServiceOptions } from 'ketcher-core';
31
31
  import _objectWithoutProperties from '@babel/runtime/helpers/objectWithoutProperties';
32
32
  import _possibleConstructorReturn$2 from '@babel/runtime/helpers/possibleConstructorReturn';
33
33
  import _getPrototypeOf$2 from '@babel/runtime/helpers/getPrototypeOf';
@@ -37,7 +37,7 @@ import _typeof$3 from '@babel/runtime/helpers/typeof';
37
37
  import Ajv from 'ajv';
38
38
  import { pick, range as range$1, capitalize, without, omit, findLastIndex, findIndex, isEmpty, pickBy, isEqual, escapeRegExp, flow, filter, reduce, throttle, xor, debounce, upperFirst } from 'lodash/fp';
39
39
  import _toConsumableArray from '@babel/runtime/helpers/toConsumableArray';
40
- import _, { isNumber, throttle as throttle$1, debounce as debounce$1, intersection, difference, cloneDeep, isEqual as isEqual$1, capitalize as capitalize$1, range as range$2, isEmpty as isEmpty$1, uniqBy, uniqueId } from 'lodash';
40
+ import _, { isNumber, throttle as throttle$1, debounce as debounce$1, intersection, difference, cloneDeep, isEqual as isEqual$1, capitalize as capitalize$1, range as range$2, isEmpty as isEmpty$1, uniqBy } from 'lodash';
41
41
  import _taggedTemplateLiteral from '@babel/runtime/helpers/taggedTemplateLiteral';
42
42
  import styled from '@emotion/styled';
43
43
  import { css } from '@emotion/react';
@@ -85,6 +85,7 @@ function createApi(structServiceProvider, defaultOptions) {
85
85
  var structService = structServiceProvider.createStructService(defaultOptions);
86
86
  var info = structService.info();
87
87
  return Object.assign(info, {
88
+ addKetcherId: structService.addKetcherId.bind(structService),
88
89
  info: structService.info.bind(structService),
89
90
  convert: structService.convert.bind(structService),
90
91
  layout: structService.layout.bind(structService),
@@ -195,48 +196,43 @@ function copyImageToClipboard() {
195
196
  }
196
197
  function _copyImageToClipboard() {
197
198
  _copyImageToClipboard = _asyncToGenerator( _regeneratorRuntime.mark(function _callee() {
198
- var state, editor, server, options, struct, errorHandler, factory, service, structStr, ketcher, image, item;
199
+ var state, editor, options, struct, errorHandler, ketcher, ketSerializer, structStr, image, item;
199
200
  return _regeneratorRuntime.wrap(function _callee$(_context) {
200
201
  while (1) switch (_context.prev = _context.next) {
201
202
  case 0:
202
203
  state = global.currentState;
203
204
  editor = state.editor;
204
- server = state.server;
205
205
  options = state.options;
206
206
  struct = editor.structSelected();
207
207
  errorHandler = editor.errorHandler;
208
- _context.prev = 6;
209
- factory = new FormatterFactory(server);
210
- service = factory.create('ket', options);
208
+ _context.prev = 5;
209
+ ketcher = ketcherProvider.getKetcher(editor.ketcherId);
210
+ ketSerializer = new KetSerializer();
211
+ structStr = ketSerializer.serialize(struct);
211
212
  _context.next = 11;
212
- return service.getStructureFromStructAsync(struct);
213
- case 11:
214
- structStr = _context.sent;
215
- ketcher = new Ketcher(editor, server, {}, factory);
216
- _context.next = 15;
217
213
  return ketcher.generateImage(structStr, {
218
214
  outputFormat: 'png',
219
215
  backgroundColor: '255, 255, 255',
220
216
  bondThickness: options.settings.bondThickness || defaultBondThickness
221
217
  });
222
- case 15:
218
+ case 11:
223
219
  image = _context.sent;
224
220
  item = new ClipboardItem(_defineProperty$1({}, image.type, image));
225
- _context.next = 19;
221
+ _context.next = 15;
226
222
  return navigator.clipboard.write([item]);
227
- case 19:
228
- _context.next = 25;
223
+ case 15:
224
+ _context.next = 21;
229
225
  break;
230
- case 21:
231
- _context.prev = 21;
232
- _context.t0 = _context["catch"](6);
226
+ case 17:
227
+ _context.prev = 17;
228
+ _context.t0 = _context["catch"](5);
233
229
  KetcherLogger.error('copyImageToClipboard.js::copyImageToClipboard', _context.t0);
234
230
  errorHandler('This feature is not available in your browser');
235
- case 25:
231
+ case 21:
236
232
  case "end":
237
233
  return _context.stop();
238
234
  }
239
- }, _callee, null, [[6, 21]]);
235
+ }, _callee, null, [[5, 17]]);
240
236
  }));
241
237
  return _copyImageToClipboard.apply(this, arguments);
242
238
  }
@@ -639,8 +635,8 @@ function exec(action) {
639
635
  return enabled;
640
636
  }
641
637
 
642
- function ownKeys$1v(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
643
- function _objectSpread$1v(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1v(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1v(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
638
+ function ownKeys$1w(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
639
+ function _objectSpread$1w(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1w(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1w(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
644
640
  var MeasurementUnits;
645
641
  (function (MeasurementUnits) {
646
642
  MeasurementUnits["Px"] = "px";
@@ -982,7 +978,7 @@ var optionsSchema = {
982
978
  title: 'Settings',
983
979
  type: 'object',
984
980
  required: [],
985
- properties: _objectSpread$1v(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v(_objectSpread$1v({}, editor), render), server), debug), miew)
981
+ properties: _objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w(_objectSpread$1w({}, editor), render), server), debug), miew)
986
982
  };
987
983
  function getDefaultOptions() {
988
984
  if (!optionsSchema.properties) return {};
@@ -1165,8 +1161,8 @@ function prefetchRender(tmpls, baseUrl, cacheEl) {
1165
1161
  });
1166
1162
  }
1167
1163
 
1168
- function ownKeys$1u(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1169
- function _objectSpread$1u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1u(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1164
+ function ownKeys$1v(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1165
+ function _objectSpread$1v(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1v(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1v(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1170
1166
  var initOptionsState = {
1171
1167
  app: {
1172
1168
  server: false,
@@ -1196,7 +1192,7 @@ var initOptionsState = {
1196
1192
  getServerSettings: function getServerSettings() {
1197
1193
  var seriliazedServerOptions = getSerilizedServerOptions(this.settings);
1198
1194
  var defaultServerOptions = pick(SERVER_OPTIONS, this.settings);
1199
- return _objectSpread$1u(_objectSpread$1u({}, defaultServerOptions), seriliazedServerOptions);
1195
+ return _objectSpread$1v(_objectSpread$1v({}, defaultServerOptions), seriliazedServerOptions);
1200
1196
  }
1201
1197
  };
1202
1198
  function getSerilizedServerOptions(options) {
@@ -1220,7 +1216,7 @@ function getSerilizedServerOptions(options) {
1220
1216
  'reaction-component-margin-size-unit': options.reactionComponentMarginSizeUnit
1221
1217
  };
1222
1218
  if (options.imageResolution === '600') {
1223
- newOptions = _objectSpread$1u(_objectSpread$1u({}, newOptions), {}, {
1219
+ newOptions = _objectSpread$1v(_objectSpread$1v({}, newOptions), {}, {
1224
1220
  'render-output-sheet-width': 11,
1225
1221
  'render-output-sheet-height': 8.5
1226
1222
  });
@@ -1298,29 +1294,29 @@ function optionsReducer() {
1298
1294
  var action = arguments.length > 1 ? arguments[1] : undefined;
1299
1295
  var type = action.type,
1300
1296
  data = action.data;
1301
- if (type === 'APP_OPTIONS') return _objectSpread$1u(_objectSpread$1u({}, state), {}, {
1302
- app: _objectSpread$1u(_objectSpread$1u({}, state.app), data)
1297
+ if (type === 'APP_OPTIONS') return _objectSpread$1v(_objectSpread$1v({}, state), {}, {
1298
+ app: _objectSpread$1v(_objectSpread$1v({}, state.app), data)
1303
1299
  });
1304
1300
  if (type === 'SAVE_SETTINGS') {
1305
- return _objectSpread$1u(_objectSpread$1u({}, state), {}, {
1306
- settings: _objectSpread$1u(_objectSpread$1u({}, state.settings), data)
1301
+ return _objectSpread$1v(_objectSpread$1v({}, state), {}, {
1302
+ settings: _objectSpread$1v(_objectSpread$1v({}, state.settings), data)
1307
1303
  });
1308
1304
  }
1309
- if (type === 'SAVE_CHECK_OPTS') return _objectSpread$1u(_objectSpread$1u({}, state), {}, {
1305
+ if (type === 'SAVE_CHECK_OPTS') return _objectSpread$1v(_objectSpread$1v({}, state), {}, {
1310
1306
  check: data
1311
1307
  });
1312
- if (type === 'CHANGE_ANALYSE') return _objectSpread$1u(_objectSpread$1u({}, state), {}, {
1313
- analyse: _objectSpread$1u(_objectSpread$1u(_objectSpread$1u({}, state.analyse), data), {}, {
1308
+ if (type === 'CHANGE_ANALYSE') return _objectSpread$1v(_objectSpread$1v({}, state), {}, {
1309
+ analyse: _objectSpread$1v(_objectSpread$1v(_objectSpread$1v({}, state.analyse), data), {}, {
1314
1310
  loading: false
1315
1311
  })
1316
1312
  });
1317
- if (type === 'ANALYSE_LOADING') return _objectSpread$1u(_objectSpread$1u({}, state), {}, {
1318
- analyse: _objectSpread$1u(_objectSpread$1u({}, state.analyse), {}, {
1313
+ if (type === 'ANALYSE_LOADING') return _objectSpread$1v(_objectSpread$1v({}, state), {}, {
1314
+ analyse: _objectSpread$1v(_objectSpread$1v({}, state.analyse), {}, {
1319
1315
  loading: true
1320
1316
  })
1321
1317
  });
1322
- if (recognizeActions.includes(type)) return _objectSpread$1u(_objectSpread$1u({}, state), {}, {
1323
- recognize: _objectSpread$1u(_objectSpread$1u({}, state.recognize), data)
1318
+ if (recognizeActions.includes(type)) return _objectSpread$1v(_objectSpread$1v({}, state), {}, {
1319
+ recognize: _objectSpread$1v(_objectSpread$1v({}, state.recognize), data)
1324
1320
  });
1325
1321
  return state;
1326
1322
  }
@@ -1624,8 +1620,8 @@ function getSdataDefault() {
1624
1620
  return schema[context][fieldName] ? schema[context][fieldName].properties.fieldValue["default"] : '';
1625
1621
  }
1626
1622
 
1627
- function ownKeys$1t(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1628
- function _objectSpread$1t(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1t(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1t(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1623
+ function ownKeys$1u(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1624
+ function _objectSpread$1u(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1u(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1u(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1629
1625
  var initSdata = function initSdata(schema) {
1630
1626
  var isCustomShema = schema.key === 'Custom';
1631
1627
  var context = isCustomShema ? getSdataDefault(sdataCustomSchema, 'context') : getSdataDefault(sdataSchema);
@@ -1663,7 +1659,7 @@ var onContextChange = function onContextChange(state, payload) {
1663
1659
  var fValue = fieldValue;
1664
1660
  if (fValue === state.result.fieldValue) fValue = getSdataDefault(sdataCustomSchema, 'fieldValue');
1665
1661
  return {
1666
- result: _objectSpread$1t(_objectSpread$1t({}, payload), {}, {
1662
+ result: _objectSpread$1u(_objectSpread$1u({}, payload), {}, {
1667
1663
  context: context,
1668
1664
  fieldName: fieldName,
1669
1665
  fieldValue: fValue
@@ -1677,7 +1673,7 @@ var onFieldNameChange = function onFieldNameChange(state, payload) {
1677
1673
  if (sdataSchema[context][fieldName]) fieldValue = getSdataDefault(sdataSchema, context, fieldName);
1678
1674
  if (fieldValue === state.result.fieldValue && sdataSchema[context][state.result.fieldName]) fieldValue = '';
1679
1675
  return {
1680
- result: _objectSpread$1t(_objectSpread$1t({}, payload), {}, {
1676
+ result: _objectSpread$1u(_objectSpread$1u({}, payload), {}, {
1681
1677
  fieldName: fieldName,
1682
1678
  fieldValue: fieldValue
1683
1679
  })
@@ -1685,7 +1681,7 @@ var onFieldNameChange = function onFieldNameChange(state, payload) {
1685
1681
  };
1686
1682
  function sdataReducer(state, action) {
1687
1683
  if (action.data.result.init) {
1688
- return correctErrors(_objectSpread$1t(_objectSpread$1t({}, state), {}, {
1684
+ return correctErrors(_objectSpread$1u(_objectSpread$1u({}, state), {}, {
1689
1685
  result: Object.assign({}, state.result, action.data.result)
1690
1686
  }), action.data);
1691
1687
  }
@@ -1693,7 +1689,7 @@ function sdataReducer(state, action) {
1693
1689
  var actionFieldName = action.data.result.fieldName;
1694
1690
  var newstate = null;
1695
1691
  if (actionContext !== state.result.context) newstate = onContextChange(state, action.data.result);else if (actionFieldName !== state.result.fieldName) newstate = onFieldNameChange(state, action.data.result);
1696
- newstate = newstate || _objectSpread$1t(_objectSpread$1t({}, state), {}, {
1692
+ newstate = newstate || _objectSpread$1u(_objectSpread$1u({}, state), {}, {
1697
1693
  result: Object.assign({}, state.result, action.data.result)
1698
1694
  });
1699
1695
  return correctErrors(newstate, action.data);
@@ -1833,8 +1829,8 @@ function formReducer(state, action) {
1833
1829
  var INDIGO_VERIFICATION = 'INDIGO_VERIFICATION';
1834
1830
  var ANALYZING_FILE = 'ANALYZING_FILE';
1835
1831
 
1836
- function ownKeys$1s(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1837
- function _objectSpread$1s(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1s(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1s(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1832
+ function ownKeys$1t(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1833
+ function _objectSpread$1t(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1t(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1t(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1838
1834
  function indigoVerification(data) {
1839
1835
  return {
1840
1836
  type: INDIGO_VERIFICATION,
@@ -1859,13 +1855,13 @@ function requestReducer () {
1859
1855
  switch (type) {
1860
1856
  case INDIGO_VERIFICATION:
1861
1857
  {
1862
- return _objectSpread$1s(_objectSpread$1s({}, state), {}, {
1858
+ return _objectSpread$1t(_objectSpread$1t({}, state), {}, {
1863
1859
  indigoVerification: data
1864
1860
  });
1865
1861
  }
1866
1862
  case ANALYZING_FILE:
1867
1863
  {
1868
- return _objectSpread$1s(_objectSpread$1s({}, state), {}, {
1864
+ return _objectSpread$1t(_objectSpread$1t({}, state), {}, {
1869
1865
  isAnalyzingFile: data
1870
1866
  });
1871
1867
  }
@@ -1883,8 +1879,8 @@ var supportedSGroupTypes = {
1883
1879
  queryComponent: 'queryComponent'
1884
1880
  };
1885
1881
 
1886
- function ownKeys$1r(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1887
- function _objectSpread$1r(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1r(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1r(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1882
+ function ownKeys$1s(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
1883
+ function _objectSpread$1s(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1s(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1s(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
1888
1884
  var atom = {
1889
1885
  title: 'Atom',
1890
1886
  type: 'object',
@@ -2116,7 +2112,7 @@ var sgroup = {
2116
2112
  title: 'SGroup',
2117
2113
  type: 'object',
2118
2114
  required: ['type'],
2119
- oneOf: [_objectSpread$1r({}, sdataCustomSchema), {
2115
+ oneOf: [_objectSpread$1s({}, sdataCustomSchema), {
2120
2116
  key: 'MUL',
2121
2117
  title: 'Multiple group',
2122
2118
  type: 'object',
@@ -2228,12 +2224,12 @@ function matchCharge(charge) {
2228
2224
 
2229
2225
  var _excluded$B = ["aromaticity", "ringMembership", "ringSize", "connectivity", "chirality", "customQuery"],
2230
2226
  _excluded2$7 = ["type", "radiobuttons"];
2231
- function ownKeys$1q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2232
- function _objectSpread$1q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1q(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2227
+ function ownKeys$1r(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2228
+ function _objectSpread$1r(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1r(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1r(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2233
2229
  var DefaultStereoGroupNumber = 1;
2234
2230
  function fromElement(selem) {
2235
2231
  if (selem.label === 'R#') {
2236
- return _objectSpread$1q({
2232
+ return _objectSpread$1r({
2237
2233
  type: 'rlabel',
2238
2234
  values: fromRlabel(selem.rglabel)
2239
2235
  }, selem);
@@ -2489,7 +2485,7 @@ function fromBond(sbond) {
2489
2485
  }
2490
2486
  function toBond(bond) {
2491
2487
  var isCustomQuery = bond.customQuery !== '';
2492
- return _objectSpread$1q({
2488
+ return _objectSpread$1r({
2493
2489
  topology: bond.topology,
2494
2490
  reactingCenterStatus: bond.center,
2495
2491
  customQuery: !isCustomQuery ? null : bond.customQuery
@@ -2585,7 +2581,7 @@ function toSgroup(sgroup) {
2585
2581
  var type = sgroup.type,
2586
2582
  radiobuttons = sgroup.radiobuttons,
2587
2583
  props = _objectWithoutProperties(sgroup, _excluded2$7);
2588
- var attrs = _objectSpread$1q({}, props);
2584
+ var attrs = _objectSpread$1r({}, props);
2589
2585
  var absolute = 'absolute';
2590
2586
  var attached = 'attached';
2591
2587
  switch (radiobuttons) {
@@ -3157,8 +3153,8 @@ var tools = typeSchema$1["enum"].reduce(function (res, type, i) {
3157
3153
 
3158
3154
  var _excluded$A = ["rescale", "fragment"],
3159
3155
  _excluded2$6 = ["isPaste", "method"];
3160
- function ownKeys$1p(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3161
- function _objectSpread$1p(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1p(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1p(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3156
+ function ownKeys$1q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3157
+ function _objectSpread$1q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1q(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3162
3158
  function onAction(action) {
3163
3159
  if (action && action.dialog) {
3164
3160
  return {
@@ -3229,7 +3225,7 @@ function load(struct, options) {
3229
3225
  errorHandler = editor.errorHandler;
3230
3226
  options = options || {};
3231
3227
  _options2 = options, isPaste = _options2.isPaste, method = _options2.method, otherOptions = _objectWithoutProperties(_options2, _excluded2$6);
3232
- otherOptions = _objectSpread$1p(_objectSpread$1p({}, serverSettings), otherOptions);
3228
+ otherOptions = _objectSpread$1q(_objectSpread$1q({}, serverSettings), otherOptions);
3233
3229
  dispatch(setAnalyzingFile(true));
3234
3230
  _context.prev = 9;
3235
3231
  _context.next = 12;
@@ -3344,8 +3340,8 @@ function openInfoModalWithCustomMessage(message) {
3344
3340
  };
3345
3341
  }
3346
3342
 
3347
- function ownKeys$1o(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3348
- function _objectSpread$1o(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1o(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1o(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3343
+ function ownKeys$1p(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3344
+ function _objectSpread$1p(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1p(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1p(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3349
3345
  function checkServer() {
3350
3346
  return function (dispatch, getState) {
3351
3347
  var _getState = getState(),
@@ -3486,7 +3482,7 @@ function serverCall(editor, server, method, options, struct) {
3486
3482
  resetStereoFlagsPosition(currentStruct);
3487
3483
  }
3488
3484
  var ketSerializer = new KetSerializer();
3489
- var serializedStruct = ketSerializer.serialize(currentStruct, undefined, _objectSpread$1o(_objectSpread$1o({}, selection), {}, {
3485
+ var serializedStruct = ketSerializer.serialize(currentStruct, undefined, _objectSpread$1p(_objectSpread$1p({}, selection), {}, {
3490
3486
  atoms: selectedAtoms,
3491
3487
  bonds: selectedBonds
3492
3488
  }));
@@ -3745,7 +3741,7 @@ var zoom = {
3745
3741
 
3746
3742
  var openHelpLink = function openHelpLink() {
3747
3743
  var _window$open;
3748
- return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v3.5.0-rc.2\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
3744
+ return (_window$open = window.open("https://github.com/epam/ketcher/blob/".concat("v3.5.0-rc.4\n", "/documentation/help.md#ketcher-overview"))) === null || _window$open === void 0 ? void 0 : _window$open.focus();
3749
3745
  };
3750
3746
  var help = {
3751
3747
  help: {
@@ -3845,8 +3841,8 @@ var fullscreen = {
3845
3841
  }
3846
3842
  };
3847
3843
 
3848
- function ownKeys$1n(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3849
- function _objectSpread$1n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1n(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3844
+ function ownKeys$1o(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3845
+ function _objectSpread$1o(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1o(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1o(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3850
3846
  var disableIfViewOnly = function disableIfViewOnly(editor) {
3851
3847
  return !!editor.render.options.viewOnlyMode;
3852
3848
  };
@@ -3855,13 +3851,13 @@ var updateConfigItem = function updateConfigItem(item) {
3855
3851
  return item;
3856
3852
  } else if (typeof item.disabled === 'function') {
3857
3853
  var originalDisabled = item.disabled;
3858
- return _objectSpread$1n(_objectSpread$1n({}, item), {}, {
3854
+ return _objectSpread$1o(_objectSpread$1o({}, item), {}, {
3859
3855
  disabled: function disabled() {
3860
3856
  return disableIfViewOnly(arguments.length <= 0 ? undefined : arguments[0]) || originalDisabled.apply(void 0, arguments);
3861
3857
  }
3862
3858
  });
3863
3859
  } else {
3864
- return _objectSpread$1n(_objectSpread$1n({}, item), {}, {
3860
+ return _objectSpread$1o(_objectSpread$1o({}, item), {}, {
3865
3861
  disabled: disableIfViewOnly
3866
3862
  });
3867
3863
  }
@@ -3924,8 +3920,11 @@ var config = {
3924
3920
  undo: {
3925
3921
  shortcut: 'Mod+z',
3926
3922
  title: 'Undo',
3927
- action: function action(editor) {
3928
- editor.undo();
3923
+ action: {
3924
+ thunk: function thunk(_, getState) {
3925
+ var editor = getState().editor;
3926
+ editor.undo();
3927
+ }
3929
3928
  },
3930
3929
  disabled: function disabled(editor) {
3931
3930
  return editor.historySize().undo === 0;
@@ -3937,8 +3936,11 @@ var config = {
3937
3936
  redo: {
3938
3937
  shortcut: ['Mod+Shift+z', 'Mod+y'],
3939
3938
  title: 'Redo',
3940
- action: function action(editor) {
3941
- editor.redo();
3939
+ action: {
3940
+ thunk: function thunk(_, getState) {
3941
+ var editor = getState().editor;
3942
+ editor.redo();
3943
+ }
3942
3944
  },
3943
3945
  disabled: function disabled(editor) {
3944
3946
  return editor.historySize().redo === 0;
@@ -4177,11 +4179,11 @@ var config = {
4177
4179
  }
4178
4180
  }
4179
4181
  };
4180
- var configWithNonViewOnlyActionsDisabled = Object.entries(_objectSpread$1n(_objectSpread$1n(_objectSpread$1n(_objectSpread$1n(_objectSpread$1n(_objectSpread$1n(_objectSpread$1n(_objectSpread$1n(_objectSpread$1n(_objectSpread$1n({}, config), config$1), debugObj), tools), atoms), zoom), templates), functionalGroupsLib), fullscreen), help)).reduce(function (acc, _ref2) {
4182
+ var configWithNonViewOnlyActionsDisabled = Object.entries(_objectSpread$1o(_objectSpread$1o(_objectSpread$1o(_objectSpread$1o(_objectSpread$1o(_objectSpread$1o(_objectSpread$1o(_objectSpread$1o(_objectSpread$1o(_objectSpread$1o({}, config), config$1), debugObj), tools), atoms), zoom), templates), functionalGroupsLib), fullscreen), help)).reduce(function (acc, _ref2) {
4181
4183
  var _ref3 = _slicedToArray$1(_ref2, 2),
4182
4184
  key = _ref3[0],
4183
4185
  item = _ref3[1];
4184
- return _objectSpread$1n(_objectSpread$1n({}, acc), {}, _defineProperty$1({}, key, updateConfigItem(item)));
4186
+ return _objectSpread$1o(_objectSpread$1o({}, acc), {}, _defineProperty$1({}, key, updateConfigItem(item)));
4185
4187
  }, {});
4186
4188
  function hasSelection(editor) {
4187
4189
  var selection = editor.selection();
@@ -8196,12 +8198,12 @@ var IconButtonBase = function IconButtonBase(_ref) {
8196
8198
  };
8197
8199
 
8198
8200
  var _excluded$z = ["iconName"];
8199
- function ownKeys$1m(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8200
- function _objectSpread$1m(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1m(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1m(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8201
+ function ownKeys$1n(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8202
+ function _objectSpread$1n(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1n(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1n(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8201
8203
  var IconButton = function IconButton(_ref) {
8202
8204
  var iconName = _ref.iconName,
8203
8205
  props = _objectWithoutProperties(_ref, _excluded$z);
8204
- return jsx(IconButtonBase, _objectSpread$1m(_objectSpread$1m({}, props), {}, {
8206
+ return jsx(IconButtonBase, _objectSpread$1n(_objectSpread$1n({}, props), {}, {
8205
8207
  children: jsx(StyledIcon$1, {
8206
8208
  name: iconName
8207
8209
  })
@@ -8209,12 +8211,12 @@ var IconButton = function IconButton(_ref) {
8209
8211
  };
8210
8212
 
8211
8213
  var _excluded$y = ["link"];
8212
- function ownKeys$1l(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8213
- function _objectSpread$1l(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1l(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1l(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8214
+ function ownKeys$1m(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8215
+ function _objectSpread$1m(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1m(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1m(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8214
8216
  var IconButtonCustomIcon = function IconButtonCustomIcon(_ref) {
8215
8217
  var link = _ref.link,
8216
8218
  props = _objectWithoutProperties(_ref, _excluded$y);
8217
- return jsx(IconButtonBase, _objectSpread$1l(_objectSpread$1l({}, props), {}, {
8219
+ return jsx(IconButtonBase, _objectSpread$1m(_objectSpread$1m({}, props), {}, {
8218
8220
  children: jsx(StyledCustomIcon, {
8219
8221
  src: link,
8220
8222
  alt: props.title
@@ -8245,12 +8247,12 @@ var StyledButton = styled.button({
8245
8247
  });
8246
8248
 
8247
8249
  var _excluded$x = ["children"];
8248
- function ownKeys$1k(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8249
- function _objectSpread$1k(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1k(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1k(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8250
+ function ownKeys$1l(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8251
+ function _objectSpread$1l(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1l(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1l(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8250
8252
  var Button = function Button(_ref) {
8251
8253
  var children = _ref.children,
8252
8254
  props = _objectWithoutProperties(_ref, _excluded$x);
8253
- return jsx(StyledButton, _objectSpread$1k(_objectSpread$1k({}, props), {}, {
8255
+ return jsx(StyledButton, _objectSpread$1l(_objectSpread$1l({}, props), {}, {
8254
8256
  children: children
8255
8257
  }));
8256
8258
  };
@@ -8317,10 +8319,10 @@ var StyledInput$1 = styled.input({
8317
8319
  }
8318
8320
  });
8319
8321
 
8320
- function ownKeys$1j(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8321
- function _objectSpread$1j(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1j(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1j(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8322
+ function ownKeys$1k(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8323
+ function _objectSpread$1k(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1k(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1k(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8322
8324
  var Input$2 = function Input(props) {
8323
- return jsx(StyledInput$1, _objectSpread$1j({}, props));
8325
+ return jsx(StyledInput$1, _objectSpread$1k({}, props));
8324
8326
  };
8325
8327
 
8326
8328
  var Container$1 = styled.div({
@@ -8404,8 +8406,8 @@ var InfoModal$1 = function InfoModal(_ref) {
8404
8406
  var styles$h = {"button-common-styles":"Dialog-module_button-common-styles__Xehyp","scrollbar":"Dialog-module_scrollbar__L8hUr","dialog":"Dialog-module_dialog__hiRBI","hide":"Dialog-module_hide__bbkvB","header":"Dialog-module_header__8QGek","btnContainer":"Dialog-module_btnContainer__ulrFM","buttonTop":"Dialog-module_buttonTop__91ha8","closeButton":"Dialog-module_closeButton__XyaAE","footer":"Dialog-module_footer__PliV0","ok":"Dialog-module_ok__BUQ6q","cancel":"Dialog-module_cancel__8d83c","withDivider":"Dialog-module_withDivider__YBKiQ","body":"Dialog-module_body__EWh4H","withMargin":"Dialog-module_withMargin__-zVS4"};
8405
8407
 
8406
8408
  var _excluded$w = ["children", "title", "params", "result", "valid", "buttons", "headerContent", "footerContent", "className", "buttonsNameMap", "needMargin", "withDivider", "focusable"];
8407
- function ownKeys$1i(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8408
- function _objectSpread$1i(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1i(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1i(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8409
+ function ownKeys$1j(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
8410
+ function _objectSpread$1j(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1j(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1j(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
8409
8411
  var Dialog = function Dialog(props) {
8410
8412
  var children = props.children,
8411
8413
  title = props.title,
@@ -8460,7 +8462,7 @@ var Dialog = function Dialog(props) {
8460
8462
  event.stopPropagation();
8461
8463
  }
8462
8464
  };
8463
- return jsxs("div", _objectSpread$1i(_objectSpread$1i({
8465
+ return jsxs("div", _objectSpread$1j(_objectSpread$1j({
8464
8466
  ref: dialogRef,
8465
8467
  role: "dialog",
8466
8468
  onSubmit: function onSubmit(event) {
@@ -11034,8 +11036,8 @@ var errors = {
11034
11036
  codes: codes_1
11035
11037
  };
11036
11038
 
11037
- function ownKeys$1h(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11038
- function _objectSpread$1h(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1h(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1h(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11039
+ function ownKeys$1i(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
11040
+ function _objectSpread$1i(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1i(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1i(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
11039
11041
  function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
11040
11042
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
11041
11043
  function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
@@ -11463,7 +11465,7 @@ var AssertionError = /*#__PURE__*/function (_Error, _inspect$custom) {
11463
11465
  // the minimum depth. Otherwise those values would be too verbose compared
11464
11466
  // to the actual error message which contains a combined view of these two
11465
11467
  // input values.
11466
- return inspect(this, _objectSpread$1h(_objectSpread$1h({}, ctx), {}, {
11468
+ return inspect(this, _objectSpread$1i(_objectSpread$1i({}, ctx), {}, {
11467
11469
  customInspect: false,
11468
11470
  depth: 0
11469
11471
  }));
@@ -13355,8 +13357,8 @@ function usePortalStyle(_ref) {
13355
13357
  return [portalStyle];
13356
13358
  }
13357
13359
 
13358
- function ownKeys$1g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13359
- function _objectSpread$1g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1g(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13360
+ function ownKeys$1h(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13361
+ function _objectSpread$1h(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1h(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1h(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13360
13362
  var ToolbarMultiToolItem = function ToolbarMultiToolItem(props) {
13361
13363
  var id = props.id,
13362
13364
  options = props.options,
@@ -13431,7 +13433,7 @@ var ToolbarMultiToolItem = function ToolbarMultiToolItem(props) {
13431
13433
  ref: ref,
13432
13434
  className: classes$N.root,
13433
13435
  "data-testid": "".concat(id, "-drop-down-button"),
13434
- children: [jsx(ActionButton, _objectSpread$1g(_objectSpread$1g({}, actionButtonProps), {}, {
13436
+ children: [jsx(ActionButton, _objectSpread$1h(_objectSpread$1h({}, actionButtonProps), {}, {
13435
13437
  className: className,
13436
13438
  name: iconName,
13437
13439
  action: configWithNonViewOnlyActionsDisabled[currentId],
@@ -13540,8 +13542,8 @@ var TemplatesList = function TemplatesList(props) {
13540
13542
  var classes$M = {"button-common-styles":"BottomToolbar-module_button-common-styles__PbtE9","scrollbar":"BottomToolbar-module_scrollbar__i1f8P","group":"BottomToolbar-module_group__b-pGt","root":"BottomToolbar-module_root__kjkSm"};
13541
13543
 
13542
13544
  var _excluded$v = ["className"];
13543
- function ownKeys$1f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13544
- function _objectSpread$1f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1f(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13545
+ function ownKeys$1g(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13546
+ function _objectSpread$1g(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1g(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1g(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13545
13547
  var Group$1 = function Group(_ref) {
13546
13548
  var children = _ref.children,
13547
13549
  className = _ref.className;
@@ -13557,22 +13559,22 @@ var BottomToolbar = function BottomToolbar(props) {
13557
13559
  "data-testid": "bottom-toolbar",
13558
13560
  className: clsx(classes$M.root, className),
13559
13561
  children: jsxs(Group$1, {
13560
- children: [jsx(TemplatesList, _objectSpread$1f({}, rest)), jsx(ToolbarGroupItem, _objectSpread$1f({
13562
+ children: [jsx(TemplatesList, _objectSpread$1g({}, rest)), jsx(ToolbarGroupItem, _objectSpread$1g({
13561
13563
  id: "template-lib"
13562
13564
  }, rest))]
13563
13565
  })
13564
13566
  });
13565
13567
  };
13566
13568
 
13567
- function ownKeys$1e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13568
- function _objectSpread$1e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1e(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13569
+ function ownKeys$1f(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13570
+ function _objectSpread$1f(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1f(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1f(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13569
13571
  function openDialog(dispatch, dialogName, props) {
13570
13572
  return new Promise(function (resolve, reject) {
13571
13573
  dispatch({
13572
13574
  type: 'MODAL_OPEN',
13573
13575
  data: {
13574
13576
  name: dialogName,
13575
- prop: _objectSpread$1e(_objectSpread$1e({}, props), {}, {
13577
+ prop: _objectSpread$1f(_objectSpread$1f({}, props), {}, {
13576
13578
  onResult: resolve,
13577
13579
  onCancel: reject
13578
13580
  })
@@ -13591,14 +13593,14 @@ function modalReducer() {
13591
13593
  return null;
13592
13594
  }
13593
13595
  var formState = formReducer(state.form, action);
13594
- return _objectSpread$1e(_objectSpread$1e({}, state), {}, {
13596
+ return _objectSpread$1f(_objectSpread$1f({}, state), {}, {
13595
13597
  form: formState
13596
13598
  });
13597
13599
  }
13598
13600
  switch (type) {
13599
13601
  case 'MODAL_CLOSE':
13600
13602
  if (state !== null && state !== void 0 && state.parentModal) {
13601
- state.parentModal.prop = _objectSpread$1e(_objectSpread$1e(_objectSpread$1e({}, state.parentModal.prop), state.parentModal.form.result), {}, {
13603
+ state.parentModal.prop = _objectSpread$1f(_objectSpread$1f(_objectSpread$1f({}, state.parentModal.prop), state.parentModal.form.result), {}, {
13602
13604
  isRestoredModal: true
13603
13605
  });
13604
13606
  return state.parentModal;
@@ -13616,8 +13618,8 @@ function modalReducer() {
13616
13618
  }
13617
13619
  }
13618
13620
 
13619
- function ownKeys$1d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13620
- function _objectSpread$1d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1d(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13621
+ function ownKeys$1e(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13622
+ function _objectSpread$1e(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1e(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1e(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13621
13623
  function selectTmpl(tmpl) {
13622
13624
  return {
13623
13625
  type: 'TMPL_SELECT',
@@ -13725,7 +13727,7 @@ function saveUserTmpl(struct) {
13725
13727
  var name = _ref.name,
13726
13728
  attach = _ref.attach;
13727
13729
  tmpl.struct.name = name.trim();
13728
- tmpl.props = _objectSpread$1d(_objectSpread$1d({}, attach), {}, {
13730
+ tmpl.props = _objectSpread$1e(_objectSpread$1e({}, attach), {}, {
13729
13731
  group: 'User Templates'
13730
13732
  });
13731
13733
  var lib = getState().templates.lib.concat(tmpl);
@@ -13765,7 +13767,7 @@ function templatesReducer() {
13765
13767
  if (tmplActions.includes(action.type)) return Object.assign({}, state, action.data);
13766
13768
  if (attachActions.includes(action.type)) {
13767
13769
  var attach = Object.assign({}, state.attach, action.data);
13768
- return _objectSpread$1d(_objectSpread$1d({}, state), {}, {
13770
+ return _objectSpread$1e(_objectSpread$1e({}, state), {}, {
13769
13771
  attach: attach
13770
13772
  });
13771
13773
  }
@@ -13774,7 +13776,7 @@ function templatesReducer() {
13774
13776
  var lib = currentState.lib.filter(function (value) {
13775
13777
  return value !== action.data.tmpl;
13776
13778
  });
13777
- return _objectSpread$1d(_objectSpread$1d({}, currentState), {}, {
13779
+ return _objectSpread$1e(_objectSpread$1e({}, currentState), {}, {
13778
13780
  lib: lib
13779
13781
  });
13780
13782
  }
@@ -13836,8 +13838,8 @@ function abbreviationLookupReducer() {
13836
13838
  }
13837
13839
  }
13838
13840
 
13839
- function ownKeys$1c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13840
- function _objectSpread$1c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1c(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13841
+ function ownKeys$1d(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13842
+ function _objectSpread$1d(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1d(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1d(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13841
13843
  var initialState$3 = {
13842
13844
  cursorPosition: {
13843
13845
  x: 0,
@@ -13862,7 +13864,7 @@ function commonReducer() {
13862
13864
  switch (action.type) {
13863
13865
  case COMMON_ACTIONS.COMMON_UPDATE_CURSOR_POSITION:
13864
13866
  {
13865
- return _objectSpread$1c(_objectSpread$1c({}, state), {}, {
13867
+ return _objectSpread$1d(_objectSpread$1d({}, state), {}, {
13866
13868
  cursorPosition: {
13867
13869
  x: action.data.x,
13868
13870
  y: action.data.y
@@ -13875,8 +13877,8 @@ function commonReducer() {
13875
13877
  }
13876
13878
 
13877
13879
  var _excluded$u = ["type", "action"];
13878
- function ownKeys$1b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13879
- function _objectSpread$1b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1b(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13880
+ function ownKeys$1c(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
13881
+ function _objectSpread$1c(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1c(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1c(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
13880
13882
  function execute(activeTool, _ref) {
13881
13883
  var action = _ref.action,
13882
13884
  editor = _ref.editor,
@@ -13934,7 +13936,7 @@ function actionStateReducer () {
13934
13936
  }
13935
13937
  case 'ACTION':
13936
13938
  {
13937
- activeTool = execute(state && state.activeTool, _objectSpread$1b(_objectSpread$1b({}, params), {}, {
13939
+ activeTool = execute(state && state.activeTool, _objectSpread$1c(_objectSpread$1c({}, params), {}, {
13938
13940
  action: action
13939
13941
  }));
13940
13942
  if (activeTool.tool === 'select') {
@@ -14230,8 +14232,8 @@ function setFunctionalGroupsTooltip(_ref) {
14230
14232
  showTooltip(editor, infoPanelData);
14231
14233
  }
14232
14234
 
14233
- function ownKeys$1a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14234
- function _objectSpread$1a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1a(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14235
+ function ownKeys$1b(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14236
+ function _objectSpread$1b(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1b(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1b(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14235
14237
  var initialState$2 = {
14236
14238
  lib: [],
14237
14239
  functionalGroupInfo: null,
@@ -14244,9 +14246,9 @@ var functionalGroupsReducer = function functionalGroupsReducer() {
14244
14246
  payload = _ref.payload;
14245
14247
  switch (type) {
14246
14248
  case 'FG_INIT':
14247
- return _objectSpread$1a(_objectSpread$1a({}, state), payload);
14249
+ return _objectSpread$1b(_objectSpread$1b({}, state), payload);
14248
14250
  case 'FG_HIGHLIGHT':
14249
- return _objectSpread$1a(_objectSpread$1a({}, state), {}, {
14251
+ return _objectSpread$1b(_objectSpread$1b({}, state), {}, {
14250
14252
  functionalGroupInfo: payload
14251
14253
  });
14252
14254
  default:
@@ -14304,8 +14306,8 @@ function initFGTemplates() {
14304
14306
 
14305
14307
  var templatesRawData = "acetic acid\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 acetic acid\nM END\n> <name>\nacetic acid\n\n> <abbreviation>\nacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\nacetic anhydride\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1123 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1124 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4114 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 acetic anhydride\nM END\n> <name>\nacetic anhydride\n\n> <abbreviation>\nacetic anhydride\n\n> <group>\nSalts and Solvents\n\n$$$$\nformic acid\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 formic acid\nM END\n> <name>\nformic acid\n\n> <abbreviation>\nformic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethane sulphonic acid\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 -0.9857 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.0143 0.5143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.9857 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 2 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 methane sulphonic acid\nM END\n> <name>\nmethane sulphonic acid\n\n> <abbreviation>\nmethane sulphonic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\npropionic acid\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.5143 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7848 -0.2357 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8133 -0.2357 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5143 2.0143 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0838 0.5143 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 propionic acid\nM END\n> <name>\npropionic acid\n\n> <abbreviation>\npropionic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-propanediol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n -3.3587 -3.5057 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0597 -2.7557 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0596 -1.2558 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7606 -3.5057 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5384 -2.7557 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 1,2-propanediol\nM END\n> <name>\n1,2-propanediol\n\n> <abbreviation>\n1,2-propanediol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,3-propanediol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 15.0779 -8.5508 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.3769 -9.3007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.6759 -8.5507 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 18.9750 -9.3007 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 20.2740 -8.5507 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 1,3-propanediol\nM END\n> <name>\n1,3-propanediol\n\n> <abbreviation>\n1,3-propanediol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,4-butanediol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -0.3480 1.2991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9509 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2500 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8481 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1472 2.0491 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 1,4-butanediol\nM END\n> <name>\n1,4-butanediol\n\n> <abbreviation>\n1,4-butanediol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1-butanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 1.0786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 1-butanol\nM END\n> <name>\n1-butanol\n\n> <abbreviation>\n1-butanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1-propanol\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 1-propanol\nM END\n> <name>\n1-propanol\n\n> <abbreviation>\n1-propanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-butanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.1714 2.7286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 2-butanol\nM END\n> <name>\n2-butanol\n\n> <abbreviation>\n2-butanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-ethylhexanol\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n 10.7337 0.4167 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1355 0.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8365 -0.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5375 0.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1355 1.9167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.4345 -0.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2384 -0.3333 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.4345 2.6667 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9394 0.4167 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 6 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 5 1 0 0 0 0\n 2 6 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 7 1 0 0 0 0\n 5 8 1 0 0 0 0\n 7 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 2-ethylhexanol\nM END\n> <name>\n2-ethylhexanol\n\n> <abbreviation>\n2-ethylhexanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nisopropanol\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.1714 2.7286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 2-propanol\nM END\n> <name>\nisopropanol\n\n> <abbreviation>\n2-propanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-methoxyethanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 1.0786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 0.3286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 2-methoxyethanol\nM END\n> <name>\n2-methoxyethanol\n\n> <abbreviation>\n2-methoxyethanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-pentanol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -5.1971 -3.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.8980 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5991 -3.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.0009 -3.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3000 -1.2500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-pentanol\nM END\n> <name>\n2-pentanol\n\n> <abbreviation>\n2-pentanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nbenzyl alcohol\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 2.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\n 7 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 benzyl alcohol\nM END\n> <name>\nbenzyl alcohol\n\n> <abbreviation>\nbenzyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclohexanol\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 4.2990 2.0175 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 0.5175 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.2325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -0.2325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.7325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -1.7325 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -2.4825 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 cyclohexanol\nM END\n> <name>\ncyclohexanol\n\n> <abbreviation>\ncyclohexanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nethanol\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 ethyl alcohol\nM END\n> <name>\nethanol\n\n> <abbreviation>\nethyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\nethylene glycol\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7256 0.4786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 ethane-1,2-diol\nM END\n> <name>\nethylene glycol\n\n> <abbreviation>\nethane-1,2-diol\n\n> <group>\nSalts and Solvents\n\n$$$$\nglycerol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.9915 2.6580 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2906 1.9080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5896 2.6580 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5897 4.1580 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8887 1.9080 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1878 2.6580 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 glycerol\nM END\n> <name>\nglycerol\n\n> <abbreviation>\nglycerol\n\n> <group>\nSalts and Solvents\n\n$$$$\nisoamyl alcohol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.1714 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4705 1.0786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 0.3286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 1.0786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 -1.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 isoamyl alcohol\nM END\n> <name>\nisoamyl alcohol\n\n> <abbreviation>\nisoamyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\nisobutanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1714 1.2286 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1276 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 1.2286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7257 0.4786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.4266 2.7286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 isobutanol\nM END\n> <name>\nisobutanol\n\n> <abbreviation>\nisobutanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethanol\n -INDIGO-11302219142D\n\n 2 1 0 0 0 0 0 0 0 0999 V2000\n 0.0709 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5710 0.8536 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 methyl alcohol\nM END\n> <name>\nmethanol\n\n> <abbreviation>\nmethyl alcohol\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-butanol\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.0709 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5710 0.8536 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.4291 0.8536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0709 2.3536 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0709 -0.6464 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 t-butanol\nM END\n> <name>\nt-butanol\n\n> <abbreviation>\nt-butanol\n\n> <group>\nSalts and Solvents\n\n$$$$\nwater\n -INDIGO-11302219142D\n\n 1 0 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.9500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 1 1\nM SMT 1 water\nM END\n> <name>\nwater\n\n> <abbreviation>\nwater\n\n> <group>\nSalts and Solvents\n\n$$$$\ncarbon dioxide\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n -1.2000 0.8500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.7000 0.8500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.3000 0.8500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 carbon dioxide\nM END\n> <name>\ncarbon dioxide\n\n> <abbreviation>\ncarbon dioxide\n\n> <group>\nSalts and Solvents\n\n$$$$\nbenzene\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 benzene\nM END\n> <name>\nbenzene\n\n> <abbreviation>\nbenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\ncumene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 4.2989 1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 -2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 2 5 2 0 0 0 0\n 2 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 6 8 2 0 0 0 0\n 7 9 2 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 cumene\nM END\n> <name>\ncumene\n\n> <abbreviation>\ncumene\n\n> <group>\nSalts and Solvents\n\n$$$$\nmesitylene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 1.2991 3.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8971 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 2 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 7 9 2 0 0 0 0\n 2 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 mesitylene\nM END\n> <name>\nmesitylene\n\n> <abbreviation>\nmesitylene\n\n> <group>\nSalts and Solvents\n\n$$$$\ntoluene\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 toluene\nM END\n> <name>\ntoluene\n\n> <abbreviation>\ntoluene\n\n> <group>\nSalts and Solvents\n\n$$$$\nn,n-dimethylaniline\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 4.2989 1.8750 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 -2.6250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 5 1 0 0 0 0\n 1 6 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 3 7 1 0 0 0 0\n 4 8 2 0 0 0 0\n 7 9 2 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 N,N-dimethylaniline\nM END\n> <name>\nn,n-dimethylaniline\n\n> <abbreviation>\nN,N-dimethylaniline\n\n> <group>\nSalts and Solvents\n\n$$$$\npyridine\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 pyridine\nM END\n> <name>\npyridine\n\n> <abbreviation>\npyridine\n\n> <group>\nSalts and Solvents\n\n$$$$\ntriethylamine\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 1.5000 0.0000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2010 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.0980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 3 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 triethylamine\nM END\n> <name>\ntriethylamine\n\n> <abbreviation>\ntriethylamine\n\n> <group>\nSalts and Solvents\n\n$$$$\nacetonitrile\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 3 0 0 0 0\n 1 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 acetonitrile\nM END\n> <name>\nacetonitrile\n\n> <abbreviation>\nacetonitrile\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl acetamide\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.7990 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 1.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0980 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2009 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 dimethyl acetamide\nM END\n> <name>\ndimethyl acetamide\n\n> <abbreviation>\ndimethyl acetamide\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl formamide\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.7990 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 1.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0980 -0.7500 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 -2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2009 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 DMF\nM END\n> <name>\ndimethyl formamide\n\n> <abbreviation>\nDMF\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl sulfoxide\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 1.5000 0.0000 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2010 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 1.5000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 DMSO\nM END\n> <name>\ndimethyl sulfoxide\n\n> <abbreviation>\nDMSO\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethylpropylene urea\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 3.4378 2.0544 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1388 1.3044 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1387 -0.1955 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8397 -0.9455 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4593 -0.1956 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4593 1.3044 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -1.7584 2.0545 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8397 2.0544 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8397 3.5545 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\n 2 8 1 0 0 0 0\n 8 9 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 dimethylpropylene urea\nM END\n> <name>\ndimethylpropylene urea\n\n> <abbreviation>\ndimethylpropylene urea\n\n> <group>\nSalts and Solvents\n\n$$$$\nformamide\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.2485 -6.0342 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5476 -5.2841 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5476 -3.7842 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8467 -6.0341 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 formamide\nM END\n> <name>\nformamide\n\n> <abbreviation>\nformamide\n\n> <group>\nSalts and Solvents\n\n$$$$\nn-methyl-2-pyrrolidone\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7500 3.8100 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.3860 1.8953 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\n 1 6 1 0 0 0 0\n 4 7 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 N-methyl-2-pyrrolidone\nM END\n> <name>\nn-methyl-2-pyrrolidone\n\n> <abbreviation>\nN-methyl-2-pyrrolidone\n\n> <group>\nSalts and Solvents\n\n$$$$\nn-methylformamide\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.1009 0.5500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4000 1.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4000 2.8000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6990 0.5500 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1981 1.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 N-methylformamide\nM END\n> <name>\nn-methylformamide\n\n> <abbreviation>\nN-methylformamide\n\n> <group>\nSalts and Solvents\n\n$$$$\npropane nitrile\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 6.8971 0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5981 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 4 3 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 propane nitrile\nM END\n> <name>\npropane nitrile\n\n> <abbreviation>\npropane nitrile\n\n> <group>\nSalts and Solvents\n\n$$$$\nsulfolane\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 3.6090 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.0673 3.5678 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\n 1 6 2 0 0 0 0\n 1 7 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 sulfolane\nM END\n> <name>\nsulfolane\n\n> <abbreviation>\nsulfolane\n\n> <group>\nSalts and Solvents\n\n$$$$\namyl acetate\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n 5.8307 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.1297 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5316 -0.3786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8307 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2326 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9335 -0.3785 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.6345 0.3715 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.6646 -0.3785 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.9636 0.3715 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 amyl acetate\nM END\n> <name>\namyl acetate\n\n> <abbreviation>\namyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nbutyl acetate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 7.5466 0.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 8.8456 2.2500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.9486 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6495 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.2476 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3505 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.8456 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.1446 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 5 1 0 0 0 0\n 1 7 1 0 0 0 0\n 2 7 2 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 7 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 butyl acetate\nM END\n> <name>\nbutyl acetate\n\n> <abbreviation>\nbutyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl carbonate\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.5429 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7562 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0552 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 dimethyl carbonate\nM END\n> <name>\ndimethyl carbonate\n\n> <abbreviation>\ndimethyl carbonate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl acetate\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.7079 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7079 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0070 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.4089 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.1099 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.1891 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 ethyl acetate\nM END\n> <name>\nethyl acetate\n\n> <abbreviation>\nethyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl formate\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 5.8087 -2.6404 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8087 -1.1506 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5094 -3.4018 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2098 -2.6486 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9103 -3.4018 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.1078 -3.3904 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 2 0 0 0 0\n 3 1 1 0 0 0 0\n 4 3 1 0 0 0 0\n 5 4 1 0 0 0 0\n 1 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 ethyl formate\nM END\n> <name>\nethyl formate\n\n> <abbreviation>\nethyl formate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl lactate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n -0.3480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9509 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2500 1.2991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 3.5491 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1471 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8480 -0.2009 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 ethyl lactate\nM END\n> <name>\nethyl lactate\n\n> <abbreviation>\nethyl lactate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethyl propionate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n -0.3480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9509 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2500 1.2991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5491 3.5491 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8480 1.2991 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1471 2.0491 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 ethyl propionate\nM END\n> <name>\nethyl propionate\n\n> <abbreviation>\nethyl propionate\n\n> <group>\nSalts and Solvents\n\n$$$$\nethylene carbonate\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 1.0323 3.5259 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0323 2.0259 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2458 1.1443 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7823 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2824 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.1813 1.1443 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 2 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 ethylene carbonate\nM END\n> <name>\nethylene carbonate\n\n> <abbreviation>\nethylene carbonate\n\n> <group>\nSalts and Solvents\n\n$$$$\nisobutyl acetate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 4.4399 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4399 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.7390 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 -2.5929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7561 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 isobutyl acetate\nM END\n> <name>\nisobutyl acetate\n\n> <abbreviation>\nisobutyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nisopropyl acetate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 3.1409 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4400 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7561 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 1.1571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 isopropyl acetate\nM END\n> <name>\nisopropyl acetate\n\n> <abbreviation>\nisopropyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl acetate\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.5429 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5429 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7562 -1.0929 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.8419 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1409 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 methyl acetate\nM END\n> <name>\nmethyl acetate\n\n> <abbreviation>\nmethyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl formate\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 1.5821 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5821 1.1571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8812 -1.0929 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2831 -1.0929 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.0159 -0.3429 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 methyl formate\nM END\n> <name>\nmethyl formate\n\n> <abbreviation>\nmethyl formate\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl lactate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 7.6971 -2.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3980 -2.8571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0991 -2.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0991 -0.6071 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8000 -2.8571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5009 -2.1071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8000 -4.3571 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 methyl lactate\nM END\n> <name>\nmethyl lactate\n\n> <abbreviation>\nmethyl lactate\n\n> <group>\nSalts and Solvents\n\n$$$$\nn-octylacetate\n -INDIGO-11302219142D\n\n 12 11 0 0 0 0 0 0 0 0999 V2000\n 7.7009 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.0000 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.2991 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.5980 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.8971 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.1962 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.4953 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.7942 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 18.0933 4.9462 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 19.3924 5.6962 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 20.6913 4.9462 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 19.3924 7.1962 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 1 0 0 0 0\n 10 11 1 0 0 0 0\n 10 12 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 4 9 10 11 12\nM SMT 1 n-octylacetate\nM END\n> <name>\nn-octylacetate\n\n> <abbreviation>\nn-octylacetate\n\n> <group>\nSalts and Solvents\n\n$$$$\npropyl acetate\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 6.3403 -0.1607 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6395 2.0893 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7423 -0.1607 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0413 0.5893 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4433 0.5893 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6395 0.5893 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.9385 -0.1607 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 4 1 0 0 0 0\n 1 6 1 0 0 0 0\n 2 6 2 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 propyl acetate\nM END\n> <name>\npropyl acetate\n\n> <abbreviation>\npropyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\npropylene carbonate\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.5661 -1.8745 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.5661 -0.3746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.6474 0.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.1839 1.9338 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3160 1.9338 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1978 3.1472 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7797 0.5071 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 5 7 1 0 0 0 0\n 2 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 propylene carbonate\nM END\n> <name>\npropylene carbonate\n\n> <abbreviation>\npropylene carbonate\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-butyl acetate\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 6.0125 -7.4927 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.7134 -6.7427 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.7134 -5.2428 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4144 -7.4928 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1153 -6.7428 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.8163 -5.9928 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3653 -8.0418 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8653 -5.4437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 5 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 t-butyl acetate\nM END\n> <name>\nt-butyl acetate\n\n> <abbreviation>\nt-butyl acetate\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-dimethoxyethane\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -0.0857 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2133 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5124 0.1714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3848 -0.5786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8114 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.6838 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 1,2-dimethoxyethane\nM END\n> <name>\n1,2-dimethoxyethane\n\n> <abbreviation>\n1,2-dimethoxyethane\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,4-dioxane\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 3.9490 -2.3000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -5.3000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 2 1 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 1,4-dioxane\nM END\n> <name>\n1,4-dioxane\n\n> <abbreviation>\n1,4-dioxane\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-methyl tetrahydrofuran\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.3860 1.8953 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-methyl tetrahydrofuran\nM END\n> <name>\n2-methyl tetrahydrofuran\n\n> <abbreviation>\n2-methyl tetrahydrofuran\n\n> <group>\nSalts and Solvents\n\n$$$$\nanisole\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 2.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\n 7 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 anisole\nM END\n> <name>\nanisole\n\n> <abbreviation>\nanisole\n\n> <group>\nSalts and Solvents\n\n$$$$\nbutyl carbitol\n -INDIGO-11302219142D\n\n 11 10 0 0 0 0 0 0 0 0999 V2000\n -0.2227 -3.0342 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0742 -3.7829 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3750 -3.0387 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6719 -3.7875 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.9782 -3.0336 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 6.2751 -3.7823 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.5758 -3.0382 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.8728 -3.7870 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 10.1792 -3.0330 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.4761 -3.7817 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.7768 -3.0376 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 1 0 0 0 0\n 10 11 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 3 9 10 11\nM SMT 1 butyl carbitol\nM END\n> <name>\nbutyl carbitol\n\n> <abbreviation>\nbutyl carbitol\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclopentyl methyl ether\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5053 1.7481 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3855 0.7467 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.4886 -0.4632 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9950 -0.6239 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 5 4 1 0 0 0 0\n 4 2 1 0 0 0 0\n 2 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 cyclopentyl methyl ether\nM END\n> <name>\ncyclopentyl methyl ether\n\n> <abbreviation>\ncyclopentyl methyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndibutyl ether\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n 5.4509 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.7500 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.0491 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.3480 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.6470 4.6471 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 11.9461 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 13.2452 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.5441 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8432 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 dibutyl ether\nM END\n> <name>\ndibutyl ether\n\n> <abbreviation>\ndibutyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiethyl ether\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 2.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 2.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5019 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.6980 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 2 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 ether\nM END\n> <name>\ndiethyl ether\n\n> <abbreviation>\nether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiethylene glycol\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 7.7875 -1.4835 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.4896 -2.2328 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1892 -1.4790 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8854 -2.2317 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5884 -1.4840 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2906 -2.2333 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 9.0845 -2.2313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 7 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 diethylene glycol\nM END\n> <name>\ndiethylene glycol\n\n> <abbreviation>\ndiethylene glycol\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiglyme\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n -0.0857 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2133 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5124 0.1714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3848 -0.5786 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8114 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.6838 0.1714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.9828 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -5.2818 0.1714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -6.5809 -0.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 diglyme\nM END\n> <name>\ndiethylene glycol dimethyl ether\n\n> <abbreviation>\ndiglyme\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiisopropyl ether\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 5.5971 2.8500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2980 3.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2980 5.1000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9991 2.8500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7000 3.6000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.4009 2.8500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7000 5.1000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 diisopropyl ether\nM END\n> <name>\ndiisopropyl ether\n\n> <abbreviation>\ndiisopropyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndimethyl ether\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 4.2989 -0.3750 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5980 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9999 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 dimethyl ether\nM END\n> <name>\ndimethyl ether\n\n> <abbreviation>\ndimethyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ndiphenyl ether\n -INDIGO-11302219142D\n\n 13 14 0 0 0 0 0 0 0 0999 V2000\n 7.1190 1.0305 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8200 0.2805 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.8200 -1.2196 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5210 -1.9696 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2219 -1.2195 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2219 0.2805 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5209 1.0305 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.4181 0.2804 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.7171 1.0304 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.0161 0.2805 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.0161 -1.2194 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.7170 -1.9694 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.4180 -1.2195 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 2 0 0 0 0\n 2 7 1 0 0 0 0\n 1 8 1 0 0 0 0\n 8 9 2 0 0 0 0\n 9 10 1 0 0 0 0\n 10 11 2 0 0 0 0\n 11 12 1 0 0 0 0\n 12 13 2 0 0 0 0\n 8 13 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 5 9 10 11 12 13\nM SMT 1 diphenyl ether\nM END\n> <name>\ndiphenyl ether\n\n> <abbreviation>\ndiphenyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nethoxybenzene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 0.0000 6.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 4.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 3.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 2 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 2 0 0 0 0\n 4 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 ethoxybenzene\nM END\n> <name>\nethoxybenzene\n\n> <abbreviation>\nethoxybenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl t-butyl ether\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 6.1000 1.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5019 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0510 2.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5510 -0.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 2 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 methyl t-butyl ether\nM END\n> <name>\nmethyl t-butyl ether\n\n> <abbreviation>\nmethyl t-butyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-amyl methyl ether\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 6.8972 0.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8482 1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3482 -1.2990 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1962 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 7 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 3 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 t-amyl methyl ether\nM END\n> <name>\nt-amyl methyl ether\n\n> <abbreviation>\nt-amyl methyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nt-butylethyl ether\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 2.3688 -7.1130 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0698 -7.8630 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2293 -7.1129 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.5283 -7.8629 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8274 -8.6129 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.2783 -6.5639 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7783 -9.1620 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 4 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 t-butylethyl ether\nM END\n> <name>\nt-butylethyl ether\n\n> <abbreviation>\nt-butylethyl ether\n\n> <group>\nSalts and Solvents\n\n$$$$\ntetrahydrofuran\n -INDIGO-11302219142D\n\n 5 5 0 0 0 0 0 0 0 0999 V2000\n 0.7500 2.3100 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.9600 1.4300 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3 2 1 0 0 0 0\n 2 1 1 0 0 0 0\n 1 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 THF\nM END\n> <name>\ntetrahydrofuran\n\n> <abbreviation>\nTHF\n\n> <group>\nSalts and Solvents\n\n$$$$\ntriethylene glycol\n -INDIGO-11302219142D\n\n 10 9 0 0 0 0 0 0 0 0999 V2000\n 4.1520 3.8971 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.4509 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.7500 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.0491 4.6471 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 9.3480 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.6471 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.9462 3.8971 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 13.2453 4.6471 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.5442 3.8971 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8433 4.6471 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 triethylene glycol\nM END\n> <name>\ntriethylene glycol\n\n> <abbreviation>\ntriethylene glycol\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2,4-trichlorobenzene\n -INDIGO-11302219142D\n\n 9 9 0 0 0 0 0 0 0 0999 V2000\n 2.2506 -3.8983 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9991 -2.5989 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2506 -1.2994 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7485 -1.2994 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -2.5989 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7485 -3.8983 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -5.1978 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 2.9991 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 6 2 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 3 9 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 8 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 1,2,4-trichlorobenzene\nM END\n> <name>\n1,2,4-trichlorobenzene\n\n> <abbreviation>\n1,2,4-trichlorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-dichlorobenzene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n 0.9558 -0.8403 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4581 -0.8408 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2048 0.4582 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.4555 1.7560 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.9571 1.7589 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2065 0.4576 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2078 3.0567 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.2060 3.0573 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 6 2 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 8 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 1,2-dichlorobenzene\nM END\n> <name>\n1,2-dichlorobenzene\n\n> <abbreviation>\n1,2-dichlorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,2-dichloroethane\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n -0.2571 0.8286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0419 1.5786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3409 0.8286 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n -1.5562 1.5786 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 1 4 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 DCE\nM END\n> <name>\n1,2-dichloroethane\n\n> <abbreviation>\nDCE\n\n> <group>\nSalts and Solvents\n\n$$$$\n2,2,2-trifluoroethanol\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.3661 -2.2500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0670 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0670 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0670 1.5000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4330 0.0000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5670 0.0000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 3 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2,2,2-trifluoroethanol\nM END\n> <name>\n2,2,2-trifluoroethanol\n\n> <abbreviation>\n2,2,2-trifluoroethanol\n\n> <group>\nSalts and Solvents\n\n$$$$\n2,3,4-trifluorotoluene\n -INDIGO-11302219142D\n\n 10 10 0 0 0 0 0 0 0 0999 V2000\n 4.0898 1.7173 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0899 1.7173 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5899 -0.8808 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0898 -0.8807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8398 0.4183 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8399 -2.1798 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3399 0.4182 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5898 -0.8807 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3399 -2.1798 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0899 -0.8808 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 5 1 0 0 0 0\n 2 7 1 0 0 0 0\n 3 10 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 4 8 1 0 0 0 0\n 5 7 1 0 0 0 0\n 6 9 2 0 0 0 0\n 7 10 2 0 0 0 0\n 9 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 2,3,4-trifluorotoluene\nM END\n> <name>\n2,3,4-trifluorotoluene\n\n> <abbreviation>\n2,3,4-trifluorotoluene\n\n> <group>\nSalts and Solvents\n\n$$$$\ncarbon tetrachloride\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -1.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6000 0.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6000 0.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 carbon tetrachloride\nM END\n> <name>\ncarbon tetrachloride\n\n> <abbreviation>\ncarbon tetrachloride\n\n> <group>\nSalts and Solvents\n\n$$$$\nchloroacetic acid\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 9.0626 -7.0246 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.0626 -5.5268 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 10.3632 -7.7759 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 6.4658 -7.0246 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.7666 -7.7759 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 2 0 0 0 0\n 3 1 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 chloroacetic acid\nM END\n> <name>\nchloroacetic acid\n\n> <abbreviation>\nchloroacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\nchlorobenzene\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 chlorobenzene\nM END\n> <name>\nchlorobenzene\n\n> <abbreviation>\nchlorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\nchloroform\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -1.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6000 0.2500 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6000 0.2500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 chloroform\nM END\n> <name>\nchloroform\n\n> <abbreviation>\nchloroform\n\n> <group>\nSalts and Solvents\n\n$$$$\ndichloromethane\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8500 1.5490 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 5.3500 1.5490 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 DCM\nM END\n> <name>\ndichloromethane\n\n> <abbreviation>\nDCM\n\n> <group>\nSalts and Solvents\n\n$$$$\nfluorobenzene\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 1.2991 3.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5980 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2991 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 2 0 0 0 0\n 2 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 fluorobenzene\nM END\n> <name>\nfluorobenzene\n\n> <abbreviation>\nfluorobenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorocyclic ether\n -INDIGO-11302219142D\n\n 25 25 0 0 0 0 0 0 0 0999 V2000\n -1.9038 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.9038 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4038 -4.5746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.9038 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4038 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4038 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -0.4038 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0962 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0962 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0962 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5962 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5962 -6.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5962 -3.0746 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0962 -4.5746 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9395 -6.0662 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9395 -3.0827 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.3099 -2.4726 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5598 -1.1736 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5233 -1.5909 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3135 -3.5873 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3173 -2.4726 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.5271 -4.4689 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5635 -4.8864 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.7677 -5.7808 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.4224 -6.3797 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 5 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 8 10 1 0 0 0 0\n 8 11 1 0 0 0 0\n 11 12 1 0 0 0 0\n 11 13 1 0 0 0 0\n 11 14 1 0 0 0 0\n 14 15 1 0 0 0 0\n 14 16 1 0 0 0 0\n 16 17 1 0 0 0 0\n 17 18 1 0 0 0 0\n 17 19 1 0 0 0 0\n 17 20 1 0 0 0 0\n 20 21 1 0 0 0 0\n 20 22 1 0 0 0 0\n 20 23 1 0 0 0 0\n 14 23 1 0 0 0 0\n 23 24 1 0 0 0 0\n 23 25 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 8 9 10 11 12 13 14 15 16\nM SAL 1 8 17 18 19 20 21 22 23 24\nM SAL 1 1 25\nM SMT 1 perfluorocyclic ether\nM END\n> <name>\nperfluorocyclic ether\n\n> <abbreviation>\nperfluorocyclic ether\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorocyclohexane\n -INDIGO-11302219142D\n\n 18 18 0 0 0 0 0 0 0 0999 V2000\n 7.8482 2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5982 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5491 2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0490 2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5982 -0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.8482 -2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7500 2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0490 -2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5491 -2.7990 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.7500 -2.0490 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0982 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.7991 1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0982 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5000 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.7991 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.5000 -0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 13 1 0 0 0 0\n 2 13 1 0 0 0 0\n 3 14 1 0 0 0 0\n 4 14 1 0 0 0 0\n 5 15 1 0 0 0 0\n 6 15 1 0 0 0 0\n 7 16 1 0 0 0 0\n 8 16 1 0 0 0 0\n 9 17 1 0 0 0 0\n 10 17 1 0 0 0 0\n 11 18 1 0 0 0 0\n 12 18 1 0 0 0 0\n 13 14 1 0 0 0 0\n 13 15 1 0 0 0 0\n 14 16 1 0 0 0 0\n 15 17 1 0 0 0 0\n 16 18 1 0 0 0 0\n 17 18 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 8 9 10 11 12 13 14 15 16\nM SAL 1 2 17 18\nM SMT 1 perfluorocyclohexane\nM END\n> <name>\nperfluorocyclohexane\n\n> <abbreviation>\nperfluorocyclohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorohexane\n -INDIGO-11302219142D\n\n 20 19 0 0 0 0 0 0 0 0999 V2000\n 6.1472 0.9240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6472 -1.6740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.9463 -0.9240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.4462 1.6740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.3482 -2.4240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8482 0.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.7453 2.4240 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 10.2453 -0.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0491 -3.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5490 -0.5760 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -2.6250 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 10.0444 3.1740 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 11.5444 0.5760 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 12.0935 2.6250 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8972 -0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1963 0.3750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 -1.1250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.4953 1.1250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2991 -1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 10.7944 1.8750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 15 1 0 0 0 0\n 2 15 1 0 0 0 0\n 3 16 1 0 0 0 0\n 4 16 1 0 0 0 0\n 5 17 1 0 0 0 0\n 6 17 1 0 0 0 0\n 7 18 1 0 0 0 0\n 8 18 1 0 0 0 0\n 9 19 1 0 0 0 0\n 10 19 1 0 0 0 0\n 11 19 1 0 0 0 0\n 12 20 1 0 0 0 0\n 13 20 1 0 0 0 0\n 14 20 1 0 0 0 0\n 15 16 1 0 0 0 0\n 15 17 1 0 0 0 0\n 16 18 1 0 0 0 0\n 17 19 1 0 0 0 0\n 18 20 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 8 9 10 11 12 13 14 15 16\nM SAL 1 4 17 18 19 20\nM SMT 1 perfluorohexane\nM END\n> <name>\nperfluorohexane\n\n> <abbreviation>\nperfluorohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nperfluorotoluene\n -INDIGO-11302219142D\n\n 15 15 0 0 0 0 0 0 0 0999 V2000\n 3.0000 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1962 0.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 3.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.0982 2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0982 2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 8.1962 -2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -2.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 -3.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8972 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.8972 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2990 -1.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.5982 -2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 10 1 0 0 0 0\n 2 11 1 0 0 0 0\n 3 12 1 0 0 0 0\n 4 12 1 0 0 0 0\n 5 12 1 0 0 0 0\n 6 13 1 0 0 0 0\n 7 14 1 0 0 0 0\n 8 15 1 0 0 0 0\n 9 10 2 0 0 0 0\n 9 11 1 0 0 0 0\n 9 12 1 0 0 0 0\n 10 14 1 0 0 0 0\n 11 13 2 0 0 0 0\n 13 15 1 0 0 0 0\n 14 15 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 7 9 10 11 12 13 14 15\nM SMT 1 perfluorotoluene\nM END\n> <name>\nperfluorotoluene\n\n> <abbreviation>\nperfluorotoluene\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrichloroacetic acid\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 4.3154 -3.6247 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.6336 -2.8642 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.6336 -1.3688 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0543 -2.8010 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.1051 -4.3218 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 4.3090 -5.1835 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 6.9579 -3.6120 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2 1 1 0 0 0 0\n 3 2 2 0 0 0 0\n 4 1 1 0 0 0 0\n 5 1 1 0 0 0 0\n 6 1 1 0 0 0 0\n 7 2 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 trichloroacetic acid\nM END\n> <name>\ntrichloroacetic acid\n\n> <abbreviation>\ntrichloroacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrichloroacetonitrile\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 4.5000 0.0000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 1.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0000 -1.5000 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1.5000 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 0.0000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 3 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 trichloroacetonitrile\nM END\n> <name>\ntrichloroacetonitrile\n\n> <abbreviation>\ntrichloroacetonitrile\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrifluoroacetic acid\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 1.0500 -4.9991 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 0.3000 -3.7000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0500 -2.4009 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2000 -3.7000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.7000 -3.7000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2000 -2.2000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2000 -5.2000 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 2 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\n 4 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 trifluoroacetic acid\nM END\n> <name>\ntrifluoroacetic acid\n\n> <abbreviation>\ntrifluoroacetic acid\n\n> <group>\nSalts and Solvents\n\n$$$$\ntrifluoromethylbenzene\n -INDIGO-11302219142D\n\n 10 10 0 0 0 0 0 0 0 0999 V2000\n 6.1000 0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -0.5000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8010 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 -2.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.3990 -2.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 1.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1000 3.2500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 4.6000 1.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 7.6000 1.7500 0.0000 F 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 2 0 0 0 0\n 2 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 3 1 0 0 0 0\n 1 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 7 9 1 0 0 0 0\n 7 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 trifluoromethylbenzene\nM END\n> <name>\ntrifluoromethylbenzene\n\n> <abbreviation>\ntrifluoromethylbenzene\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-methylpentane\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 0.5471 -1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7520 -0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.0509 -1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.3500 -0.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -4.6491 -1.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.3500 1.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-methylpentane\nM END\n> <name>\n2-methylpentane\n\n> <abbreviation>\n2-methylpentane\n\n> <group>\nSalts and Solvents\n\n$$$$\ncis-decalin\n -INDIGO-11302219142D\n\n 12 13 0 0 1 0 0 0 0 0999 V2000\n 2.6130 -0.7481 0.0000 C 0 0 2 0 0 0 0 0 0 0 0 0\n 2.6130 -2.2234 0.0000 C 0 0 1 0 0 0 0 0 0 0 0 0\n 1.3195 -3.0026 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3195 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8754 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8754 -2.9714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -0.7481 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1948 -0.7481 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1948 -2.2234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 -2.2234 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5583 0.8018 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6130 -3.6988 0.0000 H 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 4 1 0 0 0 0\n 1 5 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 6 1 0 0 0 0\n 3 10 1 0 0 0 0\n 4 7 1 0 0 0 0\n 5 8 1 0 0 0 0\n 6 9 1 0 0 0 0\n 7 10 1 0 0 0 0\n 8 9 1 0 0 0 0\n 1 11 1 1 0 0 0\n 2 12 1 1 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 4 9 10 11 12\nM SMT 1 cis-decalin\nM END\n> <name>\ncis-decalin\n\n> <abbreviation>\ncis-decalin\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclohexane\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 3.9490 -2.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -5.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 2 1 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 cyclohexane\nM END\n> <name>\ncyclohexane\n\n> <abbreviation>\ncyclohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nisooctane\n -INDIGO-11302219142D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 4.6062 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.9052 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.2043 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.8023 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1552 -0.4581 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.6552 -0.4580 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -0.2571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 2 6 1 0 0 0 0\n 2 7 1 0 0 0 0\n 4 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 isooctane\nM END\n> <name>\nisooctane\n\n> <abbreviation>\nisooctane\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethylcyclohexane\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 3.9490 -2.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6500 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -5.3000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -4.5500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2481 -3.0500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9490 -0.8000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 2 1 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 methylcyclohexane\nM END\n> <name>\nmethylcyclohexane\n\n> <abbreviation>\nmethylcyclohexane\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethylcyclopentane\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 4.2136 0.4041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.4271 -0.4776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.0001 -0.4776 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.9636 -1.9041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.4636 -1.9041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2136 1.9041 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 6 1 0 0 0 0\n 2 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 4 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 methylcyclopentane\nM END\n> <name>\nmethylcyclopentane\n\n> <abbreviation>\nmethylcyclopentane\n\n> <group>\nSalts and Solvents\n\n$$$$\nheptane\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 4.6062 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.9052 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.2043 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.8023 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.1014 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.4004 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 n-heptane\nM END\n> <name>\nheptane\n\n> <abbreviation>\nn-heptane\n\n> <group>\nSalts and Solvents\n\n$$$$\nhexane\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 4.6062 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.9052 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.2043 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 8.5033 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 9.8023 -2.5071 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 11.1014 -1.7571 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 n-hexane\nM END\n> <name>\nhexane\n\n> <abbreviation>\nn-hexane\n\n> <group>\nSalts and Solvents\n\n$$$$\npentane\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 2.5624 -4.3230 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1578 -4.3230 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.8600 -3.5708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.4556 -3.5708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.2647 -3.5708 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2 3 1 0 0 0 0\n 3 1 1 0 0 0 0\n 4 2 1 0 0 0 0\n 5 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 pentane\nM END\n> <name>\npentane\n\n> <abbreviation>\npentane\n\n> <group>\nSalts and Solvents\n\n$$$$\n2-pentanone\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n -1.5971 -4.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2980 -3.4500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0009 -4.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3000 -3.4500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5991 -4.2000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.3000 -1.9500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 4 6 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 2-pentanone\nM END\n> <name>\n2-pentanone\n\n> <abbreviation>\n2-pentanone\n\n> <group>\nSalts and Solvents\n\n$$$$\n3-pentanone\n -INDIGO-11302219142D\n\n 6 5 0 0 0 0 0 0 0 0999 V2000\n 2.6558 5.4039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9548 4.6539 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2538 5.4039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 5.2539 6.9040 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 6.5530 4.6539 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 7.8520 5.4039 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 3 5 1 0 0 0 0\n 5 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 3-pentanone\nM END\n> <name>\n3-pentanone\n\n> <abbreviation>\n3-pentanone\n\n> <group>\nSalts and Solvents\n\n$$$$\nacetone\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 propanone\nM END\n> <name>\nacetone\n\n> <abbreviation>\npropanone\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclohexanone\n -INDIGO-11302219142D\n\n 7 7 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -1.8786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 -2.6286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -1.8786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 cyclohexanone\nM END\n> <name>\ncyclohexanone\n\n> <abbreviation>\ncyclohexanone\n\n> <group>\nSalts and Solvents\n\n$$$$\ncyclopentanone\n -INDIGO-11302219142D\n\n 6 6 0 0 0 0 0 0 0 0999 V2000\n 1.0323 3.5259 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0323 2.0259 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.2458 1.1443 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.7823 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.2824 -0.2824 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.1813 1.1443 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 2 6 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 cyclopentanone\nM END\n> <name>\ncyclopentanone\n\n> <abbreviation>\ncyclopentanone\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl ethyl ketone\n -INDIGO-11302219142D\n\n 5 4 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5409 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 MEK\nM END\n> <name>\nmethyl ethyl ketone\n\n> <abbreviation>\nMEK\n\n> <group>\nSalts and Solvents\n\n$$$$\nmethyl isobutyl ketone\n -INDIGO-11302219142D\n\n 7 6 0 0 0 0 0 0 0 0999 V2000\n 0.0571 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2419 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3562 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0571 1.8714 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5409 0.3714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.8399 -0.3786 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.5409 1.8714 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 2 0 0 0 0\n 2 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 methyl isobutyl ketone\nM END\n> <name>\nmethyl isobutyl ketone\n\n> <abbreviation>\nmethyl isobutyl ketone\n\n> <group>\nSalts and Solvents\n\n$$$$\ncarbon disulfide\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 5.7990 0.0000 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 2.7989 0.0000 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 4.2989 0.0000 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 3 2 0 0 0 0\n 2 3 2 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 carbon disulfide\nM END\n> <name>\ncarbon disulfide\n\n> <abbreviation>\ncarbon disulfide\n\n> <group>\nSalts and Solvents\n\n$$$$\nnitromethane\n -INDIGO-11302219142D\n\n 4 3 0 0 0 0 0 0 0 0999 V2000\n 1.5009 0.7500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8000 1.5000 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.0991 0.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.8000 3.0000 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 2 0 0 0 0\nM CHG 2 2 1 3 -1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 4 1 2 3 4\nM SMT 1 nitromethane\nM END\n> <name>\nnitromethane\n\n> <abbreviation>\nnitromethane\n\n> <group>\nSalts and Solvents\n\n$$$$\no-xylene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n -2.1500 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 5.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.4481 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\n 6 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 o-xylene\nM END\n> <name>\no-xylene\n\n> <abbreviation>\no-xylene\n\n> <group>\nSalts and Solvents\n\n$$$$\nm-xylene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n -2.1500 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 5.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.4480 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\n 5 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 m-xylene\nM END\n> <name>\nm-xylene\n\n> <abbreviation>\nm-xylene\n\n> <group>\nSalts and Solvents\n\n$$$$\np-xylene\n -INDIGO-11302219142D\n\n 8 8 0 0 0 0 0 0 0 0999 V2000\n -2.1500 4.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.4490 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 1.4750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 2.2250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.8510 3.7250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 5.9750 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.1500 -0.0250 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 2 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 2 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 2 0 0 0 0\n 6 1 1 0 0 0 0\n 1 7 1 0 0 0 0\n 4 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 p-xylene\nM END\n> <name>\np-xylene\n\n> <abbreviation>\np-xylene\n\n> <group>\nSalts and Solvents\n\n$$$$\nDIPEA\n -INDIGO-11302219142D\n\n 9 8 0 0 0 0 0 0 0 0999 V2000\n -1.5490 7.3145 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -1.5490 8.8145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8481 6.5645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2500 6.5645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -4.1471 7.3145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8481 5.0645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0490 7.3145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.2500 5.0645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.8481 9.5645 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 1 3 1 0 0 0 0\n 1 4 1 0 0 0 0\n 3 5 1 0 0 0 0\n 3 6 1 0 0 0 0\n 4 7 1 0 0 0 0\n 4 8 1 0 0 0 0\n 2 9 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 1 9\nM SMT 1 DIPEA\nM END\n> <name>\nn,n-diisopropylethylamine\n\n> <abbreviation>\nDIPEA\n\n> <group>\nSalts and Solvents\n\n$$$$\n1,5-diazabicyclo[5.4.0]undec-7-ene\n -INDIGO-11302219142D\n\n 11 12 0 0 0 0 0 0 0 0999 V2000\n 1.6852 -0.3846 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3514 1.0778 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.0000 1.7286 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.3515 1.0777 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -1.6852 -0.3847 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n -3.1695 -0.6090 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -3.7175 -2.0053 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -2.7822 -3.1781 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -1.2990 -2.9545 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n -0.7500 -1.5574 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 0.7500 -1.5574 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 3 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 7 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 9 10 2 0 0 0 0\n 10 5 1 0 0 0 0\n 10 11 1 0 0 0 0\n 11 1 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 3 9 10 11\nM SMT 1 DBU\nM END\n> <name>\n1,5-diazabicyclo[5.4.0]undec-7-ene\n\n> <abbreviation>\nDBU\n\n> <group>\nSalts and Solvents\n\n$$$$\nhexamethylphosphoramide\n -INDIGO-11302219142D\n\n 11 10 0 0 0 0 0 0 0 0999 V2000\n 2.3174 -0.9012 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.6235 -1.9903 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 4.8900 -0.9145 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5935 -3.2519 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 3.5935 -4.7619 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 5.0831 -3.2205 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 6.0654 -4.1562 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 6.1687 -1.9999 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.1521 -3.2278 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3934 -4.5570 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.0626 -2.3997 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 2 0 0 0 0\n 4 6 1 0 0 0 0\n 6 7 1 0 0 0 0\n 6 8 1 0 0 0 0\n 4 9 1 0 0 0 0\n 9 10 1 0 0 0 0\n 9 11 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 3 9 10 11\nM SMT 1 HMPA\nM END\n> <name>\nhexamethylphosphoramide\n\n> <abbreviation>\nHMPA\n\n> <group>\nSalts and Solvents\n\n$$$$\nhexamethylphosphorous triamide\n -INDIGO-11302219142D\n\n 10 9 0 0 0 0 0 0 0 0999 V2000\n 0.0007 0.0004 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3000 0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3000 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6000 0.0000 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9000 0.7500 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 5.1992 0.0004 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9000 2.2500 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 2.6031 -1.5008 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 3.9032 -2.2490 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3053 -2.2531 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 4 5 1 0 0 0 0\n 5 6 1 0 0 0 0\n 5 7 1 0 0 0 0\n 4 8 1 0 0 0 0\n 8 9 1 0 0 0 0\n 8 10 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SAL 1 2 9 10\nM SMT 1 HMPT\nM END\n> <name>\nhexamethylphosphorous triamide\n\n> <abbreviation>\nHMPT\n\n> <group>\nSalts and Solvents\n\n$$$$\nheavy water\n -INDIGO-11302219142D\n\n 3 2 0 0 0 0 0 0 0 0999 V2000\n 0.0007 0.0004 0.0000 D 0 0 0 0 0 0 0 0 0 0 0 0\n 1.3000 0.7500 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 2.5993 0.0004 0.0000 D 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 3 1 2 3\nM SMT 1 D2O\nM END\n> <name>\nheavy water\n\n> <abbreviation>\nD2O\n\n> <group>\nSalts and Solvents\n\n$$$$\nTRIS\n -INDIGO-03312512502D\n\n 8 7 0 0 0 0 0 0 0 0999 V2000\n 16.0940 -10.7437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.9600 -10.2437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.8260 -10.7437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.9600 -9.2437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.9600 -11.2437 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.2280 -10.2437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.6921 -10.2437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.8260 -8.7437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0 0\n 2 3 1 0 0 0 0\n 2 4 1 0 0 0 0\n 2 5 1 0 0 0 0\n 1 6 1 0 0 0 0\n 3 7 1 0 0 0 0\n 4 8 1 0 0 0 0\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 8 1 2 3 4 5 6 7 8\nM SMT 1 TRIS\nM SDI 1 4 0.0000 0.0000 0.0000 0.0000\nM SDI 1 4 0.0000 0.0000 0.0000 0.0000\nM END\n> <name>\nTRIS\n\n> <abbreviation>\nTRIS\n\n> <group>\nSalts and Solvents\n\n$$$$\nTRIS HCl\n Ketcher 3312513372D 1 1.00000 0.00000 0\n\n 9 7 0 0 0 0 0 0 0 0999 V2000\n 15.7719 -6.6396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6379 -6.1396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.5040 -6.6396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6379 -5.1396 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6379 -7.1396 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 14.9059 -6.1396 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.3700 -6.1396 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.5040 -4.6396 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6716 -7.9479 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 1 0 0 0\n 2 5 1 0 0 0\n 1 6 1 0 0 0\n 3 7 1 0 0 0\n 4 8 1 0 0 0\nM CHG 2 5 1 9 -1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 9 1 2 3 4 5 6 7 8 9\nM SMT 1 TRIS HCl\nM END\n\n> <name>\nTRIS HCl\n\n> <abbreviation>\nTRIS HCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nSodium-chloride\n Ketcher 3312513392D 1 1.00000 0.00000 0\n\n 2 0 0 0 0 0 0 0 0 0999 V2000\n 16.4963 -6.3500 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 15.6713 -6.3500 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\nM CHG 2 1 -1 2 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 NaCl\nM END\n\n> <name>\nSodium-chloride\n\n> <abbreviation>\nNaCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nSodium-acetate\n Ketcher 3312513462D 1 1.00000 0.00000 0\n\n 5 3 0 0 0 0 0 0 0 0999 V2000\n 15.0102 -10.7437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8763 -10.2437 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.7423 -10.7437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8763 -9.2437 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.5182 -10.7687 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 2 0 0 0\nM CHG 2 3 -1 5 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 CH3COONa\nM END\n\n> <name>\nSodium-acetate\n\n> <abbreviation>\nCH3COONa\n\n> <group>\nSalts and Solvents\n\n$$$$\nPotassium-chloride\n Ketcher 3312513542D 1 1.00000 0.00000 0\n\n 2 0 0 0 0 0 0 0 0 0999 V2000\n 16.2390 -13.2275 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 15.4140 -13.2275 0.0000 K 0 0 0 0 0 0 0 0 0 0 0 0\nM CHG 2 1 -1 2 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 KCl\nM END\n\n> <name>\nPotassium-chloride\n\n> <abbreviation>\nKCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nMonopotassium phosphate\n Ketcher 3312513582D 1 1.00000 0.00000 0\n\n 6 4 0 0 0 0 0 0 0 0999 V2000\n 15.0432 -14.6312 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 15.9093 -15.1312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.0432 -13.6312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.1772 -15.1312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.0432 -15.6312 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.6098 -15.1562 0.0000 K 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 2 0 0 0\n 1 4 1 0 0 0\n 1 5 1 0 0 0\nM CHG 2 2 -1 6 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 6 1 2 3 4 5 6\nM SMT 1 KH2PO4\nM END\n\n> <name>\nMonopotassium phosphate\n\n> <abbreviation>\nKH2PO4\n\n> <group>\nSalts and Solvents\n\n$$$$\nLithium-chloride\n Ketcher 3312514 52D 1 1.00000 0.00000 0\n\n 2 0 0 0 0 0 0 0 0 0999 V2000\n 16.4828 -15.7375 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 15.6578 -15.7375 0.0000 Li 0 0 0 0 0 0 0 0 0 0 0 0\nM CHG 2 1 -1 2 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 2 1 2\nM SMT 1 LiCl\nM END\n\n> <name>\nLithium-chloride\n\n> <abbreviation>\nLiCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nGuanidine HCl\n Ketcher 3312514 62D 1 1.00000 0.00000 0\n\n 5 3 0 0 0 0 0 0 0 0999 V2000\n 14.8573 -16.3937 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7233 -15.8937 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.5893 -16.3937 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7233 -14.8937 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 17.8653 -16.3937 0.0000 Cl 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 2 0 0 0\nM CHG 2 3 1 5 -1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 5 1 2 3 4 5\nM SMT 1 GuHCl\nM END\n\n> <name>\nGuanidine HCl\n\n> <abbreviation>\nGuHCl\n\n> <group>\nSalts and Solvents\n\n$$$$\nDisodium phosphate\n Ketcher 3312514 72D 1 1.00000 0.00000 0\n\n 7 4 0 0 0 0 0 0 0 0999 V2000\n 15.7195 -15.6812 0.0000 P 0 0 0 0 0 0 0 0 0 0 0 0\n 16.5856 -16.1812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7195 -14.6812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.8535 -16.1812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.7195 -16.6812 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 17.2860 -16.2062 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 14.1860 -16.1812 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 2 0 0 0\n 1 4 1 0 0 0\n 1 5 1 0 0 0\nM CHG 4 2 -1 4 -1 6 1 7 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 Na2HPO4\nM END\n\n> <name>\nDisodium phosphate\n\n> <abbreviation>\nNa2HPO4\n\n> <group>\nSalts and Solvents\n\n$$$$\nDisodium EDTA\n Ketcher 3312514 92D 1 1.00000 0.00000 0\n\n 22 19 0 0 0 0 0 0 0 0999 V2000\n 11.8472 -15.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 12.7132 -15.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 13.5792 -15.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 12.7132 -14.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.4453 -15.4313 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -15.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 14.4453 -14.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -13.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -12.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -14.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -15.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.0433 -15.9313 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 17.9094 -15.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 17.0433 -16.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -17.4313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 16.1773 -18.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.3113 -16.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.7754 -15.9313 0.0000 C 0 0 0 0 0 0 0 0 0 0 0 0\n 19.6414 -15.4313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 18.7754 -16.9313 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 14.5052 -16.9313 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 20.4552 -15.4313 0.0000 Na 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 2 3 1 0 0 0\n 2 4 2 0 0 0\n 3 5 1 0 0 0\n 5 6 1 0 0 0\n 5 7 1 0 0 0\n 7 8 1 0 0 0\n 8 9 2 0 0 0\n 8 10 1 0 0 0\n 6 11 1 0 0 0\n 11 12 1 0 0 0\n 12 13 1 0 0 0\n 12 14 1 0 0 0\n 14 15 1 0 0 0\n 15 16 2 0 0 0\n 15 17 1 0 0 0\n 13 18 1 0 0 0\n 18 19 1 0 0 0\n 18 20 2 0 0 0\nM CHG 4 17 -1 19 -1 21 1 22 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 15 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15\nM SAL 1 7 16 17 18 19 20 21 22\nM SMT 1 Disodium EDTA\nM END\n\n> <name>\nDisodium EDTA\n\n> <abbreviation>\nDisodium EDTA\n\n> <group>\nSalts and Solvents\n\n$$$$\nAmmonium-sulfate\n Ketcher 3312514102D 1 1.00000 0.00000 0\n\n 7 4 0 0 0 0 0 0 0 0999 V2000\n 15.8979 -15.6813 0.0000 S 0 0 0 0 0 0 0 0 0 0 0 0\n 16.7639 -16.1813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8979 -14.6813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.0319 -16.1813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 15.8979 -16.6813 0.0000 O 0 0 0 0 0 0 0 0 0 0 0 0\n 13.7644 -16.2063 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 17.4894 -16.2063 0.0000 N 0 0 0 0 0 0 0 0 0 0 0 0\n 1 2 1 0 0 0\n 1 3 2 0 0 0\n 1 4 1 0 0 0\n 1 5 2 0 0 0\nM CHG 4 2 -1 4 -1 6 1 7 1\nM STY 1 1 SUP\nM SLB 1 1 1\nM SAL 1 7 1 2 3 4 5 6 7\nM SMT 1 (NH4)2SO4\nM END\n\n> <name>\nAmmonium-sulfate\n\n> <abbreviation>\n(NH4)2SO4\n\n> <group>\nSalts and Solvents\n\n$$$$";
14306
14308
 
14307
- function ownKeys$19(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14308
- function _objectSpread$19(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$19(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$19(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14309
+ function ownKeys$1a(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14310
+ function _objectSpread$1a(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$1a(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$1a(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14309
14311
  var initialState$1 = {
14310
14312
  lib: [],
14311
14313
  mode: MODES.FG
@@ -14317,7 +14319,7 @@ var saltsAndSolventsReducer = function saltsAndSolventsReducer() {
14317
14319
  payload = _ref.payload;
14318
14320
  switch (type) {
14319
14321
  case 'SALTS_AND_SOLVENTS_INIT':
14320
- return _objectSpread$19(_objectSpread$19({}, state), payload);
14322
+ return _objectSpread$1a(_objectSpread$1a({}, state), payload);
14321
14323
  default:
14322
14324
  return state;
14323
14325
  }
@@ -14366,8 +14368,8 @@ function initSaltsAndSolventsTemplates() {
14366
14368
  }();
14367
14369
  }
14368
14370
 
14369
- function ownKeys$18(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14370
- function _objectSpread$18(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$18(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$18(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14371
+ function ownKeys$19(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14372
+ function _objectSpread$19(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$19(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$19(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14371
14373
  var initial = {
14372
14374
  freqAtoms: [],
14373
14375
  currentAtom: 0,
@@ -14387,7 +14389,7 @@ function updateVisibleTools(visibleTool, activeTool) {
14387
14389
  if (key === 'shape' && menuHeight > 900) return res;
14388
14390
  if (!key.match(regExp) || menuHeight > 700) res[key] = visibleTool[key];
14389
14391
  return res;
14390
- }, _objectSpread$18({}, activeTool));
14392
+ }, _objectSpread$19({}, activeTool));
14391
14393
  }
14392
14394
  function initResize() {
14393
14395
  return function (dispatch, getState) {
@@ -14411,41 +14413,41 @@ function toolbarReducer () {
14411
14413
  case 'ACTION':
14412
14414
  {
14413
14415
  var visibleTool = toolInMenu(action.action);
14414
- return visibleTool ? _objectSpread$18(_objectSpread$18({}, state), {}, {
14416
+ return visibleTool ? _objectSpread$19(_objectSpread$19({}, state), {}, {
14415
14417
  opened: null,
14416
- visibleTools: _objectSpread$18(_objectSpread$18({}, state.visibleTools), visibleTool)
14417
- }) : _objectSpread$18(_objectSpread$18({}, state), {}, {
14418
+ visibleTools: _objectSpread$19(_objectSpread$19({}, state.visibleTools), visibleTool)
14419
+ }) : _objectSpread$19(_objectSpread$19({}, state), {}, {
14418
14420
  opened: null
14419
14421
  });
14420
14422
  }
14421
14423
  case 'ADD_ATOMS':
14422
14424
  {
14423
14425
  var newState = addFreqAtom(data, state.freqAtoms, state.currentAtom);
14424
- return _objectSpread$18(_objectSpread$18({}, state), newState);
14426
+ return _objectSpread$19(_objectSpread$19({}, state), newState);
14425
14427
  }
14426
14428
  case 'CLEAR_VISIBLE':
14427
14429
  {
14428
14430
  var activeTool = toolInMenu(action.data);
14429
14431
  var correctTools = updateVisibleTools(state.visibleTools, activeTool);
14430
- return _objectSpread$18(_objectSpread$18({}, state), {}, {
14432
+ return _objectSpread$19(_objectSpread$19({}, state), {}, {
14431
14433
  opened: null,
14432
- visibleTools: _objectSpread$18({}, correctTools)
14434
+ visibleTools: _objectSpread$19({}, correctTools)
14433
14435
  });
14434
14436
  }
14435
14437
  case 'OPENED':
14436
14438
  {
14437
- return data.isSelected && state.opened ? _objectSpread$18(_objectSpread$18({}, state), {}, {
14439
+ return data.isSelected && state.opened ? _objectSpread$19(_objectSpread$19({}, state), {}, {
14438
14440
  opened: null
14439
- }) : _objectSpread$18(_objectSpread$18({}, state), {}, {
14441
+ }) : _objectSpread$19(_objectSpread$19({}, state), {}, {
14440
14442
  opened: data.menuName
14441
14443
  });
14442
14444
  }
14443
14445
  case 'UPDATE':
14444
- return _objectSpread$18(_objectSpread$18({}, state), {}, {
14446
+ return _objectSpread$19(_objectSpread$19({}, state), {}, {
14445
14447
  opened: null
14446
14448
  });
14447
14449
  case 'MODAL_OPEN':
14448
- return _objectSpread$18(_objectSpread$18({}, state), {}, {
14450
+ return _objectSpread$19(_objectSpread$19({}, state), {}, {
14449
14451
  opened: null
14450
14452
  });
14451
14453
  default:
@@ -14488,8 +14490,8 @@ function hiddenAncestor(el, base) {
14488
14490
  return findEl;
14489
14491
  }
14490
14492
 
14491
- function ownKeys$17(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14492
- function _objectSpread$17(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$17(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$17(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14493
+ function ownKeys$18(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14494
+ function _objectSpread$18(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$18(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$18(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14493
14495
  var initialState = {
14494
14496
  visible: false,
14495
14497
  rotateHandlePosition: {
@@ -14511,7 +14513,7 @@ var floatingToolsReducer = function floatingToolsReducer() {
14511
14513
  payload = _ref.payload;
14512
14514
  switch (type) {
14513
14515
  case 'UPDATE_FLOATING_TOOLS':
14514
- return _objectSpread$17(_objectSpread$17({}, state), payload);
14516
+ return _objectSpread$18(_objectSpread$18({}, state), payload);
14515
14517
  default:
14516
14518
  return state;
14517
14519
  }
@@ -14519,8 +14521,8 @@ var floatingToolsReducer = function floatingToolsReducer() {
14519
14521
 
14520
14522
  var _excluded$t = ["type"],
14521
14523
  _excluded2$5 = ["buttons", "customButtons"];
14522
- function ownKeys$16(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14523
- function _objectSpread$16(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$16(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$16(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14524
+ function ownKeys$17(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14525
+ function _objectSpread$17(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$17(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$17(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14524
14526
  var SET_SERVER = 'SET_SERVER';
14525
14527
  var shared = combineReducers({
14526
14528
  common: commonReducer,
@@ -14554,17 +14556,17 @@ function getRootReducer(setEditor) {
14554
14556
  {
14555
14557
  action.type;
14556
14558
  var data = _objectWithoutProperties(action, _excluded$t);
14557
- if (data) state = _objectSpread$16(_objectSpread$16({}, state), data);
14559
+ if (data) state = _objectSpread$17(_objectSpread$17({}, state), data);
14558
14560
  }
14559
14561
  case SET_SERVER:
14560
14562
  {
14561
- state = _objectSpread$16(_objectSpread$16({}, state), {}, {
14563
+ state = _objectSpread$17(_objectSpread$17({}, state), {}, {
14562
14564
  server: action.server || state.server
14563
14565
  });
14564
14566
  }
14565
14567
  }
14566
- var sh = shared(state, _objectSpread$16(_objectSpread$16({}, action), pick(['editor', 'server', 'options'], state)));
14567
- var finalState = sh === state.shared ? state : _objectSpread$16(_objectSpread$16({}, state), sh);
14568
+ var sh = shared(state, _objectSpread$17(_objectSpread$17({}, action), pick(['editor', 'server', 'options'], state)));
14569
+ var finalState = sh === state.shared ? state : _objectSpread$17(_objectSpread$17({}, state), sh);
14568
14570
  global.currentState = finalState;
14569
14571
  return finalState;
14570
14572
  };
@@ -14661,8 +14663,8 @@ function useSettingsContext() {
14661
14663
  return React__default.useContext(settingsContext);
14662
14664
  }
14663
14665
 
14664
- function ownKeys$15(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14665
- function _objectSpread$15(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$15(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$15(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14666
+ function ownKeys$16(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14667
+ function _objectSpread$16(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$16(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$16(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14666
14668
  var throttleMilliseconds = 100;
14667
14669
  function useThrottleResizeObserver() {
14668
14670
  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
@@ -14676,11 +14678,11 @@ function useThrottleResizeObserver() {
14676
14678
  var onResize = useMemo(function () {
14677
14679
  return throttle$1(setSize, throttleMilliseconds);
14678
14680
  }, []);
14679
- var _useResizeObserver = useResizeObserver(_objectSpread$15({
14681
+ var _useResizeObserver = useResizeObserver(_objectSpread$16({
14680
14682
  onResize: onResize
14681
14683
  }, options)),
14682
14684
  ref = _useResizeObserver.ref;
14683
- return _objectSpread$15({
14685
+ return _objectSpread$16({
14684
14686
  ref: ref
14685
14687
  }, size);
14686
14688
  }
@@ -14714,7 +14716,6 @@ var useInterval = function useInterval(callback, delay) {
14714
14716
  var useSubscriptionOnEvents = function useSubscriptionOnEvents() {
14715
14717
  var dispatch = useDispatch();
14716
14718
  var _useAppContext = useAppContext(),
14717
- getKetcherInstance = _useAppContext.getKetcherInstance,
14718
14719
  ketcherId = _useAppContext.ketcherId;
14719
14720
  var loadingHandler = function loadingHandler() {
14720
14721
  dispatch(indigoVerification(true));
@@ -14734,10 +14735,10 @@ var useSubscriptionOnEvents = function useSubscriptionOnEvents() {
14734
14735
  };
14735
14736
  useEffect(function () {
14736
14737
  var subscribeOnInit = function subscribeOnInit() {
14737
- subscribe(getKetcherInstance());
14738
+ subscribe(ketcherProvider.getKetcher(ketcherId));
14738
14739
  };
14739
14740
  var unsubscribeOnUnMount = function unsubscribeOnUnMount() {
14740
- unsubscribe(getKetcherInstance());
14741
+ unsubscribe(ketcherProvider.getKetcher(ketcherId));
14741
14742
  };
14742
14743
  var initEventName = ketcherInitEventName(ketcherId);
14743
14744
  window.addEventListener(initEventName, subscribeOnInit);
@@ -14812,13 +14813,13 @@ var mediaSizes$2 = {
14812
14813
  };
14813
14814
 
14814
14815
  var _excluded$s = ["height"];
14815
- function ownKeys$14(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14816
- function _objectSpread$14(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$14(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$14(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14816
+ function ownKeys$15(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14817
+ function _objectSpread$15(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$15(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$15(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14817
14818
  var Bond$1 = function Bond(props) {
14818
14819
  var height = props.height,
14819
14820
  rest = _objectWithoutProperties(props, _excluded$s);
14820
14821
  if (height && height <= mediaSizes$2.bondCollapsableHeight) {
14821
- return jsx(ToolbarMultiToolItem, _objectSpread$14({
14822
+ return jsx(ToolbarMultiToolItem, _objectSpread$15({
14822
14823
  id: "bonds",
14823
14824
  options: groupOptions,
14824
14825
  variant: "grouped",
@@ -14826,35 +14827,35 @@ var Bond$1 = function Bond(props) {
14826
14827
  }, rest));
14827
14828
  }
14828
14829
  return jsxs(Fragment, {
14829
- children: [jsx(ToolbarMultiToolItem, _objectSpread$14({
14830
+ children: [jsx(ToolbarMultiToolItem, _objectSpread$15({
14830
14831
  id: "bond-common",
14831
14832
  options: bondCommon
14832
- }, rest)), jsx(ToolbarMultiToolItem, _objectSpread$14({
14833
+ }, rest)), jsx(ToolbarMultiToolItem, _objectSpread$15({
14833
14834
  id: "bond-stereo",
14834
14835
  options: bondStereo
14835
- }, rest)), jsx(ToolbarMultiToolItem, _objectSpread$14({
14836
+ }, rest)), jsx(ToolbarMultiToolItem, _objectSpread$15({
14836
14837
  id: "bond-query",
14837
14838
  options: bondQuery
14838
- }, rest)), jsx(ToolbarMultiToolItem, _objectSpread$14({
14839
+ }, rest)), jsx(ToolbarMultiToolItem, _objectSpread$15({
14839
14840
  id: "bond-special",
14840
14841
  options: bondSpecial
14841
14842
  }, rest))]
14842
14843
  });
14843
14844
  };
14844
14845
 
14845
- function ownKeys$13(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14846
- function _objectSpread$13(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$13(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$13(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14846
+ function ownKeys$14(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14847
+ function _objectSpread$14(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$14(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$14(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14847
14848
  var RGroup$1 = function RGroup(props) {
14848
- return jsx(ToolbarGroupItem, _objectSpread$13({
14849
+ return jsx(ToolbarGroupItem, _objectSpread$14({
14849
14850
  id: "rgroup",
14850
14851
  options: rGroupOptions
14851
14852
  }, props));
14852
14853
  };
14853
14854
 
14854
- function ownKeys$12(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14855
- function _objectSpread$12(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$12(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$12(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14855
+ function ownKeys$13(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14856
+ function _objectSpread$13(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$13(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$13(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14856
14857
  var Shape = function Shape(props) {
14857
- return jsx(ToolbarGroupItem, _objectSpread$12({
14858
+ return jsx(ToolbarGroupItem, _objectSpread$13({
14858
14859
  id: "shapes",
14859
14860
  options: shapeOptions
14860
14861
  }, props));
@@ -14863,8 +14864,8 @@ var Shape = function Shape(props) {
14863
14864
  var classes$K = {"button-common-styles":"LeftToolbar-module_button-common-styles__WgnON","scrollbar":"LeftToolbar-module_scrollbar__OBwid","group":"LeftToolbar-module_group__0s41t","root":"LeftToolbar-module_root__yhhZm","buttons":"LeftToolbar-module_buttons__lnIjn","borderOff":"LeftToolbar-module_borderOff__om425","groupItem":"LeftToolbar-module_groupItem__OqQu0"};
14864
14865
 
14865
14866
  var _excluded$r = ["className"];
14866
- function ownKeys$11(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14867
- function _objectSpread$11(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$11(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$11(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14867
+ function ownKeys$12(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
14868
+ function _objectSpread$12(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$12(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$12(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
14868
14869
  var LeftToolbar = function LeftToolbar(props) {
14869
14870
  var _scrollRef$current;
14870
14871
  var className = props.className,
@@ -14890,7 +14891,7 @@ var LeftToolbar = function LeftToolbar(props) {
14890
14891
  var id = _ref.id,
14891
14892
  options = _ref.options,
14892
14893
  dataTestId = _ref.dataTestId;
14893
- return ToolbarGroupItem(_objectSpread$11({
14894
+ return ToolbarGroupItem(_objectSpread$12({
14894
14895
  id: id,
14895
14896
  options: options,
14896
14897
  dataTestId: dataTestId
@@ -14927,16 +14928,16 @@ var LeftToolbar = function LeftToolbar(props) {
14927
14928
  children: visibleItems.map(function (item) {
14928
14929
  switch (item.id) {
14929
14930
  case 'bond-common':
14930
- return createElement(Bond$1, _objectSpread$11(_objectSpread$11({}, rest), {}, {
14931
+ return createElement(Bond$1, _objectSpread$12(_objectSpread$12({}, rest), {}, {
14931
14932
  height: height,
14932
14933
  key: item.id
14933
14934
  }));
14934
14935
  case 'rgroup':
14935
- return createElement(RGroup$1, _objectSpread$11(_objectSpread$11({}, rest), {}, {
14936
+ return createElement(RGroup$1, _objectSpread$12(_objectSpread$12({}, rest), {}, {
14936
14937
  key: item.id
14937
14938
  }));
14938
14939
  case 'shapes':
14939
- return createElement(Shape, _objectSpread$11(_objectSpread$11({}, rest), {}, {
14940
+ return createElement(Shape, _objectSpread$12(_objectSpread$12({}, rest), {}, {
14940
14941
  key: item.id
14941
14942
  }));
14942
14943
  case 'bonds':
@@ -15066,14 +15067,14 @@ var LeftToolbarContainer = connect(mapStateToProps$k, mapDispatchToProps$k)(Left
15066
15067
  var classes$J = {"button-common-styles":"Atom-module_button-common-styles__j3EUJ","scrollbar":"Atom-module_scrollbar__iO-Ni","atom":"Atom-module_atom__g2RUu"};
15067
15068
 
15068
15069
  var _excluded$q = ["el", "shortcut", "selected"];
15069
- function ownKeys$10(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15070
- function _objectSpread$10(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$10(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$10(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15070
+ function ownKeys$11(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15071
+ function _objectSpread$11(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$11(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$11(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15071
15072
  function Atom$1(_ref) {
15072
15073
  var el = _ref.el,
15073
15074
  shortcut = _ref.shortcut,
15074
15075
  selected = _ref.selected,
15075
15076
  props = _objectWithoutProperties(_ref, _excluded$q);
15076
- return jsx("button", _objectSpread$10(_objectSpread$10({
15077
+ return jsx("button", _objectSpread$11(_objectSpread$11({
15077
15078
  title: shortcut ? "".concat(el.title, " (").concat(shortcut, ")") : el.title,
15078
15079
  className: clsx(classes$J.atom, {
15079
15080
  selected: selected
@@ -15138,8 +15139,8 @@ var HorizontalDivider = function HorizontalDivider() {
15138
15139
  };
15139
15140
 
15140
15141
  var _excluded$p = ["className"];
15141
- function ownKeys$$(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15142
- function _objectSpread$$(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$$(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$$(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15142
+ function ownKeys$10(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
15143
+ function _objectSpread$10(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$10(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$10(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
15143
15144
  var Group = function Group(_ref) {
15144
15145
  var children = _ref.children,
15145
15146
  className = _ref.className;
@@ -15210,7 +15211,7 @@ var RightToolbar = function RightToolbar(props) {
15210
15211
  status: status,
15211
15212
  active: active,
15212
15213
  onAction: onAction
15213
- }), jsx(ToolbarGroupItem, _objectSpread$$({
15214
+ }), jsx(ToolbarGroupItem, _objectSpread$10({
15214
15215
  id: "period-table"
15215
15216
  }, rest))]
15216
15217
  })
@@ -15220,11 +15221,11 @@ var RightToolbar = function RightToolbar(props) {
15220
15221
  className: classes$I.groupItem,
15221
15222
  children: jsxs("div", {
15222
15223
  ref: sizeRef,
15223
- children: [jsx(ToolbarGroupItem, _objectSpread$$({
15224
+ children: [jsx(ToolbarGroupItem, _objectSpread$10({
15224
15225
  id: "any-atom"
15225
15226
  }, rest)), jsx("div", {
15226
15227
  className: classes$I.button,
15227
- children: jsx(ToolbarGroupItem, _objectSpread$$({
15228
+ children: jsx(ToolbarGroupItem, _objectSpread$10({
15228
15229
  id: "extended-table"
15229
15230
  }, rest))
15230
15231
  })]
@@ -15867,7 +15868,11 @@ var TopToolbar = function TopToolbar(_ref) {
15867
15868
  resizeRef = _useResizeObserver.ref,
15868
15869
  _useResizeObserver$wi = _useResizeObserver.width,
15869
15870
  width = _useResizeObserver$wi === void 0 ? 50 : _useResizeObserver$wi;
15870
- var ketcher = ketcherProvider.getKetcher();
15871
+ var _useAppContext = useAppContext(),
15872
+ ketcherId = _useAppContext.ketcherId;
15873
+ var ketcher = useMemo(function () {
15874
+ return ketcherProvider.getKetcher(ketcherId);
15875
+ }, [ketcherId]);
15871
15876
  var onCustomAction = useCallback(function (name) {
15872
15877
  return ketcher.sendCustomAction(name);
15873
15878
  }, [ketcher]);
@@ -16169,8 +16174,8 @@ var selectAbbreviationLookupValue = function selectAbbreviationLookupValue(state
16169
16174
  return (_state$abbreviationLo = state.abbreviationLookup.lookupValue) !== null && _state$abbreviationLo !== void 0 ? _state$abbreviationLo : '';
16170
16175
  };
16171
16176
 
16172
- function ownKeys$_(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16173
- function _objectSpread$_(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$_(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$_(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16177
+ function ownKeys$$(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
16178
+ function _objectSpread$$(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$$(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$$(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
16174
16179
  var destinationVectorMapping = {
16175
16180
  ArrowUp: new Vec2(0, -1),
16176
16181
  ArrowDown: new Vec2(0, 1),
@@ -16195,7 +16200,7 @@ function moveSelectedItems(editor, key, isShiftPressed) {
16195
16200
  if (isClose) {
16196
16201
  var moveStep = isShiftPressed ? getFasterStep(destinationVectorInCanvas) : destinationVectorInCanvas;
16197
16202
  editor.render.setViewBox(function (prev) {
16198
- return _objectSpread$_(_objectSpread$_({}, prev), {}, {
16203
+ return _objectSpread$$(_objectSpread$$({}, prev), {}, {
16199
16204
  minX: prev.minX + moveStep.x,
16200
16205
  minY: prev.minY + moveStep.y
16201
16206
  });
@@ -17113,8 +17118,8 @@ function filterNotPartOfSuperatomWithoutLabel(itemsToFilter, struct) {
17113
17118
  function _createForOfIteratorHelper$e(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$e(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
17114
17119
  function _unsupportedIterableToArray$e(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$e(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$e(o, minLen); }
17115
17120
  function _arrayLikeToArray$e(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
17116
- function ownKeys$Z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17117
- function _objectSpread$Z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Z(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17121
+ function ownKeys$_(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
17122
+ function _objectSpread$_(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$_(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$_(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
17118
17123
  var searchMaps = ['atoms', 'bonds', 'sgroups', 'functionalGroups', 'sgroupData'];
17119
17124
  var SGroupTool = function () {
17120
17125
  function SGroupTool(editor) {
@@ -17133,7 +17138,7 @@ var SGroupTool = function () {
17133
17138
  atoms: selection.atoms,
17134
17139
  bonds: selection.bonds
17135
17140
  }, molecule);
17136
- selection = _objectSpread$Z(_objectSpread$Z({}, selection), {}, {
17141
+ selection = _objectSpread$_(_objectSpread$_({}, selection), {}, {
17137
17142
  atoms: filteredAtomsAndBonds.atoms,
17138
17143
  bonds: filteredAtomsAndBonds.bonds
17139
17144
  });
@@ -17489,7 +17494,7 @@ var SGroupTool = function () {
17489
17494
  atoms: selection.atoms,
17490
17495
  bonds: selection.bonds
17491
17496
  }, molecule);
17492
- selection = _objectSpread$Z(_objectSpread$Z({}, selection), {}, {
17497
+ selection = _objectSpread$_(_objectSpread$_({}, selection), {}, {
17493
17498
  atoms: filteredAtomsAndBonds.atoms,
17494
17499
  bonds: filteredAtomsAndBonds.bonds
17495
17500
  });
@@ -18189,8 +18194,8 @@ var createCopyOfSelected = function createCopyOfSelected(editor, point) {
18189
18194
  function _createForOfIteratorHelper$c(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$c(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
18190
18195
  function _unsupportedIterableToArray$c(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$c(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$c(o, minLen); }
18191
18196
  function _arrayLikeToArray$c(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18192
- function ownKeys$Y(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18193
- function _objectSpread$Y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Y(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18197
+ function ownKeys$Z(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18198
+ function _objectSpread$Z(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Z(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Z(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18194
18199
  function _classPrivateFieldInitSpec$1(obj, privateMap, value) { _checkPrivateRedeclaration$1(obj, privateMap); privateMap.set(obj, value); }
18195
18200
  function _checkPrivateRedeclaration$1(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
18196
18201
  var Direction;
@@ -18238,7 +18243,7 @@ var SelectTool = function () {
18238
18243
  var molecule = ctab.molecule;
18239
18244
  var map = getMapsForClosestItem(_classPrivateFieldGet(this, _lassoHelper).fragment || event.altKey);
18240
18245
  var ci = this.editor.findItem(event, map, null);
18241
- var selected = _objectSpread$Y(_objectSpread$Y({}, (ci === null || ci === void 0 ? void 0 : ci.map) === 'atoms' && {
18246
+ var selected = _objectSpread$Z(_objectSpread$Z({}, (ci === null || ci === void 0 ? void 0 : ci.map) === 'atoms' && {
18242
18247
  atoms: [ci.id]
18243
18248
  }), (ci === null || ci === void 0 ? void 0 : ci.map) === 'bonds' && {
18244
18249
  bonds: [ci.id]
@@ -18525,7 +18530,7 @@ var SelectTool = function () {
18525
18530
  } else if (ci.map === 'texts') {
18526
18531
  editor.selection(closestToSel(ci));
18527
18532
  var text = molecule.texts.get(ci.id);
18528
- var dialog = editor.event.elementEdit.dispatch(_objectSpread$Y(_objectSpread$Y({}, text), {}, {
18533
+ var dialog = editor.event.elementEdit.dispatch(_objectSpread$Z(_objectSpread$Z({}, text), {}, {
18529
18534
  type: 'text'
18530
18535
  }));
18531
18536
  dialog.then(function (_ref) {
@@ -18631,28 +18636,28 @@ var SelectTool = function () {
18631
18636
  var render = this.editor.render;
18632
18637
  if (closeEdges.includes(Direction.RIGHT)) {
18633
18638
  render.setViewBox(function (prev) {
18634
- return _objectSpread$Y(_objectSpread$Y({}, prev), {}, {
18639
+ return _objectSpread$Z(_objectSpread$Z({}, prev), {}, {
18635
18640
  minX: prev.minX + MOVE_STEP
18636
18641
  });
18637
18642
  });
18638
18643
  }
18639
18644
  if (closeEdges.includes(Direction.LEFT)) {
18640
18645
  render.setViewBox(function (prev) {
18641
- return _objectSpread$Y(_objectSpread$Y({}, prev), {}, {
18646
+ return _objectSpread$Z(_objectSpread$Z({}, prev), {}, {
18642
18647
  minX: prev.minX - MOVE_STEP
18643
18648
  });
18644
18649
  });
18645
18650
  }
18646
18651
  if (closeEdges.includes(Direction.DOWN)) {
18647
18652
  render.setViewBox(function (prev) {
18648
- return _objectSpread$Y(_objectSpread$Y({}, prev), {}, {
18653
+ return _objectSpread$Z(_objectSpread$Z({}, prev), {}, {
18649
18654
  minY: prev.minY + MOVE_STEP
18650
18655
  });
18651
18656
  });
18652
18657
  }
18653
18658
  if (closeEdges.includes(Direction.TOP)) {
18654
18659
  render.setViewBox(function (prev) {
18655
- return _objectSpread$Y(_objectSpread$Y({}, prev), {}, {
18660
+ return _objectSpread$Z(_objectSpread$Z({}, prev), {}, {
18656
18661
  minY: prev.minY - MOVE_STEP
18657
18662
  });
18658
18663
  });
@@ -18862,8 +18867,8 @@ var TemplatePreview = function () {
18862
18867
  function _createForOfIteratorHelper$b(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$b(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
18863
18868
  function _unsupportedIterableToArray$b(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$b(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$b(o, minLen); }
18864
18869
  function _arrayLikeToArray$b(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
18865
- function ownKeys$X(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18866
- function _objectSpread$X(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$X(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$X(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18870
+ function ownKeys$Y(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
18871
+ function _objectSpread$Y(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Y(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Y(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
18867
18872
  function getBondFlipSign(struct, bond) {
18868
18873
  var _struct$atoms$get, _struct$halfBonds$get;
18869
18874
  var xy0 = new Vec2();
@@ -19026,7 +19031,7 @@ var TemplateTool = function () {
19026
19031
  this.event = event;
19027
19032
  (_this$templatePreview = this.templatePreview) === null || _this$templatePreview === void 0 || _this$templatePreview.hidePreview();
19028
19033
  if (this.functionalGroups.size) {
19029
- this.targetGroupsIds = getGroupIdsFromItemArrays(this.struct, _objectSpread$X(_objectSpread$X({}, ((_this$closestItem2 = this.closestItem) === null || _this$closestItem2 === void 0 ? void 0 : _this$closestItem2.map) === 'atoms' && {
19034
+ this.targetGroupsIds = getGroupIdsFromItemArrays(this.struct, _objectSpread$Y(_objectSpread$Y({}, ((_this$closestItem2 = this.closestItem) === null || _this$closestItem2 === void 0 ? void 0 : _this$closestItem2.map) === 'atoms' && {
19030
19035
  atoms: [this.closestItem.id]
19031
19036
  }), ((_this$closestItem3 = this.closestItem) === null || _this$closestItem3 === void 0 ? void 0 : _this$closestItem3.map) === 'bonds' && {
19032
19037
  bonds: [this.closestItem.id]
@@ -19375,8 +19380,8 @@ function getTargetAtomId(struct, ci) {
19375
19380
  }
19376
19381
  }
19377
19382
 
19378
- function ownKeys$W(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19379
- function _objectSpread$W(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$W(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$W(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19383
+ function ownKeys$X(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
19384
+ function _objectSpread$X(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$X(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$X(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
19380
19385
  function handleHotkeyOverItem(props) {
19381
19386
  if (props.newAction.tool === 'eraser') {
19382
19387
  handleEraser(props);
@@ -19600,7 +19605,7 @@ function handleAtomTool(_ref10) {
19600
19605
  var hoveredItemId = _ref10.hoveredItemId,
19601
19606
  newAction = _ref10.newAction,
19602
19607
  editor = _ref10.editor;
19603
- var atomProps = _objectSpread$W({}, newAction.opts);
19608
+ var atomProps = _objectSpread$X({}, newAction.opts);
19604
19609
  var updatedAtoms = fromAtomsAttrs(editor.render.ctab, hoveredItemId, atomProps, true);
19605
19610
  editor.update(updatedAtoms);
19606
19611
  }
@@ -19608,7 +19613,7 @@ function handleSgroupsTool(_ref11) {
19608
19613
  var hoveredItemId = _ref11.hoveredItemId,
19609
19614
  newAction = _ref11.newAction,
19610
19615
  editor = _ref11.editor;
19611
- var atomProps = _objectSpread$W({}, newAction.opts);
19616
+ var atomProps = _objectSpread$X({}, newAction.opts);
19612
19617
  var action = new Action();
19613
19618
  var ctab = editor.render.ctab;
19614
19619
  var sGroup = ctab.molecule.sgroups.get(hoveredItemId);
@@ -19885,7 +19890,7 @@ function checkGroupOnTool(group, actionTool) {
19885
19890
  return index;
19886
19891
  }
19887
19892
  var rxnTextPlain = /\$RXN\n+\s+0\s+0\s+0\n*/;
19888
- function initClipboard(dispatch) {
19893
+ function initClipboard(dispatch, getState) {
19889
19894
  var formats = Object.keys(formatProperties).map(function (format) {
19890
19895
  return formatProperties[format].mime;
19891
19896
  });
@@ -19898,11 +19903,11 @@ function initClipboard(dispatch) {
19898
19903
  return {
19899
19904
  formats: formats,
19900
19905
  focused: function focused() {
19901
- var state = global.currentState;
19906
+ var state = getState();
19902
19907
  return !state.modal;
19903
19908
  },
19904
19909
  onLegacyCut: function onLegacyCut() {
19905
- var state = global.currentState;
19910
+ var state = getState();
19906
19911
  var editor = state.editor;
19907
19912
  var data = legacyClipData(editor);
19908
19913
  if (data) debAction({
@@ -19913,38 +19918,38 @@ function initClipboard(dispatch) {
19913
19918
  },
19914
19919
  onCut: function onCut() {
19915
19920
  return _asyncToGenerator( _regeneratorRuntime.mark(function _callee2() {
19916
- var ketcherInstance, result;
19921
+ var state, ketcherInstance, result;
19917
19922
  return _regeneratorRuntime.wrap(function _callee2$(_context2) {
19918
19923
  while (1) switch (_context2.prev = _context2.next) {
19919
19924
  case 0:
19920
- ketcherInstance = ketcherProvider.getKetcher();
19921
- _context2.next = 3;
19925
+ state = getState();
19926
+ ketcherInstance = ketcherProvider.getKetcher(state.editor.ketcherId);
19927
+ _context2.next = 4;
19922
19928
  return runAsyncAction( _asyncToGenerator( _regeneratorRuntime.mark(function _callee() {
19923
- var state, editor, data;
19929
+ var editor, data;
19924
19930
  return _regeneratorRuntime.wrap(function _callee$(_context) {
19925
19931
  while (1) switch (_context.prev = _context.next) {
19926
19932
  case 0:
19927
- state = global.currentState;
19928
- editor = state.editor;
19929
- _context.next = 4;
19933
+ editor = getState().editor;
19934
+ _context.next = 3;
19930
19935
  return clipData(editor);
19931
- case 4:
19936
+ case 3:
19932
19937
  data = _context.sent;
19933
19938
  if (data) debAction({
19934
19939
  tool: 'eraser',
19935
19940
  opts: 1
19936
19941
  });else editor.selection(null);
19937
19942
  return _context.abrupt("return", data);
19938
- case 7:
19943
+ case 6:
19939
19944
  case "end":
19940
19945
  return _context.stop();
19941
19946
  }
19942
19947
  }, _callee);
19943
19948
  })), ketcherInstance.eventBus);
19944
- case 3:
19949
+ case 4:
19945
19950
  result = _context2.sent;
19946
19951
  return _context2.abrupt("return", result);
19947
- case 5:
19952
+ case 6:
19948
19953
  case "end":
19949
19954
  return _context2.stop();
19950
19955
  }
@@ -19953,35 +19958,35 @@ function initClipboard(dispatch) {
19953
19958
  },
19954
19959
  onCopy: function onCopy() {
19955
19960
  return _asyncToGenerator( _regeneratorRuntime.mark(function _callee4() {
19956
- var ketcherInstance, result;
19961
+ var state, ketcherInstance, result;
19957
19962
  return _regeneratorRuntime.wrap(function _callee4$(_context4) {
19958
19963
  while (1) switch (_context4.prev = _context4.next) {
19959
19964
  case 0:
19960
- ketcherInstance = ketcherProvider.getKetcher();
19961
- _context4.next = 3;
19965
+ state = getState();
19966
+ ketcherInstance = ketcherProvider.getKetcher(state.editor.ketcherId);
19967
+ _context4.next = 4;
19962
19968
  return runAsyncAction( _asyncToGenerator( _regeneratorRuntime.mark(function _callee3() {
19963
- var state, editor, data;
19969
+ var editor, data;
19964
19970
  return _regeneratorRuntime.wrap(function _callee3$(_context3) {
19965
19971
  while (1) switch (_context3.prev = _context3.next) {
19966
19972
  case 0:
19967
- state = global.currentState;
19968
- editor = state.editor;
19969
- _context3.next = 4;
19973
+ editor = getState().editor;
19974
+ _context3.next = 3;
19970
19975
  return clipData(editor);
19971
- case 4:
19976
+ case 3:
19972
19977
  data = _context3.sent;
19973
19978
  editor.selection(null);
19974
19979
  return _context3.abrupt("return", data);
19975
- case 7:
19980
+ case 6:
19976
19981
  case "end":
19977
19982
  return _context3.stop();
19978
19983
  }
19979
19984
  }, _callee3);
19980
19985
  })), ketcherInstance.eventBus);
19981
- case 3:
19986
+ case 4:
19982
19987
  result = _context4.sent;
19983
19988
  return _context4.abrupt("return", result);
19984
- case 5:
19989
+ case 6:
19985
19990
  case "end":
19986
19991
  return _context4.stop();
19987
19992
  }
@@ -19990,12 +19995,13 @@ function initClipboard(dispatch) {
19990
19995
  },
19991
19996
  onPaste: function onPaste(data, isSmarts) {
19992
19997
  return _asyncToGenerator( _regeneratorRuntime.mark(function _callee6() {
19993
- var ketcherInstance, result;
19998
+ var state, ketcherInstance, result;
19994
19999
  return _regeneratorRuntime.wrap(function _callee6$(_context6) {
19995
20000
  while (1) switch (_context6.prev = _context6.next) {
19996
20001
  case 0:
19997
- ketcherInstance = ketcherProvider.getKetcher();
19998
- _context6.next = 3;
20002
+ state = getState();
20003
+ ketcherInstance = ketcherProvider.getKetcher(state.editor.ketcherId);
20004
+ _context6.next = 4;
19999
20005
  return runAsyncAction( _asyncToGenerator( _regeneratorRuntime.mark(function _callee5() {
20000
20006
  var structStr;
20001
20007
  return _regeneratorRuntime.wrap(function _callee5$(_context5) {
@@ -20025,10 +20031,10 @@ function initClipboard(dispatch) {
20025
20031
  }
20026
20032
  }, _callee5);
20027
20033
  })), ketcherInstance.eventBus);
20028
- case 3:
20034
+ case 4:
20029
20035
  result = _context6.sent;
20030
20036
  return _context6.abrupt("return", result);
20031
- case 5:
20037
+ case 6:
20032
20038
  case "end":
20033
20039
  return _context6.stop();
20034
20040
  }
@@ -20088,9 +20094,9 @@ function _clipData() {
20088
20094
  _context7.prev = 5;
20089
20095
  serializer = new KetSerializer();
20090
20096
  ket = serializer.serialize(struct);
20091
- ketcherInstance = ketcherProvider.getKetcher();
20097
+ ketcherInstance = ketcherProvider.getKetcher(editor.ketcherId);
20092
20098
  _context7.next = 11;
20093
- return getStructure(SupportedFormat.molAuto, ketcherInstance.formatterFactory, struct);
20099
+ return getStructure(editor.ketcherId, SupportedFormat.molAuto, ketcherInstance.formatterFactory, struct);
20094
20100
  case 11:
20095
20101
  data = _context7.sent;
20096
20102
  res[ChemicalMimeType.KET] = ket;
@@ -20190,8 +20196,8 @@ var LoadingCircles = function LoadingCircles() {
20190
20196
  });
20191
20197
  };
20192
20198
 
20193
- function ownKeys$V(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20194
- function _objectSpread$V(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$V(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$V(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20199
+ function ownKeys$W(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
20200
+ function _objectSpread$W(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$W(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$W(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
20195
20201
  function _createForOfIteratorHelper$a(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$a(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
20196
20202
  function _unsupportedIterableToArray$a(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$a(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$a(o, minLen); }
20197
20203
  function _arrayLikeToArray$a(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
@@ -20583,7 +20589,7 @@ function findClosestItem(restruct, pos, maps, skip, options) {
20583
20589
  var minDist = res ? res.dist : null;
20584
20590
  var item = findMaps[mp](restruct, pos, skip, minDist, options);
20585
20591
  if (item !== null) {
20586
- var enrichedItem = _objectSpread$V({
20592
+ var enrichedItem = _objectSpread$W({
20587
20593
  map: mp
20588
20594
  }, item);
20589
20595
  if (mp === 'sgroupData') {
@@ -21950,8 +21956,8 @@ var EraserTool = function () {
21950
21956
  return EraserTool;
21951
21957
  }();
21952
21958
 
21953
- function ownKeys$U(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21954
- function _objectSpread$U(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$U(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$U(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21959
+ function ownKeys$V(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
21960
+ function _objectSpread$V(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$V(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$V(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
21955
21961
  var HandTool = function () {
21956
21962
  function HandTool(editor) {
21957
21963
  _classCallCheck$2(this, HandTool);
@@ -21996,7 +22002,7 @@ var HandTool = function () {
21996
22002
  var diff = Vec2.diff(this.endPos, this.begPos).scaled(1 / rnd.options.zoom);
21997
22003
  this.begPos = this.endPos;
21998
22004
  rnd.setViewBox(function (prev) {
21999
- return _objectSpread$U(_objectSpread$U({}, prev), {}, {
22005
+ return _objectSpread$V(_objectSpread$V({}, prev), {}, {
22000
22006
  minX: prev.minX - diff.x,
22001
22007
  minY: prev.minY - diff.y
22002
22008
  });
@@ -22039,8 +22045,8 @@ var HandTool = function () {
22039
22045
  return HandTool;
22040
22046
  }();
22041
22047
 
22042
- function ownKeys$T(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22043
- function _objectSpread$T(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$T(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$T(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22048
+ function ownKeys$U(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22049
+ function _objectSpread$U(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$U(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$U(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22044
22050
  var isMovePreviewCalculationInProgress = false;
22045
22051
  var debouncedSetAndHoverMergeItems = debounce$1(function (editor, pasteItems, pasteToolInstance) {
22046
22052
  var needResetTool = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
@@ -22173,7 +22179,7 @@ var PasteTool = function () {
22173
22179
  }, {
22174
22180
  key: "mouseup",
22175
22181
  value: function mouseup() {
22176
- var idsOfItemsMerged = this.mergeItems && _objectSpread$T(_objectSpread$T({}, this.mergeItems.atoms && {
22182
+ var idsOfItemsMerged = this.mergeItems && _objectSpread$U(_objectSpread$U({}, this.mergeItems.atoms && {
22177
22183
  atoms: Array.from(this.mergeItems.atoms.values())
22178
22184
  }), this.mergeItems.bonds && {
22179
22185
  bonds: Array.from(this.mergeItems.bonds.values())
@@ -22200,6 +22206,7 @@ var PasteTool = function () {
22200
22206
  if (!this.isSingleContractedGroup || !this.mergeItems) {
22201
22207
  dropAndMerge(this.editor, this.mergeItems, action);
22202
22208
  }
22209
+ this.editor.tool('select');
22203
22210
  }
22204
22211
  }
22205
22212
  }, {
@@ -22470,8 +22477,8 @@ var RGroupFragmentTool = function () {
22470
22477
  return RGroupFragmentTool;
22471
22478
  }();
22472
22479
 
22473
- function ownKeys$S(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22474
- function _objectSpread$S(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$S(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$S(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22480
+ function ownKeys$T(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22481
+ function _objectSpread$T(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$T(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$T(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22475
22482
  var ReactionArrowAddTool = function () {
22476
22483
  function ReactionArrowAddTool(editor, mode) {
22477
22484
  _classCallCheck$2(this, ReactionArrowAddTool);
@@ -22506,7 +22513,7 @@ var ReactionArrowAddTool = function () {
22506
22513
  var diff = current.sub(this.dragCtx.p0);
22507
22514
  if (!this.dragCtx.action) {
22508
22515
  var action = fromArrowAddition(this.reStruct, [this.dragCtx.p0, this.dragCtx.p0], this.mode);
22509
- this.dragCtx = _objectSpread$S(_objectSpread$S({}, this.dragCtx), {}, {
22516
+ this.dragCtx = _objectSpread$T(_objectSpread$T({}, this.dragCtx), {}, {
22510
22517
  itemId: action.operations[0].data.id,
22511
22518
  action: action
22512
22519
  });
@@ -22550,7 +22557,7 @@ var ReactionArrowAddTool = function () {
22550
22557
  p1 = _item$pos[1];
22551
22558
  p1 = this.getArrowWithMinimalLengthEnd(p0, p1);
22552
22559
  this.editor.update(fromArrowDeletion(this.reStruct, dragContext.itemId), true);
22553
- return _objectSpread$S(_objectSpread$S({}, dragContext), {}, {
22560
+ return _objectSpread$T(_objectSpread$T({}, dragContext), {}, {
22554
22561
  action: fromArrowAddition(this.reStruct, [p0, p1], this.mode)
22555
22562
  });
22556
22563
  }
@@ -22929,8 +22936,8 @@ function normalizeAngle(angle) {
22929
22936
  return angleWithinFullCircle;
22930
22937
  }
22931
22938
 
22932
- function ownKeys$R(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22933
- function _objectSpread$R(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$R(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$R(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22939
+ function ownKeys$S(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
22940
+ function _objectSpread$S(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$S(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$S(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
22934
22941
  var SNAP_ANGLES_RELATIVE_TO_FIXED_BOND = [Math.PI / 2, -Math.PI / 2, 2 * Math.PI / 3, -(2 * Math.PI) / 3, Math.PI];
22935
22942
  var MAX_SNAP_DELTA = Math.PI / 18;
22936
22943
  var ANGLE_INDICATOR_VISIBLE_DELTA = Math.PI / 9;
@@ -23007,7 +23014,7 @@ var RotateTool = function () {
23007
23014
  get: function get() {
23008
23015
  var _this$snapInfo;
23009
23016
  if ((_this$snapInfo = this.snapInfo) !== null && _this$snapInfo !== void 0 && _this$snapInfo.snapAngleDrawingProps) {
23010
- return _objectSpread$R({
23017
+ return _objectSpread$S({
23011
23018
  snapMode: this.snapInfo.snapMode
23012
23019
  }, this.snapInfo.snapAngleDrawingProps);
23013
23020
  }
@@ -24545,8 +24552,8 @@ var RotateController = function () {
24545
24552
  return RotateController;
24546
24553
  }();
24547
24554
 
24548
- function ownKeys$Q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
24549
- function _objectSpread$Q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Q(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24555
+ function ownKeys$R(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
24556
+ function _objectSpread$R(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$R(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$R(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
24550
24557
  function _classPrivateFieldInitSpec(obj, privateMap, value) { _checkPrivateRedeclaration(obj, privateMap); privateMap.set(obj, value); }
24551
24558
  function _checkPrivateRedeclaration(obj, privateCollection) { if (privateCollection.has(obj)) { throw new TypeError("Cannot initialize the same private elements twice on an object"); } }
24552
24559
  var SCALE = provideEditorSettings().microModeScale;
@@ -24578,7 +24585,7 @@ function selectStereoFlagsIfNecessary(atoms, explicitlySelectedAtoms) {
24578
24585
  }
24579
24586
  var _origin = new WeakMap();
24580
24587
  var Editor$3 = function () {
24581
- function Editor(clientArea, options, serverSettings) {
24588
+ function Editor(ketcherId, clientArea, options, serverSettings, prevEditor) {
24582
24589
  _classCallCheck$2(this, Editor);
24583
24590
  _classPrivateFieldInitSpec(this, _origin, {
24584
24591
  writable: true,
@@ -24587,7 +24594,8 @@ var Editor$3 = function () {
24587
24594
  _defineProperty$1(this, "serverSettings", {});
24588
24595
  this.render = new Render(clientArea, Object.assign({
24589
24596
  microModeScale: SCALE
24590
- }, options), options.reuseRestructIfExist !== false);
24597
+ }, options), prevEditor === null || prevEditor === void 0 ? void 0 : prevEditor.render, options.reuseRestructIfExist !== false);
24598
+ this.ketcherId = ketcherId;
24591
24599
  this._selection = null;
24592
24600
  this._tool = null;
24593
24601
  this.historyStack = [];
@@ -24730,7 +24738,7 @@ var Editor$3 = function () {
24730
24738
  key: "setOptions",
24731
24739
  value: function setOptions(opts) {
24732
24740
  var options = JSON.parse(opts);
24733
- this.event.apiSettings.dispatch(_objectSpread$Q({}, options));
24741
+ this.event.apiSettings.dispatch(_objectSpread$R({}, options));
24734
24742
  var wasViewOnlyEnabled = !!this.render.options.viewOnlyMode;
24735
24743
  var result = this.render.updateOptions(opts);
24736
24744
  this.updateToolAfterOptionsChange(wasViewOnlyEnabled);
@@ -24768,7 +24776,7 @@ var Editor$3 = function () {
24768
24776
  if (!wasViewOnlyEnabled && isViewOnlyEnabled === true || wasViewOnlyEnabled && isViewOnlyEnabled === false) {
24769
24777
  this.tool('select');
24770
24778
  this.event.change.dispatch('force');
24771
- ketcherProvider.getKetcher().changeEvent.dispatch('force');
24779
+ ketcherProvider.getKetcher(this.ketcherId).changeEvent.dispatch('force');
24772
24780
  }
24773
24781
  }
24774
24782
  }, {
@@ -24802,7 +24810,7 @@ var Editor$3 = function () {
24802
24810
  var structBbox = struct.getCoordBoundingBox();
24803
24811
  var newScrollCoordinates = Coordinates.modelToCanvas(isFitMinZoom ? new Vec2(structBbox.min.x + (structBbox.max.x - structBbox.min.x) / 2, structBbox.min.y + (structBbox.max.y - structBbox.min.y) / 2) : new Vec2(structBbox.min.x, structBbox.min.y)).sub(new Vec2(this.render.viewBox.width / 2, this.render.viewBox.height / 2));
24804
24812
  this.render.setViewBox(function (viewBox) {
24805
- return _objectSpread$Q(_objectSpread$Q({}, viewBox), {}, {
24813
+ return _objectSpread$R(_objectSpread$R({}, viewBox), {}, {
24806
24814
  minX: newScrollCoordinates.x,
24807
24815
  minY: newScrollCoordinates.y
24808
24816
  });
@@ -24925,7 +24933,7 @@ var Editor$3 = function () {
24925
24933
  }
24926
24934
  this.historyPtr = this.historyStack.length;
24927
24935
  this.event.change.dispatch(action);
24928
- ketcherProvider.getKetcher().changeEvent.dispatch(action);
24936
+ ketcherProvider.getKetcher(this.ketcherId).changeEvent.dispatch(action);
24929
24937
  }
24930
24938
  this.render.update(false, null);
24931
24939
  }
@@ -24942,7 +24950,7 @@ var Editor$3 = function () {
24942
24950
  key: "undo",
24943
24951
  value: function undo() {
24944
24952
  KetcherLogger.log('Editor.undo(), start, ', this.historyPtr, this.historyStack);
24945
- var ketcherChangeEvent = ketcherProvider.getKetcher().changeEvent;
24953
+ var ketcherChangeEvent = ketcherProvider.getKetcher(this.ketcherId).changeEvent;
24946
24954
  if (this.historyPtr === 0) {
24947
24955
  throw new Error('Undo stack is empty');
24948
24956
  }
@@ -24968,7 +24976,7 @@ var Editor$3 = function () {
24968
24976
  key: "redo",
24969
24977
  value: function redo() {
24970
24978
  KetcherLogger.log('Editor.redo(), start, ', this.historyPtr, this.historyStack);
24971
- var ketcherChangeEvent = ketcherProvider.getKetcher().changeEvent;
24979
+ var ketcherChangeEvent = ketcherProvider.getKetcher(this.ketcherId).changeEvent;
24972
24980
  if (this.historyPtr === this.historyStack.length) {
24973
24981
  throw new Error('Redo stack is empty');
24974
24982
  }
@@ -25013,7 +25021,7 @@ var Editor$3 = function () {
25013
25021
  return customOnChangeHandler(action, handler);
25014
25022
  };
25015
25023
  subscriber.handler = subscribeFuncWrapper;
25016
- ketcherProvider.getKetcher().changeEvent.add(subscribeFuncWrapper);
25024
+ ketcherProvider.getKetcher(this.ketcherId).changeEvent.add(subscribeFuncWrapper);
25017
25025
  break;
25018
25026
  }
25019
25027
  default:
@@ -25272,7 +25280,7 @@ var ContextMenuTriggerType;
25272
25280
 
25273
25281
  var useAtomEdit = function useAtomEdit() {
25274
25282
  var _useAppContext = useAppContext(),
25275
- getKetcherInstance = _useAppContext.getKetcherInstance;
25283
+ ketcherId = _useAppContext.ketcherId;
25276
25284
  var handler = useCallback( function () {
25277
25285
  var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(_ref) {
25278
25286
  var props, editor, molecule, atomIds, atoms, newAtom;
@@ -25280,7 +25288,7 @@ var useAtomEdit = function useAtomEdit() {
25280
25288
  while (1) switch (_context.prev = _context.next) {
25281
25289
  case 0:
25282
25290
  props = _ref.props;
25283
- editor = getKetcherInstance().editor;
25291
+ editor = ketcherProvider.getKetcher(ketcherId).editor;
25284
25292
  molecule = editor.render.ctab;
25285
25293
  atomIds = (props === null || props === void 0 ? void 0 : props.atomIds) || [];
25286
25294
  atoms = mapAtomIdsToAtoms(atomIds, molecule);
@@ -25299,7 +25307,7 @@ var useAtomEdit = function useAtomEdit() {
25299
25307
  return function (_x) {
25300
25308
  return _ref2.apply(this, arguments);
25301
25309
  };
25302
- }(), [getKetcherInstance]);
25310
+ }(), [ketcherId]);
25303
25311
  var disabled = useCallback(function (_ref3) {
25304
25312
  var props = _ref3.props;
25305
25313
  var atomIds = props === null || props === void 0 ? void 0 : props.atomIds;
@@ -25335,7 +25343,7 @@ function onlyHasProperty(checkedObject, key) {
25335
25343
 
25336
25344
  var useAtomStereo = function useAtomStereo() {
25337
25345
  var _useAppContext = useAppContext(),
25338
- getKetcherInstance = _useAppContext.getKetcherInstance;
25346
+ ketcherId = _useAppContext.ketcherId;
25339
25347
  var stereoAtomIdsRef = useRef();
25340
25348
  var handler = useCallback( function () {
25341
25349
  var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(_ref) {
@@ -25350,7 +25358,7 @@ var useAtomStereo = function useAtomStereo() {
25350
25358
  }
25351
25359
  return _context.abrupt("return");
25352
25360
  case 3:
25353
- editor = getKetcherInstance().editor;
25361
+ editor = ketcherProvider.getKetcher(ketcherId).editor;
25354
25362
  _context.prev = 4;
25355
25363
  _context.next = 7;
25356
25364
  return EnhancedStereoTool.changeAtomsStereoAction(editor, stereoAtomIdsRef.current);
@@ -25372,23 +25380,23 @@ var useAtomStereo = function useAtomStereo() {
25372
25380
  return function (_x) {
25373
25381
  return _ref2.apply(this, arguments);
25374
25382
  };
25375
- }(), [getKetcherInstance]);
25383
+ }(), [ketcherId]);
25376
25384
  var disabled = useCallback(function (_ref3) {
25377
25385
  var props = _ref3.props;
25378
- var editor = getKetcherInstance().editor;
25386
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
25379
25387
  var stereoAtomIds = findStereoAtoms(editor.struct(), props === null || props === void 0 ? void 0 : props.atomIds);
25380
25388
  stereoAtomIdsRef.current = stereoAtomIds;
25381
25389
  if (Array.isArray(stereoAtomIds) && stereoAtomIds.length !== 0) {
25382
25390
  return false;
25383
25391
  }
25384
25392
  return true;
25385
- }, [getKetcherInstance]);
25393
+ }, [ketcherId]);
25386
25394
  return [handler, disabled];
25387
25395
  };
25388
25396
 
25389
25397
  var useDelete$1 = function useDelete() {
25390
25398
  var _useAppContext = useAppContext(),
25391
- getKetcherInstance = _useAppContext.getKetcherInstance;
25399
+ ketcherId = _useAppContext.ketcherId;
25392
25400
  var handler = useCallback( function () {
25393
25401
  var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(_ref) {
25394
25402
  var props, editor, molecule, itemsToDelete, action;
@@ -25396,7 +25404,7 @@ var useDelete$1 = function useDelete() {
25396
25404
  while (1) switch (_context.prev = _context.next) {
25397
25405
  case 0:
25398
25406
  props = _ref.props;
25399
- editor = getKetcherInstance().editor;
25407
+ editor = ketcherProvider.getKetcher(ketcherId).editor;
25400
25408
  molecule = editor.render.ctab;
25401
25409
  itemsToDelete = editor.selection() || {
25402
25410
  bonds: props === null || props === void 0 ? void 0 : props.bondIds,
@@ -25415,7 +25423,7 @@ var useDelete$1 = function useDelete() {
25415
25423
  return function (_x) {
25416
25424
  return _ref2.apply(this, arguments);
25417
25425
  };
25418
- }(), [getKetcherInstance]);
25426
+ }(), [ketcherId]);
25419
25427
  return handler;
25420
25428
  };
25421
25429
 
@@ -25464,7 +25472,7 @@ function ButtonGroup(_ref) {
25464
25472
 
25465
25473
  var useAddAttachmentPoint = function useAddAttachmentPoint() {
25466
25474
  var _useAppContext = useAppContext(),
25467
- getKetcherInstance = _useAppContext.getKetcherInstance;
25475
+ ketcherId = _useAppContext.ketcherId;
25468
25476
  var handler = useCallback( function () {
25469
25477
  var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(_ref) {
25470
25478
  var _props$atomIds;
@@ -25473,7 +25481,7 @@ var useAddAttachmentPoint = function useAddAttachmentPoint() {
25473
25481
  while (1) switch (_context.prev = _context.next) {
25474
25482
  case 0:
25475
25483
  props = _ref.props;
25476
- editor = getKetcherInstance().editor;
25484
+ editor = ketcherProvider.getKetcher(ketcherId).editor;
25477
25485
  restruct = editor.render.ctab;
25478
25486
  struct = editor.struct();
25479
25487
  atomId = props === null || props === void 0 || (_props$atomIds = props.atomIds) === null || _props$atomIds === void 0 ? void 0 : _props$atomIds[0];
@@ -25549,13 +25557,13 @@ var useAddAttachmentPoint = function useAddAttachmentPoint() {
25549
25557
  return function (_x) {
25550
25558
  return _ref2.apply(this, arguments);
25551
25559
  };
25552
- }(), [getKetcherInstance]);
25560
+ }(), [ketcherId]);
25553
25561
  return [handler];
25554
25562
  };
25555
25563
 
25556
25564
  var useRemoveAttachmentPoint = function useRemoveAttachmentPoint() {
25557
25565
  var _useAppContext = useAppContext(),
25558
- getKetcherInstance = _useAppContext.getKetcherInstance;
25566
+ ketcherId = _useAppContext.ketcherId;
25559
25567
  var handler = useCallback( function () {
25560
25568
  var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(_ref) {
25561
25569
  var _props$atomIds;
@@ -25564,7 +25572,7 @@ var useRemoveAttachmentPoint = function useRemoveAttachmentPoint() {
25564
25572
  while (1) switch (_context.prev = _context.next) {
25565
25573
  case 0:
25566
25574
  props = _ref.props;
25567
- editor = getKetcherInstance().editor;
25575
+ editor = ketcherProvider.getKetcher(ketcherId).editor;
25568
25576
  restruct = editor.render.ctab;
25569
25577
  struct = editor.struct();
25570
25578
  atomId = props === null || props === void 0 || (_props$atomIds = props.atomIds) === null || _props$atomIds === void 0 ? void 0 : _props$atomIds[0];
@@ -25596,7 +25604,7 @@ var useRemoveAttachmentPoint = function useRemoveAttachmentPoint() {
25596
25604
  return function (_x) {
25597
25605
  return _ref2.apply(this, arguments);
25598
25606
  };
25599
- }(), [getKetcherInstance]);
25607
+ }(), [ketcherId]);
25600
25608
  return [handler];
25601
25609
  };
25602
25610
 
@@ -25673,8 +25681,8 @@ var HighlightMenu = function HighlightMenu(_ref) {
25673
25681
  function _createForOfIteratorHelper$1(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
25674
25682
  function _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }
25675
25683
  function _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
25676
- function ownKeys$P(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25677
- function _objectSpread$P(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$P(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$P(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25684
+ function ownKeys$Q(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
25685
+ function _objectSpread$Q(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$Q(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$Q(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
25678
25686
  var _atom$properties = atom.properties,
25679
25687
  ringBondCount = _atom$properties.ringBondCount,
25680
25688
  hCount = _atom$properties.hCount,
@@ -25757,8 +25765,9 @@ var AtomMenuItems = function AtomMenuItems(props) {
25757
25765
  stereoDisabled = _useAtomStereo2[1];
25758
25766
  var handleDelete = useDelete$1();
25759
25767
  var _useAppContext = useAppContext(),
25760
- getKetcherInstance = _useAppContext.getKetcherInstance;
25761
- var editor = getKetcherInstance().editor;
25768
+ ketcherId = _useAppContext.ketcherId;
25769
+ var ketcher = ketcherProvider.getKetcher(ketcherId);
25770
+ var editor = ketcher.editor;
25762
25771
  var struct = editor.struct();
25763
25772
  var getPropertyValue = function getPropertyValue(key) {
25764
25773
  var _props$propsFromTrigg;
@@ -25782,7 +25791,7 @@ var AtomMenuItems = function AtomMenuItems(props) {
25782
25791
  atoms: atomIds,
25783
25792
  editor: editor,
25784
25793
  changeAtomPromise: Promise.resolve(properties.includes(key) ? {
25785
- queryProperties: _objectSpread$P(_objectSpread$P({}, getPropertyValue('queryProperties')), {}, _defineProperty$1({}, key, value))
25794
+ queryProperties: _objectSpread$Q(_objectSpread$Q({}, getPropertyValue('queryProperties')), {}, _defineProperty$1({}, key, value))
25786
25795
  } : _defineProperty$1({}, key, value))
25787
25796
  });
25788
25797
  }
@@ -25835,21 +25844,21 @@ var AtomMenuItems = function AtomMenuItems(props) {
25835
25844
  return jsxs(Fragment, {
25836
25845
  children: [jsx(HighlightMenu, {
25837
25846
  onHighlight: highlightAtomWithColor
25838
- }), jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
25847
+ }), jsx(Item, _objectSpread$Q(_objectSpread$Q({}, props), {}, {
25839
25848
  onClick: handleDelete,
25840
25849
  children: "Delete"
25841
25850
  }))]
25842
25851
  });
25843
25852
  }
25844
25853
  return jsxs(Fragment, {
25845
- children: [jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
25854
+ children: [jsx(Item, _objectSpread$Q(_objectSpread$Q({}, props), {}, {
25846
25855
  onClick: handleEdit,
25847
25856
  children: (_props$propsFromTrigg7 = props.propsFromTrigger) !== null && _props$propsFromTrigg7 !== void 0 && _props$propsFromTrigg7.extraItemsSelected ? 'Edit selected atoms...' : 'Edit...'
25848
- })), jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
25857
+ })), jsx(Item, _objectSpread$Q(_objectSpread$Q({}, props), {}, {
25849
25858
  disabled: stereoDisabled,
25850
25859
  onClick: handleStereo,
25851
25860
  children: "Enhanced stereochemistry..."
25852
- })), jsx(Submenu, _objectSpread$P(_objectSpread$P({}, props), {}, {
25861
+ })), jsx(Submenu, _objectSpread$Q(_objectSpread$Q({}, props), {}, {
25853
25862
  label: "Query properties",
25854
25863
  style: {
25855
25864
  overflow: 'visible'
@@ -25858,7 +25867,7 @@ var AtomMenuItems = function AtomMenuItems(props) {
25858
25867
  var title = _ref2.title,
25859
25868
  buttons = _ref2.buttons,
25860
25869
  key = _ref2.key;
25861
- return createElement(Submenu, _objectSpread$P(_objectSpread$P({}, props), {}, {
25870
+ return createElement(Submenu, _objectSpread$Q(_objectSpread$Q({}, props), {}, {
25862
25871
  label: title,
25863
25872
  key: key,
25864
25873
  className: styles$f.sameGroup
@@ -25870,16 +25879,16 @@ var AtomMenuItems = function AtomMenuItems(props) {
25870
25879
  }
25871
25880
  }));
25872
25881
  })
25873
- })), onlyOneAtomSelected && !atomInSgroupWithLabel && !maxAttachmentPointsAmount && !isAtomSuperatomLeavingGroup && jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
25882
+ })), onlyOneAtomSelected && !atomInSgroupWithLabel && !maxAttachmentPointsAmount && !isAtomSuperatomLeavingGroup && jsx(Item, _objectSpread$Q(_objectSpread$Q({}, props), {}, {
25874
25883
  onClick: handleAddAttachmentPoint,
25875
25884
  disabled: isAddAttachmentPointDisabled,
25876
25885
  children: "Add attachment point"
25877
25886
  })), jsx(HighlightMenu, {
25878
25887
  onHighlight: highlightAtomWithColor
25879
- }), isAtomSuperatomAttachmentPoint && atomFreeAttachmentPoints.length > 0 && jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
25888
+ }), isAtomSuperatomAttachmentPoint && atomFreeAttachmentPoints.length > 0 && jsx(Item, _objectSpread$Q(_objectSpread$Q({}, props), {}, {
25880
25889
  onClick: handleRemoveAttachmentPoint,
25881
25890
  children: "Remove attachment point"
25882
- })), jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
25891
+ })), jsx(Item, _objectSpread$Q(_objectSpread$Q({}, props), {}, {
25883
25892
  onClick: handleDelete,
25884
25893
  children: "Delete"
25885
25894
  }))]
@@ -25888,7 +25897,7 @@ var AtomMenuItems = function AtomMenuItems(props) {
25888
25897
 
25889
25898
  var useBondEdit = function useBondEdit() {
25890
25899
  var _useAppContext = useAppContext(),
25891
- getKetcherInstance = _useAppContext.getKetcherInstance;
25900
+ ketcherId = _useAppContext.ketcherId;
25892
25901
  var handler = useCallback( function () {
25893
25902
  var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(_ref) {
25894
25903
  var props, editor, bondIds, molecule, bonds, changeBondPromise;
@@ -25896,7 +25905,7 @@ var useBondEdit = function useBondEdit() {
25896
25905
  while (1) switch (_context.prev = _context.next) {
25897
25906
  case 0:
25898
25907
  props = _ref.props;
25899
- editor = getKetcherInstance().editor;
25908
+ editor = ketcherProvider.getKetcher(ketcherId).editor;
25900
25909
  bondIds = (props === null || props === void 0 ? void 0 : props.bondIds) || [];
25901
25910
  molecule = editor.render.ctab;
25902
25911
  _context.prev = 4;
@@ -25925,7 +25934,7 @@ var useBondEdit = function useBondEdit() {
25925
25934
  return function (_x) {
25926
25935
  return _ref2.apply(this, arguments);
25927
25936
  };
25928
- }(), [getKetcherInstance]);
25937
+ }(), [ketcherId]);
25929
25938
  var disabled = useCallback(function (_ref3) {
25930
25939
  var props = _ref3.props;
25931
25940
  var selectedBondIds = props === null || props === void 0 ? void 0 : props.bondIds;
@@ -25939,10 +25948,10 @@ var useBondEdit = function useBondEdit() {
25939
25948
 
25940
25949
  var useBondSGroupAttach = function useBondSGroupAttach() {
25941
25950
  var _useAppContext = useAppContext(),
25942
- getKetcherInstance = _useAppContext.getKetcherInstance;
25951
+ ketcherId = _useAppContext.ketcherId;
25943
25952
  var handler = useCallback(function (_ref) {
25944
25953
  var props = _ref.props;
25945
- var editor = getKetcherInstance().editor;
25954
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
25946
25955
  var struct = editor.render.ctab;
25947
25956
  var bondId = props.bondIds[0];
25948
25957
  var bond = struct.bonds.get(bondId);
@@ -25952,11 +25961,11 @@ var useBondSGroupAttach = function useBondSGroupAttach() {
25952
25961
  };
25953
25962
  editor.selection(selection);
25954
25963
  SGroupTool.sgroupDialog(editor, null);
25955
- }, [getKetcherInstance]);
25964
+ }, [ketcherId]);
25956
25965
  var hidden = useCallback(function (_ref2) {
25957
25966
  var _struct$sgroups$get;
25958
25967
  var props = _ref2.props;
25959
- var editor = getKetcherInstance().editor;
25968
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
25960
25969
  var struct = editor.render.ctab;
25961
25970
  var bondIds = props.bondIds;
25962
25971
  if (bondIds.length > 1) {
@@ -25971,22 +25980,22 @@ var useBondSGroupAttach = function useBondSGroupAttach() {
25971
25980
  return false;
25972
25981
  }
25973
25982
  return attachedSGroups.size > 0;
25974
- }, [getKetcherInstance]);
25983
+ }, [ketcherId]);
25975
25984
  return [handler, hidden];
25976
25985
  };
25977
25986
 
25978
25987
  var useBondSGroupEdit = function useBondSGroupEdit() {
25979
25988
  var _useAppContext = useAppContext(),
25980
- getKetcherInstance = _useAppContext.getKetcherInstance;
25989
+ ketcherId = _useAppContext.ketcherId;
25981
25990
  var sGroupsRef = useRef(new Pile());
25982
25991
  var handler = useCallback(function () {
25983
- var editor = getKetcherInstance().editor;
25992
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
25984
25993
  var sGroups = Array.from(sGroupsRef.current);
25985
25994
  SGroupTool.sgroupDialog(editor, sGroups[0]);
25986
- }, [getKetcherInstance]);
25995
+ }, [ketcherId]);
25987
25996
  var disabled = useCallback(function (_ref) {
25988
25997
  var props = _ref.props;
25989
- var editor = getKetcherInstance().editor;
25998
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
25990
25999
  var struct = editor.render.ctab;
25991
26000
  var bondIds = props.bondIds;
25992
26001
  if (bondIds.length > 1) {
@@ -25995,10 +26004,10 @@ var useBondSGroupEdit = function useBondSGroupEdit() {
25995
26004
  var bond = struct.bonds.get(bondIds[0]);
25996
26005
  sGroupsRef.current = bond.b.getAttachedSGroups(struct.molecule);
25997
26006
  return sGroupsRef.current.size > 1;
25998
- }, [getKetcherInstance]);
26007
+ }, [ketcherId]);
25999
26008
  var hidden = useCallback(function () {
26000
26009
  var _struct$sgroups$get;
26001
- var editor = getKetcherInstance().editor;
26010
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26002
26011
  var struct = editor.render.ctab;
26003
26012
  var _sGroupsRef$current = _slicedToArray$1(sGroupsRef.current, 1),
26004
26013
  sgGroupId = _sGroupsRef$current[0];
@@ -26007,18 +26016,18 @@ var useBondSGroupEdit = function useBondSGroupEdit() {
26007
26016
  return true;
26008
26017
  }
26009
26018
  return sGroupsRef.current.size === 0;
26010
- }, [getKetcherInstance]);
26019
+ }, [ketcherId]);
26011
26020
  return [handler, disabled, hidden];
26012
26021
  };
26013
26022
 
26014
26023
  var useBondTypeChange = function useBondTypeChange() {
26015
26024
  var _useAppContext = useAppContext(),
26016
- getKetcherInstance = _useAppContext.getKetcherInstance;
26025
+ ketcherId = _useAppContext.ketcherId;
26017
26026
  var handler = useCallback(function (_ref) {
26018
26027
  var _molecule$bonds$get;
26019
26028
  var id = _ref.id,
26020
26029
  props = _ref.props;
26021
- var editor = getKetcherInstance().editor;
26030
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26022
26031
  var molecule = editor.render.ctab;
26023
26032
  var bondIds = (props === null || props === void 0 ? void 0 : props.bondIds) || [];
26024
26033
  var bondProps = tools[id].action.opts;
@@ -26029,11 +26038,11 @@ var useBondTypeChange = function useBondTypeChange() {
26029
26038
  bondProps.reactingCenterStatus = 0;
26030
26039
  }
26031
26040
  editor.update(fromBondsAttrs(molecule, bondIds, bondProps));
26032
- }, [getKetcherInstance]);
26041
+ }, [ketcherId]);
26033
26042
  var disabled = useCallback(function (_ref2) {
26034
26043
  var props = _ref2.props;
26035
26044
  var selectedBondIds = props === null || props === void 0 ? void 0 : props.bondIds;
26036
- var editor = getKetcherInstance().editor;
26045
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26037
26046
  if (Array.isArray(selectedBondIds) && selectedBondIds.length !== 0) {
26038
26047
  if (editor.struct().isBondFromMacromolecule(selectedBondIds[0])) {
26039
26048
  return true;
@@ -26047,10 +26056,10 @@ var useBondTypeChange = function useBondTypeChange() {
26047
26056
 
26048
26057
  var useChangeBondDirection = function useChangeBondDirection(props) {
26049
26058
  var _useAppContext = useAppContext(),
26050
- getKetcherInstance = _useAppContext.getKetcherInstance;
26059
+ ketcherId = _useAppContext.ketcherId;
26051
26060
  var changeDirection = function changeDirection() {
26052
- var _getKetcherInstance, _props$propsFromTrigg;
26053
- var editor = (_getKetcherInstance = getKetcherInstance()) === null || _getKetcherInstance === void 0 ? void 0 : _getKetcherInstance.editor;
26061
+ var _ketcherProvider$getK, _props$propsFromTrigg;
26062
+ var editor = (_ketcherProvider$getK = ketcherProvider.getKetcher(ketcherId)) === null || _ketcherProvider$getK === void 0 ? void 0 : _ketcherProvider$getK.editor;
26054
26063
  var bondIds = ((_props$propsFromTrigg = props.propsFromTrigger) === null || _props$propsFromTrigg === void 0 ? void 0 : _props$propsFromTrigg.bondIds) || [];
26055
26064
  var bondId = bondIds[0];
26056
26065
  var molecule = editor === null || editor === void 0 ? void 0 : editor.render.ctab.molecule;
@@ -26066,13 +26075,13 @@ var useChangeBondDirection = function useChangeBondDirection(props) {
26066
26075
  };
26067
26076
  };
26068
26077
 
26069
- function ownKeys$O(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26070
- function _objectSpread$O(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$O(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$O(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26078
+ function ownKeys$P(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26079
+ function _objectSpread$P(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$P(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$P(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26071
26080
  var nonQueryBondNames = getNonQueryBondNames(tools);
26072
26081
  var BondMenuItems = function BondMenuItems(props) {
26073
26082
  var _props$propsFromTrigg3;
26074
26083
  var _useAppContext = useAppContext(),
26075
- getKetcherInstance = _useAppContext.getKetcherInstance;
26084
+ ketcherId = _useAppContext.ketcherId;
26076
26085
  var _useState = useState(null),
26077
26086
  _useState2 = _slicedToArray$1(_useState, 2),
26078
26087
  bondData = _useState2[0],
@@ -26100,10 +26109,10 @@ var BondMenuItems = function BondMenuItems(props) {
26100
26109
  });
26101
26110
  var _useChangeBondDirecti = useChangeBondDirection(props),
26102
26111
  changeDirection = _useChangeBondDirecti.changeDirection;
26103
- var editor = getKetcherInstance().editor;
26112
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26104
26113
  useEffect(function () {
26105
- var _getKetcherInstance, _props$propsFromTrigg;
26106
- var editor = (_getKetcherInstance = getKetcherInstance()) === null || _getKetcherInstance === void 0 ? void 0 : _getKetcherInstance.editor;
26114
+ var _ketcherProvider$getK, _props$propsFromTrigg;
26115
+ var editor = (_ketcherProvider$getK = ketcherProvider.getKetcher(ketcherId)) === null || _ketcherProvider$getK === void 0 ? void 0 : _ketcherProvider$getK.editor;
26107
26116
  var bondIds = ((_props$propsFromTrigg = props.propsFromTrigger) === null || _props$propsFromTrigg === void 0 ? void 0 : _props$propsFromTrigg.bondIds) || [];
26108
26117
  if (bondIds.length > 0 && editor) {
26109
26118
  var bond = editor.render.ctab.molecule.bonds.get(bondIds[0]);
@@ -26116,7 +26125,7 @@ var BondMenuItems = function BondMenuItems(props) {
26116
26125
  setBondData(null);
26117
26126
  }
26118
26127
  }
26119
- }, [props.propsFromTrigger, getKetcherInstance]);
26128
+ }, [props.propsFromTrigger, ketcherId]);
26120
26129
  var highlightBondWithColor = function highlightBondWithColor(color) {
26121
26130
  var _props$propsFromTrigg2;
26122
26131
  var bondIds = ((_props$propsFromTrigg2 = props.propsFromTrigger) === null || _props$propsFromTrigg2 === void 0 ? void 0 : _props$propsFromTrigg2.bondIds) || [];
@@ -26129,14 +26138,14 @@ var BondMenuItems = function BondMenuItems(props) {
26129
26138
  };
26130
26139
  var shouldShowChangeDirection = bondData && (bondData.type === 9 && bondData.stereo === 0 || bondData.type === 1 && bondData.stereo === 1 || bondData.type === 1 && bondData.stereo === 6 || bondData.type === 1 && bondData.stereo === 4);
26131
26140
  return jsxs(Fragment, {
26132
- children: [jsx(Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
26141
+ children: [jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
26133
26142
  onClick: handleEdit,
26134
26143
  disabled: isDisabled,
26135
26144
  children: (_props$propsFromTrigg3 = props.propsFromTrigger) !== null && _props$propsFromTrigg3 !== void 0 && _props$propsFromTrigg3.extraItemsSelected ? 'Edit selected bonds...' : 'Edit...'
26136
26145
  })), bondNamesWithoutEmptyValue.map(function (name, i) {
26137
26146
  var iconName = getIconName(name);
26138
26147
  var classNames = styles$f.sameGroup + (i === bondNamesWithoutEmptyValue.length - 1 ? styles$f.devider : '');
26139
- return createElement(Item, _objectSpread$O(_objectSpread$O({
26148
+ return createElement(Item, _objectSpread$P(_objectSpread$P({
26140
26149
  className: classNames
26141
26150
  }, props), {}, {
26142
26151
  id: name,
@@ -26149,7 +26158,7 @@ var BondMenuItems = function BondMenuItems(props) {
26149
26158
  }), jsx("span", {
26150
26159
  children: formatTitle(tools[name].title)
26151
26160
  }));
26152
- }), jsx(Submenu, _objectSpread$O(_objectSpread$O({}, props), {}, {
26161
+ }), jsx(Submenu, _objectSpread$P(_objectSpread$P({}, props), {}, {
26153
26162
  label: "Query bonds",
26154
26163
  className: styles$f.subMenu,
26155
26164
  children: queryBondNames.map(function (name) {
@@ -26167,21 +26176,21 @@ var BondMenuItems = function BondMenuItems(props) {
26167
26176
  })]
26168
26177
  }, name);
26169
26178
  })
26170
- })), shouldShowChangeDirection && jsx(Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
26179
+ })), shouldShowChangeDirection && jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
26171
26180
  onClick: changeDirection,
26172
26181
  children: "Change direction"
26173
- })), jsx(Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
26182
+ })), jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
26174
26183
  hidden: sGroupAttachHidden,
26175
26184
  onClick: handleSGroupAttach,
26176
26185
  children: "Attach S-Group..."
26177
26186
  })), jsx(HighlightMenu, {
26178
26187
  onHighlight: highlightBondWithColor
26179
- }), jsx(Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
26188
+ }), jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
26180
26189
  hidden: sGroupEditHidden,
26181
26190
  disabled: sGroupEditDisabled,
26182
26191
  onClick: handleSGroupEdit,
26183
26192
  children: "Edit S-Group..."
26184
- })), jsx(Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
26193
+ })), jsx(Item, _objectSpread$P(_objectSpread$P({}, props), {}, {
26185
26194
  onClick: handleDelete,
26186
26195
  children: "Delete"
26187
26196
  }))]
@@ -26190,11 +26199,11 @@ var BondMenuItems = function BondMenuItems(props) {
26190
26199
 
26191
26200
  var useFunctionalGroupEoc = function useFunctionalGroupEoc() {
26192
26201
  var _useAppContext = useAppContext(),
26193
- getKetcherInstance = _useAppContext.getKetcherInstance;
26202
+ ketcherId = _useAppContext.ketcherId;
26194
26203
  var dispatch = useDispatch();
26195
26204
  var handler = useCallback(function (_ref, toExpand) {
26196
26205
  var props = _ref.props;
26197
- var editor = getKetcherInstance().editor;
26206
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26198
26207
  var molecule = editor.render.ctab;
26199
26208
  var selectedFunctionalGroups = props === null || props === void 0 ? void 0 : props.functionalGroups;
26200
26209
  var action = new Action();
@@ -26209,7 +26218,7 @@ var useFunctionalGroupEoc = function useFunctionalGroupEoc() {
26209
26218
  group: null,
26210
26219
  id: null
26211
26220
  });
26212
- }, [dispatch, getKetcherInstance]);
26221
+ }, [dispatch, ketcherId]);
26213
26222
  var hidden = useCallback(function (_ref2, toExpand) {
26214
26223
  var _props$functionalGrou;
26215
26224
  var props = _ref2.props;
@@ -26222,11 +26231,11 @@ var useFunctionalGroupEoc = function useFunctionalGroupEoc() {
26222
26231
 
26223
26232
  var useFunctionalGroupRemove = function useFunctionalGroupRemove() {
26224
26233
  var _useAppContext = useAppContext(),
26225
- getKetcherInstance = _useAppContext.getKetcherInstance;
26234
+ ketcherId = _useAppContext.ketcherId;
26226
26235
  var dispatch = useDispatch();
26227
26236
  var handler = useCallback(function (_ref) {
26228
26237
  var props = _ref.props;
26229
- var editor = getKetcherInstance().editor;
26238
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26230
26239
  var selectedFunctionalGroups = props === null || props === void 0 ? void 0 : props.functionalGroups;
26231
26240
  var action = new Action();
26232
26241
  selectedFunctionalGroups === null || selectedFunctionalGroups === void 0 || selectedFunctionalGroups.forEach(function (functionalGroup) {
@@ -26237,12 +26246,12 @@ var useFunctionalGroupRemove = function useFunctionalGroupRemove() {
26237
26246
  group: null,
26238
26247
  id: null
26239
26248
  });
26240
- }, [dispatch, getKetcherInstance]);
26249
+ }, [dispatch, ketcherId]);
26241
26250
  return handler;
26242
26251
  };
26243
26252
 
26244
- function ownKeys$N(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26245
- function _objectSpread$N(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$N(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$N(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26253
+ function ownKeys$O(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26254
+ function _objectSpread$O(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$O(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$O(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26246
26255
  var FunctionalGroupMenuItems = function FunctionalGroupMenuItems(props) {
26247
26256
  var _useFunctionalGroupEo = useFunctionalGroupEoc(),
26248
26257
  _useFunctionalGroupEo2 = _slicedToArray$1(_useFunctionalGroupEo, 2),
@@ -26250,7 +26259,7 @@ var FunctionalGroupMenuItems = function FunctionalGroupMenuItems(props) {
26250
26259
  ExpandOrContractHidden = _useFunctionalGroupEo2[1];
26251
26260
  var handleRemove = useFunctionalGroupRemove();
26252
26261
  return jsxs(Fragment, {
26253
- children: [jsx(Item, _objectSpread$N(_objectSpread$N({}, props), {}, {
26262
+ children: [jsx(Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
26254
26263
  hidden: function hidden(params) {
26255
26264
  return ExpandOrContractHidden(params, true);
26256
26265
  },
@@ -26258,7 +26267,7 @@ var FunctionalGroupMenuItems = function FunctionalGroupMenuItems(props) {
26258
26267
  return handleExpandOrContract(params, true);
26259
26268
  },
26260
26269
  children: "Expand Abbreviation"
26261
- })), jsx(Item, _objectSpread$N(_objectSpread$N({}, props), {}, {
26270
+ })), jsx(Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
26262
26271
  hidden: function hidden(params) {
26263
26272
  return ExpandOrContractHidden(params, false);
26264
26273
  },
@@ -26266,20 +26275,20 @@ var FunctionalGroupMenuItems = function FunctionalGroupMenuItems(props) {
26266
26275
  return handleExpandOrContract(params, false);
26267
26276
  },
26268
26277
  children: "Contract Abbreviation"
26269
- })), jsx(Item, _objectSpread$N(_objectSpread$N({}, props), {}, {
26278
+ })), jsx(Item, _objectSpread$O(_objectSpread$O({}, props), {}, {
26270
26279
  onClick: handleRemove,
26271
26280
  children: "Remove Abbreviation"
26272
26281
  }))]
26273
26282
  });
26274
26283
  };
26275
26284
 
26276
- function ownKeys$M(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26277
- function _objectSpread$M(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$M(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$M(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26285
+ function ownKeys$N(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26286
+ function _objectSpread$N(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$N(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$N(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26278
26287
  var bondNames = getBondNames(tools);
26279
26288
  var SelectionMenuItems = function SelectionMenuItems(props) {
26280
26289
  var _useAppContext = useAppContext(),
26281
- getKetcherInstance = _useAppContext.getKetcherInstance;
26282
- var editor = getKetcherInstance().editor;
26290
+ ketcherId = _useAppContext.ketcherId;
26291
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26283
26292
  var _useBondEdit = useBondEdit(),
26284
26293
  _useBondEdit2 = _slicedToArray$1(_useBondEdit, 2),
26285
26294
  handleBondEdit = _useBondEdit2[0],
@@ -26310,15 +26319,15 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
26310
26319
  });
26311
26320
  };
26312
26321
  return jsxs(Fragment, {
26313
- children: [jsx(Item, _objectSpread$M(_objectSpread$M({}, props), {}, {
26322
+ children: [jsx(Item, _objectSpread$N(_objectSpread$N({}, props), {}, {
26314
26323
  disabled: bondEditDisabled,
26315
26324
  onClick: handleBondEdit,
26316
26325
  children: "Edit selected bonds..."
26317
- })), jsx(Item, _objectSpread$M(_objectSpread$M({}, props), {}, {
26326
+ })), jsx(Item, _objectSpread$N(_objectSpread$N({}, props), {}, {
26318
26327
  disabled: atomEditDisabled,
26319
26328
  onClick: handleAtomEdit,
26320
26329
  children: "Edit selected atoms..."
26321
- })), jsx(Submenu, _objectSpread$M(_objectSpread$M({}, props), {}, {
26330
+ })), jsx(Submenu, _objectSpread$N(_objectSpread$N({}, props), {}, {
26322
26331
  label: "Bond type",
26323
26332
  disabled: bondTypeChangeDisabled,
26324
26333
  className: styles$f.subMenu,
@@ -26335,13 +26344,13 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
26335
26344
  })]
26336
26345
  }, name);
26337
26346
  })
26338
- })), jsx(Item, _objectSpread$M(_objectSpread$M({}, props), {}, {
26347
+ })), jsx(Item, _objectSpread$N(_objectSpread$N({}, props), {}, {
26339
26348
  disabled: atomStereoDisabled,
26340
26349
  onClick: handleAtomStereo,
26341
26350
  children: "Enhanced stereochemistry..."
26342
26351
  })), jsx(HighlightMenu, {
26343
26352
  onHighlight: highlightBondWithColor
26344
- }), jsx(Item, _objectSpread$M(_objectSpread$M({}, props), {}, {
26353
+ }), jsx(Item, _objectSpread$N(_objectSpread$N({}, props), {}, {
26345
26354
  onClick: handleDelete,
26346
26355
  children: "Delete"
26347
26356
  }))]
@@ -26350,7 +26359,7 @@ var SelectionMenuItems = function SelectionMenuItems(props) {
26350
26359
 
26351
26360
  var useDelete = function useDelete() {
26352
26361
  var _useAppContext = useAppContext(),
26353
- getKetcherInstance = _useAppContext.getKetcherInstance;
26362
+ ketcherId = _useAppContext.ketcherId;
26354
26363
  var handler = useCallback( function () {
26355
26364
  var _ref2 = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(_ref) {
26356
26365
  var props, editor, restruct, pointsToDelete, action;
@@ -26358,7 +26367,7 @@ var useDelete = function useDelete() {
26358
26367
  while (1) switch (_context.prev = _context.next) {
26359
26368
  case 0:
26360
26369
  props = _ref.props;
26361
- editor = getKetcherInstance().editor;
26370
+ editor = ketcherProvider.getKetcher(ketcherId).editor;
26362
26371
  restruct = editor.render.ctab;
26363
26372
  pointsToDelete = (props === null || props === void 0 ? void 0 : props.rgroupAttachmentPoints) || [];
26364
26373
  action = pointsToDelete.reduce(function (previousAction, currentPoint) {
@@ -26376,7 +26385,7 @@ var useDelete = function useDelete() {
26376
26385
  return function (_x) {
26377
26386
  return _ref2.apply(this, arguments);
26378
26387
  };
26379
- }(), [getKetcherInstance]);
26388
+ }(), [ketcherId]);
26380
26389
  return handler;
26381
26390
  };
26382
26391
 
@@ -26396,25 +26405,25 @@ var getAtomIdByProps = function getAtomIdByProps(props, ketcher) {
26396
26405
  };
26397
26406
  var useRGroupAttachmentPointEdit = function useRGroupAttachmentPointEdit() {
26398
26407
  var _useAppContext = useAppContext(),
26399
- getKetcherInstance = _useAppContext.getKetcherInstance;
26408
+ ketcherId = _useAppContext.ketcherId;
26400
26409
  var handler = useCallback(function (_ref) {
26401
26410
  var props = _ref.props;
26402
- var ketcher = getKetcherInstance();
26411
+ var ketcher = ketcherProvider.getKetcher(ketcherId);
26403
26412
  var restruct = ketcher.editor.render.ctab;
26404
26413
  var atomId = getAtomIdByProps(props, ketcher);
26405
26414
  var atom = restruct.molecule.atoms.get(atomId);
26406
26415
  assert_1(atom != null);
26407
26416
  editRGroupAttachmentPoint(ketcher.editor, atom, atomId);
26408
- }, [getKetcherInstance]);
26417
+ }, [ketcherId]);
26409
26418
  var disabled = useCallback(function (_ref2) {
26410
26419
  var props = _ref2.props;
26411
- var ketcher = getKetcherInstance();
26420
+ var ketcher = ketcherProvider.getKetcher(ketcherId);
26412
26421
  var restruct = ketcher.editor.render.ctab;
26413
26422
  var atomId = getAtomIdByProps(props, ketcher);
26414
26423
  var atom = restruct.molecule.atoms.get(atomId);
26415
26424
  assert_1(atom != null);
26416
26425
  return atom.isRGroupAttachmentPointEditDisabled;
26417
- }, [getKetcherInstance]);
26426
+ }, [ketcherId]);
26418
26427
  var hidden = useCallback(function (_ref3) {
26419
26428
  var _props$atomIds2;
26420
26429
  var props = _ref3.props;
@@ -26424,18 +26433,18 @@ var useRGroupAttachmentPointEdit = function useRGroupAttachmentPointEdit() {
26424
26433
  return [handler, disabled, hidden];
26425
26434
  };
26426
26435
 
26427
- function ownKeys$L(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26428
- function _objectSpread$L(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$L(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$L(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26436
+ function ownKeys$M(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26437
+ function _objectSpread$M(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$M(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$M(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26429
26438
  var RGroupAttachmentPointMenuItems = function RGroupAttachmentPointMenuItems(props) {
26430
26439
  var _useAppContext = useAppContext(),
26431
- getKetcherInstance = _useAppContext.getKetcherInstance;
26440
+ ketcherId = _useAppContext.ketcherId;
26432
26441
  var handleRemove = useDelete();
26433
26442
  var _useRGroupAttachmentP = useRGroupAttachmentPointEdit(),
26434
26443
  _useRGroupAttachmentP2 = _slicedToArray$1(_useRGroupAttachmentP, 3),
26435
26444
  handleEditRGroupAttachmentPoint = _useRGroupAttachmentP2[0],
26436
26445
  rgroupAttachmentPointDisabled = _useRGroupAttachmentP2[1],
26437
26446
  rgroupAttachmentPointHidden = _useRGroupAttachmentP2[2];
26438
- var editor = getKetcherInstance().editor;
26447
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26439
26448
  var highlight = function highlight(color) {
26440
26449
  var _props$propsFromTrigg;
26441
26450
  var rgroupAttachmentPoints = ((_props$propsFromTrigg = props.propsFromTrigger) === null || _props$propsFromTrigg === void 0 ? void 0 : _props$propsFromTrigg.rgroupAttachmentPoints) || [];
@@ -26447,14 +26456,14 @@ var RGroupAttachmentPointMenuItems = function RGroupAttachmentPointMenuItems(pro
26447
26456
  });
26448
26457
  };
26449
26458
  return jsxs(Fragment, {
26450
- children: [jsx(Item, _objectSpread$L(_objectSpread$L({}, props), {}, {
26459
+ children: [jsx(Item, _objectSpread$M(_objectSpread$M({}, props), {}, {
26451
26460
  disabled: rgroupAttachmentPointDisabled,
26452
26461
  hidden: rgroupAttachmentPointHidden,
26453
26462
  onClick: handleEditRGroupAttachmentPoint,
26454
26463
  children: "Edit..."
26455
26464
  })), jsx(HighlightMenu, {
26456
26465
  onHighlight: highlight
26457
- }), jsx(Item, _objectSpread$L(_objectSpread$L({}, props), {}, {
26466
+ }), jsx(Item, _objectSpread$M(_objectSpread$M({}, props), {}, {
26458
26467
  onClick: handleRemove,
26459
26468
  children: "Remove"
26460
26469
  }))]
@@ -26469,19 +26478,19 @@ function updateEditor(editor, action) {
26469
26478
  }
26470
26479
  var useMultitailArrowTailsAdd = function useMultitailArrowTailsAdd() {
26471
26480
  var _useAppContext = useAppContext(),
26472
- getKetcherInstance = _useAppContext.getKetcherInstance;
26481
+ ketcherId = _useAppContext.ketcherId;
26473
26482
  var addTail = useCallback(function (_ref) {
26474
26483
  var props = _ref.props;
26475
- var editor = getKetcherInstance().editor;
26484
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26476
26485
  var operation = fromMultitailArrowTailAdd(editor.render.ctab, props === null || props === void 0 ? void 0 : props.itemId);
26477
26486
  updateEditor(editor, operation);
26478
- }, [getKetcherInstance]);
26487
+ }, [ketcherId]);
26479
26488
  var isAddTailDisabled = useCallback(function (_ref2) {
26480
26489
  var props = _ref2.props;
26481
- var editor = getKetcherInstance().editor;
26490
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26482
26491
  var multitailArrow = editor.render.ctab.molecule.multitailArrows.get(props === null || props === void 0 ? void 0 : props.itemId);
26483
26492
  return !!multitailArrow && !MultitailArrow.canAddTail(multitailArrow.getTailsMaxDistance().distance);
26484
- }, [getKetcherInstance]);
26493
+ }, [ketcherId]);
26485
26494
  return {
26486
26495
  addTail: addTail,
26487
26496
  isAddTailDisabled: isAddTailDisabled
@@ -26489,13 +26498,13 @@ var useMultitailArrowTailsAdd = function useMultitailArrowTailsAdd() {
26489
26498
  };
26490
26499
  var useMultitailArrowTailsRemove = function useMultitailArrowTailsRemove() {
26491
26500
  var _useAppContext2 = useAppContext(),
26492
- getKetcherInstance = _useAppContext2.getKetcherInstance;
26501
+ ketcherId = _useAppContext2.ketcherId;
26493
26502
  var removeTail = useCallback(function (_ref3) {
26494
26503
  var props = _ref3.props;
26495
- var editor = getKetcherInstance().editor;
26504
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26496
26505
  var operation = fromMultitailArrowTailRemove(editor.render.ctab, props === null || props === void 0 ? void 0 : props.itemId, props === null || props === void 0 ? void 0 : props.tailId);
26497
26506
  updateEditor(editor, operation);
26498
- }, [getKetcherInstance]);
26507
+ }, [ketcherId]);
26499
26508
  var removeTailHidden = useCallback(function (_ref4) {
26500
26509
  var props = _ref4.props;
26501
26510
  return (props === null || props === void 0 ? void 0 : props.tailId) === null;
@@ -26506,8 +26515,8 @@ var useMultitailArrowTailsRemove = function useMultitailArrowTailsRemove() {
26506
26515
  };
26507
26516
  };
26508
26517
 
26509
- function ownKeys$K(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26510
- function _objectSpread$K(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$K(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$K(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26518
+ function ownKeys$L(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26519
+ function _objectSpread$L(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$L(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$L(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26511
26520
  function MultitailArrowMenuItems(props) {
26512
26521
  var _useMultitailArrowTai = useMultitailArrowTailsAdd(),
26513
26522
  addTail = _useMultitailArrowTai.addTail,
@@ -26516,11 +26525,11 @@ function MultitailArrowMenuItems(props) {
26516
26525
  removeTail = _useMultitailArrowTai2.removeTail,
26517
26526
  removeTailHidden = _useMultitailArrowTai2.removeTailHidden;
26518
26527
  return jsxs(Fragment, {
26519
- children: [jsx(Item, _objectSpread$K(_objectSpread$K({}, props), {}, {
26528
+ children: [jsx(Item, _objectSpread$L(_objectSpread$L({}, props), {}, {
26520
26529
  onClick: removeTail,
26521
26530
  hidden: removeTailHidden,
26522
26531
  children: "Remove tail"
26523
- })), jsx(Item, _objectSpread$K(_objectSpread$K({}, props), {}, {
26532
+ })), jsx(Item, _objectSpread$L(_objectSpread$L({}, props), {}, {
26524
26533
  onClick: addTail,
26525
26534
  disabled: isAddTailDisabled,
26526
26535
  children: "Add new tail"
@@ -26533,10 +26542,10 @@ var canExpandMonomer = function canExpandMonomer(functionalGroup) {
26533
26542
  };
26534
26543
  var useMonomerExpansionHandlers = function useMonomerExpansionHandlers() {
26535
26544
  var _useAppContext = useAppContext(),
26536
- getKetcherInstance = _useAppContext.getKetcherInstance;
26545
+ ketcherId = _useAppContext.ketcherId;
26537
26546
  var action = useCallback(function (_ref, toExpand) {
26538
26547
  var props = _ref.props;
26539
- var editor = getKetcherInstance().editor;
26548
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26540
26549
  var molecule = editor.render.ctab;
26541
26550
  var selectedFunctionalGroups = props === null || props === void 0 ? void 0 : props.functionalGroups;
26542
26551
  var action = new Action();
@@ -26550,7 +26559,7 @@ var useMonomerExpansionHandlers = function useMonomerExpansionHandlers() {
26550
26559
  });
26551
26560
  editor.update(action);
26552
26561
  editor.rotateController.rerender();
26553
- }, [getKetcherInstance]);
26562
+ }, [ketcherId]);
26554
26563
  var hidden = useCallback(function (_ref2, toExpand) {
26555
26564
  var _props$functionalGrou;
26556
26565
  var props = _ref2.props;
@@ -26561,8 +26570,8 @@ var useMonomerExpansionHandlers = function useMonomerExpansionHandlers() {
26561
26570
  return [action, hidden];
26562
26571
  };
26563
26572
 
26564
- function ownKeys$J(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26565
- function _objectSpread$J(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$J(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$J(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26573
+ function ownKeys$K(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26574
+ function _objectSpread$K(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$K(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$K(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26566
26575
  var MacromoleculeMenuItems = function MacromoleculeMenuItems(props) {
26567
26576
  var _props$propsFromTrigg, _props$propsFromTrigg2;
26568
26577
  var _useMonomerExpansionH = useMonomerExpansionHandlers(),
@@ -26576,7 +26585,7 @@ var MacromoleculeMenuItems = function MacromoleculeMenuItems(props) {
26576
26585
  var expandText = multipleMonomersSelected ? 'Expand monomers' : 'Expand monomer';
26577
26586
  var collapseText = multipleMonomersSelected ? 'Collapse monomers' : 'Collapse monomer';
26578
26587
  return jsxs(Fragment, {
26579
- children: [jsx(Item, _objectSpread$J(_objectSpread$J({}, props), {}, {
26588
+ children: [jsx(Item, _objectSpread$K(_objectSpread$K({}, props), {}, {
26580
26589
  hidden: function hidden(params) {
26581
26590
  return _hidden(params, true);
26582
26591
  },
@@ -26585,7 +26594,7 @@ var MacromoleculeMenuItems = function MacromoleculeMenuItems(props) {
26585
26594
  },
26586
26595
  disabled: expandingDisabled,
26587
26596
  children: expandText
26588
- })), jsx(Item, _objectSpread$J(_objectSpread$J({}, props), {}, {
26597
+ })), jsx(Item, _objectSpread$K(_objectSpread$K({}, props), {}, {
26589
26598
  hidden: function hidden(params) {
26590
26599
  return _hidden(params, false);
26591
26600
  },
@@ -26597,15 +26606,15 @@ var MacromoleculeMenuItems = function MacromoleculeMenuItems(props) {
26597
26606
  });
26598
26607
  };
26599
26608
 
26600
- function ownKeys$I(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26601
- function _objectSpread$I(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$I(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$I(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26609
+ function ownKeys$J(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26610
+ function _objectSpread$J(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$J(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$J(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26602
26611
  var props = {
26603
26612
  animation: false,
26604
26613
  className: styles$f.contextMenu
26605
26614
  };
26606
26615
  var ContextMenu = function ContextMenu() {
26607
26616
  var _useAppContext = useAppContext(),
26608
- getKetcherInstance = _useAppContext.getKetcherInstance;
26617
+ ketcherId = _useAppContext.ketcherId;
26609
26618
  var adjustSubmenuPosition = function adjustSubmenuPosition(submenuElement) {
26610
26619
  var rect = submenuElement.getBoundingClientRect();
26611
26620
  var ketcherRootElement = document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR);
@@ -26666,7 +26675,7 @@ var ContextMenu = function ContextMenu() {
26666
26675
  contextMenuElement.style.top = "".concat(top, "px");
26667
26676
  };
26668
26677
  var trackVisibility = useCallback(function (id, visible) {
26669
- var editor = getKetcherInstance().editor;
26678
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26670
26679
  if (visible) {
26671
26680
  editor.hoverIcon.hide();
26672
26681
  var contextMenuElement = document.querySelector('.contexify:last-of-type');
@@ -26683,49 +26692,49 @@ var ContextMenu = function ContextMenu() {
26683
26692
  }
26684
26693
  }
26685
26694
  editor.contextMenu[id] = visible;
26686
- }, [getKetcherInstance]);
26695
+ }, [ketcherId]);
26687
26696
  var ketcherEditorRootElement = document.querySelector(KETCHER_ROOT_NODE_CSS_SELECTOR);
26688
26697
  return ketcherEditorRootElement ? createPortal(jsxs(Fragment, {
26689
- children: [jsx(Menu, _objectSpread$I(_objectSpread$I({}, props), {}, {
26690
- id: CONTEXT_MENU_ID.FOR_BONDS,
26698
+ children: [jsx(Menu, _objectSpread$J(_objectSpread$J({}, props), {}, {
26699
+ id: CONTEXT_MENU_ID.FOR_BONDS + ketcherId,
26691
26700
  onVisibilityChange: function onVisibilityChange(visible) {
26692
- return trackVisibility(CONTEXT_MENU_ID.FOR_BONDS, visible);
26701
+ return trackVisibility(CONTEXT_MENU_ID.FOR_BONDS + ketcherId, visible);
26693
26702
  },
26694
26703
  children: jsx(BondMenuItems, {})
26695
- })), jsx(Menu, _objectSpread$I(_objectSpread$I({}, props), {}, {
26696
- id: CONTEXT_MENU_ID.FOR_ATOMS,
26704
+ })), jsx(Menu, _objectSpread$J(_objectSpread$J({}, props), {}, {
26705
+ id: CONTEXT_MENU_ID.FOR_ATOMS + ketcherId,
26697
26706
  onVisibilityChange: function onVisibilityChange(visible) {
26698
- return trackVisibility(CONTEXT_MENU_ID.FOR_ATOMS, visible);
26707
+ return trackVisibility(CONTEXT_MENU_ID.FOR_ATOMS + ketcherId, visible);
26699
26708
  },
26700
26709
  children: jsx(AtomMenuItems, {})
26701
- })), jsx(Menu, _objectSpread$I(_objectSpread$I({}, props), {}, {
26702
- id: CONTEXT_MENU_ID.FOR_SELECTION,
26710
+ })), jsx(Menu, _objectSpread$J(_objectSpread$J({}, props), {}, {
26711
+ id: CONTEXT_MENU_ID.FOR_SELECTION + ketcherId,
26703
26712
  onVisibilityChange: function onVisibilityChange(visible) {
26704
- return trackVisibility(CONTEXT_MENU_ID.FOR_SELECTION, visible);
26713
+ return trackVisibility(CONTEXT_MENU_ID.FOR_SELECTION + ketcherId, visible);
26705
26714
  },
26706
26715
  children: jsx(SelectionMenuItems, {})
26707
- })), jsx(Menu, _objectSpread$I(_objectSpread$I({}, props), {}, {
26708
- id: CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS,
26716
+ })), jsx(Menu, _objectSpread$J(_objectSpread$J({}, props), {}, {
26717
+ id: CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS + ketcherId,
26709
26718
  onVisibilityChange: function onVisibilityChange(visible) {
26710
- return trackVisibility(CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS, visible);
26719
+ return trackVisibility(CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS + ketcherId, visible);
26711
26720
  },
26712
26721
  children: jsx(FunctionalGroupMenuItems, {})
26713
- })), jsx(Menu, _objectSpread$I(_objectSpread$I({}, props), {}, {
26714
- id: CONTEXT_MENU_ID.FOR_R_GROUP_ATTACHMENT_POINT,
26722
+ })), jsx(Menu, _objectSpread$J(_objectSpread$J({}, props), {}, {
26723
+ id: CONTEXT_MENU_ID.FOR_R_GROUP_ATTACHMENT_POINT + ketcherId,
26715
26724
  onVisibilityChange: function onVisibilityChange(visible) {
26716
- return trackVisibility(CONTEXT_MENU_ID.FOR_R_GROUP_ATTACHMENT_POINT, visible);
26725
+ return trackVisibility(CONTEXT_MENU_ID.FOR_R_GROUP_ATTACHMENT_POINT + ketcherId, visible);
26717
26726
  },
26718
26727
  children: jsx(RGroupAttachmentPointMenuItems, {})
26719
- })), jsx(Menu, _objectSpread$I(_objectSpread$I({}, props), {}, {
26720
- id: CONTEXT_MENU_ID.FOR_MULTITAIL_ARROW,
26728
+ })), jsx(Menu, _objectSpread$J(_objectSpread$J({}, props), {}, {
26729
+ id: CONTEXT_MENU_ID.FOR_MULTITAIL_ARROW + ketcherId,
26721
26730
  onVisibilityChange: function onVisibilityChange(visible) {
26722
- return trackVisibility(CONTEXT_MENU_ID.FOR_MULTITAIL_ARROW, visible);
26731
+ return trackVisibility(CONTEXT_MENU_ID.FOR_MULTITAIL_ARROW + ketcherId, visible);
26723
26732
  },
26724
26733
  children: jsx(MultitailArrowMenuItems, {})
26725
- })), jsx(Menu, _objectSpread$I(_objectSpread$I({}, props), {}, {
26726
- id: CONTEXT_MENU_ID.FOR_MACROMOLECULE,
26734
+ })), jsx(Menu, _objectSpread$J(_objectSpread$J({}, props), {}, {
26735
+ id: CONTEXT_MENU_ID.FOR_MACROMOLECULE + ketcherId,
26727
26736
  onVisibilityChange: function onVisibilityChange(visible) {
26728
- return trackVisibility(CONTEXT_MENU_ID.FOR_MACROMOLECULE, visible);
26737
+ return trackVisibility(CONTEXT_MENU_ID.FOR_MACROMOLECULE + ketcherId, visible);
26729
26738
  },
26730
26739
  children: jsx(MacromoleculeMenuItems, {})
26731
26740
  }))]
@@ -26749,7 +26758,7 @@ var getIsItemInSelection = function getIsItemInSelection(_ref) {
26749
26758
  return item.map in selection && Array.isArray(selection[item.map]) && selection[item.map].includes(item.id);
26750
26759
  }
26751
26760
  };
26752
- function getMenuPropsForClosestItem(editor, closestItem) {
26761
+ function getMenuPropsForClosestItem(editor, closestItem, ketcherId) {
26753
26762
  var struct = editor.struct();
26754
26763
  switch (closestItem.map) {
26755
26764
  case 'bonds':
@@ -26759,17 +26768,17 @@ function getMenuPropsForClosestItem(editor, closestItem) {
26759
26768
  var isMonomer = (functionalGroup === null || functionalGroup === void 0 ? void 0 : functionalGroup.relatedSGroup) instanceof MonomerMicromolecule;
26760
26769
  if (noFunctionalGroup) {
26761
26770
  return {
26762
- id: CONTEXT_MENU_ID.FOR_BONDS,
26771
+ id: CONTEXT_MENU_ID.FOR_BONDS + ketcherId,
26763
26772
  bondIds: [closestItem.id]
26764
26773
  };
26765
26774
  } else if (isMonomer) {
26766
26775
  return {
26767
- id: CONTEXT_MENU_ID.FOR_MACROMOLECULE,
26776
+ id: CONTEXT_MENU_ID.FOR_MACROMOLECULE + ketcherId,
26768
26777
  functionalGroups: [functionalGroup]
26769
26778
  };
26770
26779
  } else {
26771
26780
  return {
26772
- id: CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS,
26781
+ id: CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS + ketcherId,
26773
26782
  functionalGroups: [functionalGroup]
26774
26783
  };
26775
26784
  }
@@ -26781,17 +26790,17 @@ function getMenuPropsForClosestItem(editor, closestItem) {
26781
26790
  var _isMonomer = (_functionalGroup === null || _functionalGroup === void 0 ? void 0 : _functionalGroup.relatedSGroup) instanceof MonomerMicromolecule;
26782
26791
  if (_noFunctionalGroup) {
26783
26792
  return {
26784
- id: CONTEXT_MENU_ID.FOR_ATOMS,
26793
+ id: CONTEXT_MENU_ID.FOR_ATOMS + ketcherId,
26785
26794
  atomIds: [closestItem.id]
26786
26795
  };
26787
26796
  } else if (_isMonomer) {
26788
26797
  return {
26789
- id: CONTEXT_MENU_ID.FOR_MACROMOLECULE,
26798
+ id: CONTEXT_MENU_ID.FOR_MACROMOLECULE + ketcherId,
26790
26799
  functionalGroups: [_functionalGroup]
26791
26800
  };
26792
26801
  } else {
26793
26802
  return {
26794
- id: CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS,
26803
+ id: CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS + ketcherId,
26795
26804
  functionalGroups: [_functionalGroup]
26796
26805
  };
26797
26806
  }
@@ -26802,7 +26811,7 @@ function getMenuPropsForClosestItem(editor, closestItem) {
26802
26811
  var sGroup = struct.sgroups.get(closestItem.id);
26803
26812
  var _functionalGroup2 = FunctionalGroup.findFunctionalGroupBySGroup(struct.functionalGroups, sGroup);
26804
26813
  return _functionalGroup2 ? {
26805
- id: sGroup instanceof MonomerMicromolecule ? CONTEXT_MENU_ID.FOR_MACROMOLECULE : CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS,
26814
+ id: sGroup instanceof MonomerMicromolecule ? CONTEXT_MENU_ID.FOR_MACROMOLECULE + ketcherId : CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS + ketcherId,
26806
26815
  functionalGroups: [_functionalGroup2]
26807
26816
  } : null;
26808
26817
  }
@@ -26811,7 +26820,7 @@ function getMenuPropsForClosestItem(editor, closestItem) {
26811
26820
  var _struct$rgroupAttachm;
26812
26821
  var atomId = (_struct$rgroupAttachm = struct.rgroupAttachmentPoints.get(closestItem.id)) === null || _struct$rgroupAttachm === void 0 ? void 0 : _struct$rgroupAttachm.atomId;
26813
26822
  return {
26814
- id: CONTEXT_MENU_ID.FOR_R_GROUP_ATTACHMENT_POINT,
26823
+ id: CONTEXT_MENU_ID.FOR_R_GROUP_ATTACHMENT_POINT + ketcherId,
26815
26824
  rgroupAttachmentPoints: [closestItem.id],
26816
26825
  atomIds: typeof atomId === 'number' ? [atomId] : undefined
26817
26826
  };
@@ -26822,7 +26831,7 @@ function getMenuPropsForClosestItem(editor, closestItem) {
26822
26831
  var closestItemTyped = closestItem;
26823
26832
  var tailId = closestItemTyped === null || closestItemTyped === void 0 || (_closestItemTyped$ref = closestItemTyped.ref) === null || _closestItemTyped$ref === void 0 ? void 0 : _closestItemTyped$ref.tailId;
26824
26833
  return {
26825
- id: CONTEXT_MENU_ID.FOR_MULTITAIL_ARROW,
26834
+ id: CONTEXT_MENU_ID.FOR_MULTITAIL_ARROW + ketcherId,
26826
26835
  itemId: closestItem.id,
26827
26836
  tailId: typeof tailId === 'number' ? tailId : null
26828
26837
  };
@@ -26832,7 +26841,7 @@ function getMenuPropsForClosestItem(editor, closestItem) {
26832
26841
  }
26833
26842
  }
26834
26843
  var IGNORED_MAPS_LIST = ['enhancedFlags'];
26835
- function getMenuPropsForSelection(selection, selectedFunctionalGroups) {
26844
+ function getMenuPropsForSelection(selection, selectedFunctionalGroups, ketcherId) {
26836
26845
  if (!selection) {
26837
26846
  return null;
26838
26847
  }
@@ -26845,35 +26854,35 @@ function getMenuPropsForSelection(selection, selectedFunctionalGroups) {
26845
26854
  return fg.relatedSGroup instanceof MonomerMicromolecule;
26846
26855
  })) {
26847
26856
  return {
26848
- id: CONTEXT_MENU_ID.FOR_MACROMOLECULE,
26857
+ id: CONTEXT_MENU_ID.FOR_MACROMOLECULE + ketcherId,
26849
26858
  functionalGroups: functionalGroups
26850
26859
  };
26851
26860
  }
26852
26861
  return {
26853
- id: CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS,
26862
+ id: CONTEXT_MENU_ID.FOR_FUNCTIONAL_GROUPS + ketcherId,
26854
26863
  functionalGroups: functionalGroups
26855
26864
  };
26856
26865
  } else if (bonds && !atoms && !rgroupAttachmentPoints) {
26857
26866
  return {
26858
- id: CONTEXT_MENU_ID.FOR_BONDS,
26867
+ id: CONTEXT_MENU_ID.FOR_BONDS + ketcherId,
26859
26868
  bondIds: bonds,
26860
26869
  extraItemsSelected: !onlyHasProperty(selection, 'bonds', IGNORED_MAPS_LIST)
26861
26870
  };
26862
26871
  } else if (atoms && !bonds && !rgroupAttachmentPoints) {
26863
26872
  return {
26864
- id: CONTEXT_MENU_ID.FOR_ATOMS,
26873
+ id: CONTEXT_MENU_ID.FOR_ATOMS + ketcherId,
26865
26874
  atomIds: atoms,
26866
26875
  extraItemsSelected: !onlyHasProperty(selection, 'atoms', IGNORED_MAPS_LIST)
26867
26876
  };
26868
26877
  } else if (rgroupAttachmentPoints && !bonds && !atoms) {
26869
26878
  return {
26870
- id: CONTEXT_MENU_ID.FOR_R_GROUP_ATTACHMENT_POINT,
26879
+ id: CONTEXT_MENU_ID.FOR_R_GROUP_ATTACHMENT_POINT + ketcherId,
26871
26880
  rgroupAttachmentPoints: rgroupAttachmentPoints,
26872
26881
  extraItemsSelected: !onlyHasProperty(selection, 'rgroupAttachmentPoints', IGNORED_MAPS_LIST)
26873
26882
  };
26874
26883
  } else {
26875
26884
  return {
26876
- id: CONTEXT_MENU_ID.FOR_SELECTION,
26885
+ id: CONTEXT_MENU_ID.FOR_SELECTION + ketcherId,
26877
26886
  bondIds: bonds,
26878
26887
  atomIds: atoms,
26879
26888
  rgroupAttachmentPoints: rgroupAttachmentPoints
@@ -26881,15 +26890,17 @@ function getMenuPropsForSelection(selection, selectedFunctionalGroups) {
26881
26890
  }
26882
26891
  }
26883
26892
 
26893
+ function ownKeys$I(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
26894
+ function _objectSpread$I(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$I(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$I(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
26884
26895
  var ContextMenuTrigger = function ContextMenuTrigger(_ref) {
26885
26896
  var children = _ref.children;
26886
26897
  var _useAppContext = useAppContext(),
26887
- getKetcherInstance = _useAppContext.getKetcherInstance;
26898
+ ketcherId = _useAppContext.ketcherId;
26888
26899
  var _useContextMenu = useContextMenu(),
26889
26900
  show = _useContextMenu.show;
26890
26901
  var getSelectedGroupsInfo = useCallback(function () {
26891
26902
  var _editor$selection;
26892
- var editor = getKetcherInstance().editor;
26903
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
26893
26904
  var struct = editor.struct();
26894
26905
  var selectedAtomIds = (_editor$selection = editor.selection()) === null || _editor$selection === void 0 ? void 0 : _editor$selection.atoms;
26895
26906
  var selectedFunctionalGroups = new Map();
@@ -26906,10 +26917,11 @@ var ContextMenuTrigger = function ContextMenuTrigger(_ref) {
26906
26917
  selectedFunctionalGroups: selectedFunctionalGroups,
26907
26918
  selectedSGroupsIds: selectedSGroupsIds
26908
26919
  };
26909
- }, [getKetcherInstance]);
26920
+ }, [ketcherId]);
26910
26921
  var handleDisplay = useCallback(function (event) {
26911
26922
  event.preventDefault();
26912
- var editor = getKetcherInstance().editor;
26923
+ var ketcher = ketcherProvider.getKetcher(ketcherId);
26924
+ var editor = ketcher.editor;
26913
26925
  if (editor.render.options.viewOnlyMode) {
26914
26926
  return;
26915
26927
  }
@@ -26959,21 +26971,23 @@ var ContextMenuTrigger = function ContextMenuTrigger(_ref) {
26959
26971
  }
26960
26972
  case ContextMenuTriggerType.ClosestItem:
26961
26973
  {
26962
- showProps = getMenuPropsForClosestItem(editor, closestItem);
26974
+ showProps = getMenuPropsForClosestItem(editor, closestItem, ketcherId);
26963
26975
  break;
26964
26976
  }
26965
26977
  case ContextMenuTriggerType.Selection:
26966
26978
  {
26967
- showProps = getMenuPropsForSelection(selection, selectedFunctionalGroups);
26979
+ showProps = getMenuPropsForSelection(selection, selectedFunctionalGroups, ketcherId);
26968
26980
  break;
26969
26981
  }
26970
26982
  }
26971
26983
  showProps && show({
26972
26984
  id: showProps.id,
26973
26985
  event: event,
26974
- props: showProps
26986
+ props: _objectSpread$I(_objectSpread$I({}, showProps), {}, {
26987
+ ketcherId: ketcherId
26988
+ })
26975
26989
  });
26976
- }, [getKetcherInstance, getSelectedGroupsInfo, show]);
26990
+ }, [getSelectedGroupsInfo, show, ketcherId]);
26977
26991
  return jsx("div", {
26978
26992
  style: {
26979
26993
  height: '100%'
@@ -27320,7 +27334,7 @@ var InfoTooltip$1 = connect(function (store) {
27320
27334
  };
27321
27335
  })(InfoTooltip);
27322
27336
 
27323
- var _excluded$o = ["Tag", "className", "indigoVerification", "struct", "tool", "toolOpts", "options", "onInit", "onSelectionChange", "onElementEdit", "onEnhancedStereoEdit", "onQuickEdit", "onBondEdit", "onZoomIn", "onZoomOut", "onZoomChanged", "onRgroupEdit", "onSgroupEdit", "onRemoveFG", "onMessage", "onAromatizeStruct", "onDearomatizeStruct", "onAttachEdit", "onCipChange", "onConfirm", "onShowInfo", "onApiSettings", "showAttachmentPoints", "onUpdateFloatingTools", "onShowMacromoleculesErrorMessage", "serverSettings"];
27337
+ var _excluded$o = ["Tag", "className", "ketcherId", "struct", "indigoVerification", "tool", "toolOpts", "options", "onInit", "onSelectionChange", "onElementEdit", "onEnhancedStereoEdit", "onQuickEdit", "onBondEdit", "onZoomIn", "onZoomOut", "onZoomChanged", "onRgroupEdit", "onSgroupEdit", "onRemoveFG", "onMessage", "onAromatizeStruct", "onDearomatizeStruct", "onAttachEdit", "onCipChange", "onConfirm", "onShowInfo", "onApiSettings", "showAttachmentPoints", "onUpdateFloatingTools", "onShowMacromoleculesErrorMessage", "serverSettings"];
27324
27338
  function ownKeys$G(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
27325
27339
  function _objectSpread$G(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys$G(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys$G(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
27326
27340
  function _callSuper$9(t, o, e) { return o = _getPrototypeOf$2(o), _possibleConstructorReturn$2(t, _isNativeReflectConstruct$9() ? Reflect.construct(o, e || [], _getPrototypeOf$2(t).constructor) : o.apply(t, e)); }
@@ -27441,8 +27455,10 @@ var StructEditor = function (_Component) {
27441
27455
  key: "componentDidMount",
27442
27456
  value: function componentDidMount() {
27443
27457
  var _this4 = this;
27444
- this.editor = new Editor$3(this.editorRef.current, _objectSpread$G({}, this.props.options), _objectSpread$G({}, this.props.serverSettings));
27445
- var ketcher = ketcherProvider.getKetcher();
27458
+ var prevKetcher = this.props.prevKetcherId ? ketcherProvider.getKetcher(this.props.prevKetcherId) : undefined;
27459
+ var ketcher = ketcherProvider.getKetcher(this.props.ketcherId);
27460
+ this.editor = new Editor$3(this.props.ketcherId, this.editorRef.current, _objectSpread$G({}, this.props.options), _objectSpread$G({}, this.props.serverSettings), prevKetcher === null || prevKetcher === void 0 ? void 0 : prevKetcher.editor);
27461
+ ketcher.addEditor(this.editor);
27446
27462
  if (ketcher !== null && ketcher !== void 0 && ketcher.editor.macromoleculeConvertionError) {
27447
27463
  this.props.onShowMacromoleculesErrorMessage(ketcher.editor.macromoleculeConvertionError);
27448
27464
  ketcher.editor.clearMacromoleculeConvertionError();
@@ -27539,9 +27555,10 @@ var StructEditor = function (_Component) {
27539
27555
  var _this$props = this.props,
27540
27556
  _this$props$Tag = _this$props.Tag,
27541
27557
  Tag = _this$props$Tag === void 0 ? 'div' : _this$props$Tag,
27542
- className = _this$props.className,
27543
- indigoVerification = _this$props.indigoVerification;
27558
+ className = _this$props.className;
27559
+ _this$props.ketcherId;
27544
27560
  _this$props.struct;
27561
+ var indigoVerification = _this$props.indigoVerification;
27545
27562
  _this$props.tool;
27546
27563
  _this$props.toolOpts;
27547
27564
  _this$props.options;
@@ -28505,10 +28522,9 @@ function CustomQueryField(props) {
28505
28522
  className: clsx(_defineProperty$1(_defineProperty$1({}, classes$A.dataError, dataError), classes$A.inputWrapper, true)),
28506
28523
  children: jsx(Input$1, _objectSpread$E(_objectSpread$E({
28507
28524
  type: "textarea",
28508
- "data-testid": "atomCustomQuery",
28525
+ "data-testid": "custom-query-value",
28509
28526
  name: name,
28510
- schema: desc,
28511
- "data-testId": "custom-query-value"
28527
+ schema: desc
28512
28528
  }, fieldOpts), rest))
28513
28529
  }), dataError && anchorEl && jsx(ErrorPopover, {
28514
28530
  anchorEl: anchorEl,
@@ -28942,7 +28958,7 @@ var SaveButton$1 = function SaveButton(props) {
28942
28958
  disabled = props.disabled,
28943
28959
  testId = props.testId;
28944
28960
  var _useAppContext = useAppContext(),
28945
- getKetcherInstance = _useAppContext.getKetcherInstance;
28961
+ ketcherId = _useAppContext.ketcherId;
28946
28962
  var saveFile = function saveFile() {
28947
28963
  if (data) {
28948
28964
  try {
@@ -28957,7 +28973,7 @@ var SaveButton$1 = function SaveButton(props) {
28957
28973
  }
28958
28974
  };
28959
28975
  var saveImage = function saveImage() {
28960
- var ketcherInstance = getKetcherInstance();
28976
+ var ketcherInstance = ketcherProvider.getKetcher(ketcherId);
28961
28977
  if (options !== null && options !== void 0 && options.outputFormat) {
28962
28978
  ketcherInstance.generateImage(data, options).then(function (blob) {
28963
28979
  saveAs(blob, "".concat(filename, ".").concat(options.outputFormat));
@@ -29999,7 +30015,11 @@ function RecognizeDialog(prop) {
29999
30015
  fragment: fragment
30000
30016
  } : null;
30001
30017
  };
30002
- var ketcher = ketcherProvider.getKetcher();
30018
+ var _useAppContext = useAppContext(),
30019
+ ketcherId = _useAppContext.ketcherId;
30020
+ var ketcher = useMemo(function () {
30021
+ return ketcherProvider.getKetcher(ketcherId);
30022
+ }, [ketcherId]);
30003
30023
  useEffect(function () {
30004
30024
  onRecognize(file, version);
30005
30025
  }, [file, version]);
@@ -30213,7 +30233,11 @@ var MiewDialog = function MiewDialog(_ref) {
30213
30233
  _useState2 = _slicedToArray$1(_useState, 2),
30214
30234
  isInitialized = _useState2[0],
30215
30235
  setIsIsInitialized = _useState2[1];
30216
- var ketcher = ketcherProvider.getKetcher();
30236
+ var _useAppContext = useAppContext(),
30237
+ ketcherId = _useAppContext.ketcherId;
30238
+ var ketcher = useMemo(function () {
30239
+ return ketcherProvider.getKetcher(ketcherId);
30240
+ }, [ketcherId]);
30217
30241
  var isDisabled = useMemo(function () {
30218
30242
  return !isInitialized || (ketcher === null || ketcher === void 0 ? void 0 : ketcher.editor.render.options.viewOnlyMode) === true;
30219
30243
  }, [ketcher, isInitialized]);
@@ -31383,7 +31407,11 @@ var Open = function Open(props) {
31383
31407
  _useState12 = _slicedToArray$1(_useState11, 2),
31384
31408
  isLoading = _useState12[0],
31385
31409
  setIsLoading = _useState12[1];
31386
- var ketcher = ketcherProvider.getKetcher();
31410
+ var _useAppContext = useAppContext(),
31411
+ ketcherId = _useAppContext.ketcherId;
31412
+ var ketcher = useMemo(function () {
31413
+ return ketcherProvider.getKetcher(ketcherId);
31414
+ }, [ketcherId]);
31387
31415
  useEffect(function () {
31388
31416
  if (server) {
31389
31417
  fileOpener(server).then(function (chosenOpener) {
@@ -33061,8 +33089,8 @@ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o =
33061
33089
  function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
33062
33090
  var RemoveFG = function RemoveFG(props) {
33063
33091
  var _useAppContext = useAppContext(),
33064
- getKetcherInstance = _useAppContext.getKetcherInstance;
33065
- var editor = getKetcherInstance().editor;
33092
+ ketcherId = _useAppContext.ketcherId;
33093
+ var editor = ketcherProvider.getKetcher(ketcherId).editor;
33066
33094
  var fgIds = props.fgIds;
33067
33095
  var remove = function remove() {
33068
33096
  if (fgIds.length > 0) {
@@ -33388,9 +33416,17 @@ var Attach = function (_Component) {
33388
33416
  _this.tmpl = initTmpl(props.tmpl);
33389
33417
  onInit(_this.tmpl.struct.name, _this.tmpl.props);
33390
33418
  _this.onResult = _this.onResult.bind(_assertThisInitialized$2(_this));
33419
+ var ketcher = ketcherProvider.getKetcher(props.ketcherId);
33420
+ _this.oldKetcherEditor = ketcher.editor;
33391
33421
  return _this;
33392
33422
  }
33393
33423
  _createClass$2(Attach, [{
33424
+ key: "componentWillUnmount",
33425
+ value: function componentWillUnmount() {
33426
+ var ketcher = ketcherProvider.getKetcher(this.props.ketcherId);
33427
+ ketcher.addEditor(this.oldKetcherEditor);
33428
+ }
33429
+ }, {
33394
33430
  key: "onResult",
33395
33431
  value: function onResult() {
33396
33432
  var _this$props = this.props,
@@ -33458,6 +33494,7 @@ var Attach = function (_Component) {
33458
33494
  children: [jsx(Editor$2, {
33459
33495
  children: jsx(StructEditor, {
33460
33496
  className: "structEditor",
33497
+ ketcherId: this.props.ketcherId,
33461
33498
  struct: struct,
33462
33499
  onAttachEdit: onAttachEdit,
33463
33500
  tool: "attach",
@@ -34491,7 +34528,7 @@ var mapDispatchToProps$2 = function mapDispatchToProps(dispatch) {
34491
34528
  }
34492
34529
  };
34493
34530
  };
34494
- var mergeProps = function mergeProps(stateProps, dispatchProps) {
34531
+ var mergeProps = function mergeProps(stateProps, dispatchProps, ownProps) {
34495
34532
  var prop = stateProps.modal && stateProps.modal.prop;
34496
34533
  var initProps = prop ? omit(['onResult', 'onCancel'], prop) : {};
34497
34534
  return _objectSpread$5(_objectSpread$5({
@@ -34505,7 +34542,7 @@ var mergeProps = function mergeProps(stateProps, dispatchProps) {
34505
34542
  if (prop && prop.onCancel) prop.onCancel();
34506
34543
  dispatchProps.onCancel();
34507
34544
  }
34508
- });
34545
+ }, ownProps);
34509
34546
  };
34510
34547
  var ModalContainer = connect(mapStateToProps, mapDispatchToProps$2, mergeProps)(Modal);
34511
34548
 
@@ -34542,18 +34579,38 @@ function initEditor(dispatch, getState) {
34542
34579
  };
34543
34580
  var resetToSelect = function resetToSelect() {
34544
34581
  var force = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
34545
- return function (dispatch) {
34546
- var state = global.currentState;
34547
- var activeTool = state.actionState.activeTool.tool;
34548
- if (activeTool === 'select' && !force) return;
34549
- var selectMode = state.toolbar.visibleTools.select;
34550
- var resetOption = state.options.settings.resetToSelect;
34551
- if (resetOption === true || resetOption === activeTool || force === true)
34552
- dispatch({
34553
- type: 'ACTION',
34554
- action: configWithNonViewOnlyActionsDisabled[selectMode].action
34555
- });else updateAction();
34556
- };
34582
+ return function () {
34583
+ var _ref = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(dispatch) {
34584
+ var _state$actionState;
34585
+ var state, activeTool, selectMode, resetOption;
34586
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
34587
+ while (1) switch (_context.prev = _context.next) {
34588
+ case 0:
34589
+ state = getState();
34590
+ activeTool = (_state$actionState = state.actionState) === null || _state$actionState === void 0 ? void 0 : _state$actionState.activeTool.tool;
34591
+ if (!(!activeTool || activeTool === 'select' && !force)) {
34592
+ _context.next = 4;
34593
+ break;
34594
+ }
34595
+ return _context.abrupt("return");
34596
+ case 4:
34597
+ selectMode = state.toolbar.visibleTools.select;
34598
+ resetOption = state.options.settings.resetToSelect;
34599
+ if (resetOption === true || resetOption === activeTool || force === true)
34600
+ dispatch({
34601
+ type: 'ACTION',
34602
+ action: configWithNonViewOnlyActionsDisabled[selectMode].action
34603
+ });else updateAction();
34604
+ case 7:
34605
+ case "end":
34606
+ return _context.stop();
34607
+ }
34608
+ }, _callee);
34609
+ }));
34610
+ return function (_x) {
34611
+ return _ref.apply(this, arguments);
34612
+ };
34613
+ }();
34557
34614
  };
34558
34615
  return {
34559
34616
  onInit: function onInit(editor) {
@@ -34600,10 +34657,10 @@ function initEditor(dispatch, getState) {
34600
34657
  var params = {
34601
34658
  type: 'atom',
34602
34659
  values: elem.values,
34603
- disabledIds: Array.from(rgroups.entries()).reduce(function (acc, _ref) {
34604
- var _ref2 = _slicedToArray$1(_ref, 2),
34605
- rgid = _ref2[0],
34606
- rg = _ref2[1];
34660
+ disabledIds: Array.from(rgroups.entries()).reduce(function (acc, _ref2) {
34661
+ var _ref3 = _slicedToArray$1(_ref2, 2),
34662
+ rgid = _ref3[0],
34663
+ rg = _ref3[1];
34607
34664
  if (rg.frags.has(elem.fragId)) acc.push(rgid);
34608
34665
  return acc;
34609
34666
  }, [])
@@ -34621,8 +34678,8 @@ function initEditor(dispatch, getState) {
34621
34678
  }
34622
34679
  return dlg.then(toElement);
34623
34680
  },
34624
- onEnhancedStereoEdit: function onEnhancedStereoEdit(_ref3) {
34625
- var init = _extends$3q({}, (_objectDestructuringEmpty(_ref3), _ref3));
34681
+ onEnhancedStereoEdit: function onEnhancedStereoEdit(_ref4) {
34682
+ var init = _extends$3q({}, (_objectDestructuringEmpty(_ref4), _ref4));
34626
34683
  return sleep(0).then(function () {
34627
34684
  init = fromStereoLabel(init.stereoLabel);
34628
34685
  return openDialog(dispatch, 'enhancedStereo', {
@@ -35060,6 +35117,9 @@ var App = function App(props) {
35060
35117
  var dispatch = useDispatch();
35061
35118
  var checkServer = props.checkServer;
35062
35119
  useSubscriptionOnEvents();
35120
+ var _useAppContext = useAppContext(),
35121
+ ketcherId = _useAppContext.ketcherId,
35122
+ prevKetcherId = _useAppContext.prevKetcherId;
35063
35123
  useEffect(function () {
35064
35124
  checkServer();
35065
35125
  dispatch(initFGTemplates());
@@ -35068,6 +35128,7 @@ var App = function App(props) {
35068
35128
  dispatch(initLib([]));
35069
35129
  dispatch(initSaltsAndSolvents([]));
35070
35130
  dispatch(initFGroups([]));
35131
+ ketcherProvider.removeKetcherInstance(ketcherId);
35071
35132
  };
35072
35133
  }, []);
35073
35134
  var Editor = Editor$1;
@@ -35076,6 +35137,8 @@ var App = function App(props) {
35076
35137
  children: jsxs("div", {
35077
35138
  className: classes$1.app,
35078
35139
  children: [jsx(AppHiddenContainer, {}), jsx(Editor, {
35140
+ prevKetcherId: prevKetcherId,
35141
+ ketcherId: ketcherId,
35079
35142
  className: classes$1.canvas
35080
35143
  }), jsx(TopToolbarContainer, {
35081
35144
  className: classes$1.top,
@@ -35086,7 +35149,9 @@ var App = function App(props) {
35086
35149
  className: classes$1.bottom
35087
35150
  }), jsx(RightToolbarContainer, {
35088
35151
  className: classes$1.right
35089
- }), jsx(AppClipArea, {}), jsx(ModalContainer, {}), jsx(AbbreviationLookupContainer, {})]
35152
+ }), jsx(AppClipArea, {}), jsx(ModalContainer, {
35153
+ ketcherId: ketcherId
35154
+ }), jsx(AbbreviationLookupContainer, {})]
35090
35155
  })
35091
35156
  });
35092
35157
  };
@@ -35136,19 +35201,12 @@ function handleRightClick(getState) {
35136
35201
  }
35137
35202
  }
35138
35203
 
35139
- function initApp(element, appRoot, staticResourcesUrl, options, server, resolve, togglerComponent) {
35140
- var ketcherRef = null;
35141
- var setKetcher = function setKetcher(ketcher) {
35142
- ketcherRef = ketcher;
35143
- };
35144
- var ketcherId = uniqueId();
35204
+ function initApp(prevKetcherId, ketcherId, element, appRoot, staticResourcesUrl, options, server, resolve, togglerComponent) {
35145
35205
  var getServerSetter;
35146
35206
  var setEditor = function setEditor(editor) {
35147
35207
  var setServer = getServerSetter();
35148
35208
  resolve({
35149
35209
  editor: editor,
35150
- setKetcher: setKetcher,
35151
- ketcherId: ketcherId,
35152
35210
  setServer: setServer
35153
35211
  });
35154
35212
  };
@@ -35173,10 +35231,8 @@ function initApp(element, appRoot, staticResourcesUrl, options, server, resolve,
35173
35231
  },
35174
35232
  children: jsx(appContext.Provider, {
35175
35233
  value: {
35176
- getKetcherInstance: function getKetcherInstance() {
35177
- return ketcherRef;
35178
- },
35179
- ketcherId: ketcherId
35234
+ ketcherId: ketcherId,
35235
+ prevKetcherId: prevKetcherId
35180
35236
  },
35181
35237
  children: jsx(AppContainer, {
35182
35238
  togglerComponent: togglerComponent
@@ -35214,35 +35270,23 @@ var KetcherBuilder = function () {
35214
35270
  function KetcherBuilder() {
35215
35271
  _classCallCheck$2(this, KetcherBuilder);
35216
35272
  this.structService = null;
35217
- this.editor = null;
35218
35273
  this.serviceMode = null;
35219
35274
  this.formatterFactory = null;
35220
35275
  }
35221
35276
  _createClass$2(KetcherBuilder, [{
35222
35277
  key: "appendApiAsync",
35223
- value: function () {
35224
- var _appendApiAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(structServiceProvider) {
35225
- return _regeneratorRuntime.wrap(function _callee$(_context) {
35226
- while (1) switch (_context.prev = _context.next) {
35227
- case 0:
35228
- this.structService = createApi(structServiceProvider, DefaultStructServiceOptions);
35229
- case 1:
35230
- case "end":
35231
- return _context.stop();
35232
- }
35233
- }, _callee, this);
35234
- }));
35235
- function appendApiAsync(_x) {
35236
- return _appendApiAsync.apply(this, arguments);
35237
- }
35238
- return appendApiAsync;
35239
- }()
35278
+ value: function appendApiAsync(structServiceProvider) {
35279
+ this.structService = createApi(structServiceProvider, DefaultStructServiceOptions);
35280
+ this.formatterFactory = new FormatterFactory(this.structService);
35281
+ return this.structService;
35282
+ }
35240
35283
  }, {
35241
35284
  key: "reinitializeApi",
35242
- value: function reinitializeApi(structServiceProvider, setStructServiceToStore) {
35285
+ value: function reinitializeApi(ketcherId, structServiceProvider, setStructServiceToStore) {
35243
35286
  var _this = this;
35244
35287
  var oldStructService = this.structService;
35245
35288
  this.structService = createApi(structServiceProvider, DefaultStructServiceOptions);
35289
+ this.structService.addKetcherId(ketcherId);
35246
35290
  window.addEventListener(STRUCT_SERVICE_INITIALIZED_EVENT, function () {
35247
35291
  var _oldStructService$des;
35248
35292
  oldStructService === null || oldStructService === void 0 || (_oldStructService$des = oldStructService.destroy) === null || _oldStructService$des === void 0 || _oldStructService$des.call(oldStructService);
@@ -35250,7 +35294,7 @@ var KetcherBuilder = function () {
35250
35294
  KetcherLogger.warn('Structure service is not reinitialized');
35251
35295
  return;
35252
35296
  }
35253
- var ketcher = ketcherProvider.getKetcher();
35297
+ var ketcher = ketcherProvider.getKetcher(ketcherId);
35254
35298
  ketcher.reinitializeIndigo(_this.structService);
35255
35299
  IndigoProvider.setIndigo(_this.structService);
35256
35300
  setStructServiceToStore(_this.structService);
@@ -35267,47 +35311,41 @@ var KetcherBuilder = function () {
35267
35311
  }, {
35268
35312
  key: "appendUiAsync",
35269
35313
  value: function () {
35270
- var _appendUiAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee2(element, appRoot, staticResourcesUrl, errorHandler, buttons, togglerComponent, customButtons) {
35271
- var structService, cleanup, _yield$Promise, editor, setKetcher, ketcherId, setServer;
35272
- return _regeneratorRuntime.wrap(function _callee2$(_context2) {
35273
- while (1) switch (_context2.prev = _context2.next) {
35314
+ var _appendUiAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(prevKetcherId, ketcherId, element, appRoot, staticResourcesUrl, errorHandler, buttons, togglerComponent, customButtons) {
35315
+ var structService, cleanup, _yield$Promise, editor, setServer;
35316
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
35317
+ while (1) switch (_context.prev = _context.next) {
35274
35318
  case 0:
35275
35319
  structService = this.structService;
35276
35320
  cleanup = null;
35277
- _context2.next = 4;
35321
+ _context.next = 4;
35278
35322
  return new Promise(function (resolve) {
35279
- cleanup = initApp(element, appRoot, staticResourcesUrl, {
35323
+ cleanup = initApp(prevKetcherId, ketcherId, element, appRoot, staticResourcesUrl, {
35280
35324
  buttons: buttons || {},
35281
35325
  errorHandler: errorHandler || null,
35282
- version: "3.5.0-rc.2" ,
35283
- buildDate: "2025-06-13T10:31:57" ,
35326
+ version: "3.5.0-rc.4" ,
35327
+ buildDate: "2025-06-18T16:34:40" ,
35284
35328
  buildNumber: '',
35285
35329
  customButtons: customButtons || []
35286
35330
  }, structService, resolve, togglerComponent);
35287
35331
  });
35288
35332
  case 4:
35289
- _yield$Promise = _context2.sent;
35333
+ _yield$Promise = _context.sent;
35290
35334
  editor = _yield$Promise.editor;
35291
- setKetcher = _yield$Promise.setKetcher;
35292
- ketcherId = _yield$Promise.ketcherId;
35293
35335
  setServer = _yield$Promise.setServer;
35294
- this.editor = editor;
35295
- this.editor.errorHandler = errorHandler && typeof errorHandler === 'function' ? errorHandler :
35336
+ editor.errorHandler = errorHandler && typeof errorHandler === 'function' ? errorHandler :
35296
35337
  function () {};
35297
- this.formatterFactory = new FormatterFactory(structService);
35298
- return _context2.abrupt("return", {
35299
- setKetcher: setKetcher,
35300
- ketcherId: ketcherId,
35338
+ return _context.abrupt("return", {
35301
35339
  cleanup: cleanup,
35302
35340
  setServer: setServer
35303
35341
  });
35304
- case 13:
35342
+ case 9:
35305
35343
  case "end":
35306
- return _context2.stop();
35344
+ return _context.stop();
35307
35345
  }
35308
- }, _callee2, this);
35346
+ }, _callee, this);
35309
35347
  }));
35310
- function appendUiAsync(_x2, _x3, _x4, _x5, _x6, _x7, _x8) {
35348
+ function appendUiAsync(_x, _x2, _x3, _x4, _x5, _x6, _x7, _x8, _x9) {
35311
35349
  return _appendUiAsync.apply(this, arguments);
35312
35350
  }
35313
35351
  return appendUiAsync;
@@ -35324,11 +35362,11 @@ var KetcherBuilder = function () {
35324
35362
  if (!this.formatterFactory) {
35325
35363
  throw new Error('You should append StructureServiceFactory before building');
35326
35364
  }
35327
- var ketcher = new Ketcher(this.editor, this.structService, this.formatterFactory);
35365
+ var ketcher = new Ketcher(this.structService, this.formatterFactory);
35328
35366
  ketcher[this.serviceMode] = true;
35329
35367
  var userInput = document.location.search;
35330
35368
  if (userInput === '__proto__' || userInput === 'constructor' || userInput === 'prototype') {
35331
- return;
35369
+ return ketcher;
35332
35370
  }
35333
35371
  var params = new URLSearchParams(document.location.search);
35334
35372
  var initialMol = params.get('moll');
@@ -35336,7 +35374,7 @@ var KetcherBuilder = function () {
35336
35374
  ketcher.setMolecule(initialMol);
35337
35375
  }
35338
35376
  IndigoProvider.setIndigo(this.structService);
35339
- ketcherProvider.setKetcherInstance(ketcher);
35377
+ ketcherProvider.addKetcherInstance(ketcher);
35340
35378
  return ketcher;
35341
35379
  }
35342
35380
  }]);
@@ -35348,36 +35386,29 @@ function buildKetcherAsync(_x) {
35348
35386
  }
35349
35387
  function _buildKetcherAsync() {
35350
35388
  _buildKetcherAsync = _asyncToGenerator( _regeneratorRuntime.mark(function _callee(_ref) {
35351
- var element, appRoot, staticResourcesUrl, structServiceProvider, buttons, errorHandler, togglerComponent, customButtons, builder, _yield$builder$append, setKetcher, ketcherId, cleanup, setServer, ketcher;
35389
+ var element, appRoot, staticResourcesUrl, structServiceProvider, buttons, errorHandler, togglerComponent, customButtons, prevKetcherId, builder, structService, ketcher, _yield$builder$append, cleanup, setServer;
35352
35390
  return _regeneratorRuntime.wrap(function _callee$(_context) {
35353
35391
  while (1) switch (_context.prev = _context.next) {
35354
35392
  case 0:
35355
- element = _ref.element, appRoot = _ref.appRoot, staticResourcesUrl = _ref.staticResourcesUrl, structServiceProvider = _ref.structServiceProvider, buttons = _ref.buttons, errorHandler = _ref.errorHandler, togglerComponent = _ref.togglerComponent, customButtons = _ref.customButtons;
35393
+ element = _ref.element, appRoot = _ref.appRoot, staticResourcesUrl = _ref.staticResourcesUrl, structServiceProvider = _ref.structServiceProvider, buttons = _ref.buttons, errorHandler = _ref.errorHandler, togglerComponent = _ref.togglerComponent, customButtons = _ref.customButtons, prevKetcherId = _ref.ketcherId;
35356
35394
  builder = new KetcherBuilder();
35357
- _context.next = 4;
35358
- return builder.appendApiAsync(structServiceProvider);
35359
- case 4:
35395
+ structService = builder.appendApiAsync(structServiceProvider);
35360
35396
  builder.appendServiceMode(structServiceProvider.mode);
35361
- _context.next = 7;
35362
- return builder.appendUiAsync(element, appRoot, staticResourcesUrl, errorHandler, buttons, togglerComponent, customButtons);
35363
- case 7:
35397
+ ketcher = builder.build();
35398
+ structService.addKetcherId(ketcher.id);
35399
+ _context.next = 8;
35400
+ return builder.appendUiAsync(prevKetcherId, ketcher.id, element, appRoot, staticResourcesUrl, errorHandler, buttons, togglerComponent, customButtons);
35401
+ case 8:
35364
35402
  _yield$builder$append = _context.sent;
35365
- setKetcher = _yield$builder$append.setKetcher;
35366
- ketcherId = _yield$builder$append.ketcherId;
35367
35403
  cleanup = _yield$builder$append.cleanup;
35368
35404
  setServer = _yield$builder$append.setServer;
35369
- ketcher = builder.build();
35370
- if (ketcher) {
35371
- setKetcher(ketcher);
35372
- }
35373
35405
  return _context.abrupt("return", {
35374
35406
  ketcher: ketcher,
35375
- ketcherId: ketcherId,
35376
35407
  cleanup: cleanup,
35377
35408
  builder: builder,
35378
35409
  setServer: setServer
35379
35410
  });
35380
- case 15:
35411
+ case 12:
35381
35412
  case "end":
35382
35413
  return _context.stop();
35383
35414
  }
@@ -35409,31 +35440,48 @@ function MicromoleculesEditor(props) {
35409
35440
  width = _useResizeObserver.width;
35410
35441
  useEffect(function () {
35411
35442
  var _ketcherBuilderRef$cu;
35412
- (_ketcherBuilderRef$cu = ketcherBuilderRef.current) === null || _ketcherBuilderRef$cu === void 0 || _ketcherBuilderRef$cu.reinitializeApi(props.structServiceProvider, setServerRef.current);
35443
+ if (!props.ketcherId) {
35444
+ return;
35445
+ }
35446
+ (_ketcherBuilderRef$cu = ketcherBuilderRef.current) === null || _ketcherBuilderRef$cu === void 0 || _ketcherBuilderRef$cu.reinitializeApi(props.ketcherId, props.structServiceProvider, setServerRef.current);
35413
35447
  }, [structServiceProvider]);
35414
- var initKetcher = function initKetcher() {
35415
- var _initPromiseRef$curre;
35416
- appRootRef.current = createRoot(rootElRef.current);
35417
- initPromiseRef.current = buildKetcherAsync(_objectSpread$1(_objectSpread$1({}, props), {}, {
35418
- element: rootElRef.current,
35419
- appRoot: appRootRef.current
35448
+ var initKetcher = function () {
35449
+ var _ref = _asyncToGenerator( _regeneratorRuntime.mark(function _callee() {
35450
+ var _initPromiseRef$curre;
35451
+ return _regeneratorRuntime.wrap(function _callee$(_context) {
35452
+ while (1) switch (_context.prev = _context.next) {
35453
+ case 0:
35454
+ appRootRef.current = createRoot(rootElRef.current);
35455
+ initPromiseRef.current = buildKetcherAsync(_objectSpread$1(_objectSpread$1({}, props), {}, {
35456
+ element: rootElRef.current,
35457
+ appRoot: appRootRef.current
35458
+ }));
35459
+ (_initPromiseRef$curre = initPromiseRef.current) === null || _initPromiseRef$curre === void 0 || _initPromiseRef$curre.then(function (_ref2) {
35460
+ var _props$onSetKetcherId;
35461
+ var ketcher = _ref2.ketcher,
35462
+ cleanup = _ref2.cleanup,
35463
+ builder = _ref2.builder,
35464
+ setServer = _ref2.setServer;
35465
+ cleanupRef.current = cleanup;
35466
+ ketcherBuilderRef.current = builder;
35467
+ setServerRef.current = setServer;
35468
+ (_props$onSetKetcherId = props.onSetKetcherId) === null || _props$onSetKetcherId === void 0 || _props$onSetKetcherId.call(props, ketcher.id);
35469
+ if (typeof props.onInit === 'function' && ketcher) {
35470
+ props.onInit(ketcher);
35471
+ var ketcherInitEvent = new Event(ketcherInitEventName(ketcher.id));
35472
+ window.dispatchEvent(ketcherInitEvent);
35473
+ }
35474
+ });
35475
+ case 3:
35476
+ case "end":
35477
+ return _context.stop();
35478
+ }
35479
+ }, _callee);
35420
35480
  }));
35421
- (_initPromiseRef$curre = initPromiseRef.current) === null || _initPromiseRef$curre === void 0 || _initPromiseRef$curre.then(function (_ref) {
35422
- var ketcher = _ref.ketcher,
35423
- ketcherId = _ref.ketcherId,
35424
- cleanup = _ref.cleanup,
35425
- builder = _ref.builder,
35426
- setServer = _ref.setServer;
35427
- cleanupRef.current = cleanup;
35428
- ketcherBuilderRef.current = builder;
35429
- setServerRef.current = setServer;
35430
- if (typeof props.onInit === 'function' && ketcher) {
35431
- props.onInit(ketcher);
35432
- var ketcherInitEvent = new Event(ketcherInitEventName(ketcherId));
35433
- window.dispatchEvent(ketcherInitEvent);
35434
- }
35435
- });
35436
- };
35481
+ return function initKetcher() {
35482
+ return _ref.apply(this, arguments);
35483
+ };
35484
+ }();
35437
35485
  useEffect(function () {
35438
35486
  if (initPromiseRef.current === null) {
35439
35487
  initKetcher();
@@ -35570,9 +35618,8 @@ var ModeControl = function ModeControl(_ref3) {
35570
35618
 
35571
35619
  function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
35572
35620
  function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty$1(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
35573
- var MacromoleculesEditorComponent = lazy(
35574
- function () {
35575
- return import('./index.modern-87cd317d.js');
35621
+ var MacromoleculesEditorComponent = lazy(function () {
35622
+ return import('./index.modern-723c68e1.js');
35576
35623
  });
35577
35624
  var Editor = function Editor(props) {
35578
35625
  var _useState = useState(false),
@@ -35587,6 +35634,10 @@ var Editor = function Editor(props) {
35587
35634
  _useState6 = _slicedToArray$1(_useState5, 2),
35588
35635
  macromoleculesEditor = _useState6[0],
35589
35636
  setMacromoleculesEditor = _useState6[1];
35637
+ var _useState7 = useState(''),
35638
+ _useState8 = _slicedToArray$1(_useState7, 2),
35639
+ ketcherId = _useState8[0],
35640
+ setKetcherId = _useState8[1];
35590
35641
  var togglePolymerEditor = function togglePolymerEditor(toggleValue) {
35591
35642
  setShowPolymerEditor(toggleValue);
35592
35643
  window.isPolymerEditorTurnedOn = toggleValue;
@@ -35629,8 +35680,9 @@ var Editor = function Editor(props) {
35629
35680
  className: styles.switchingLoader,
35630
35681
  children: jsx(LoadingCircles, {})
35631
35682
  }),
35632
- children: jsx(MacromoleculesEditorComponent, {
35683
+ children: ketcherId && jsx(MacromoleculesEditorComponent, {
35633
35684
  togglerComponent: togglerComponent,
35685
+ ketcherId: ketcherId,
35634
35686
  isMacromoleculesEditorTurnedOn: showPolymerEditor,
35635
35687
  onInit: onInitMacromoleculesEditor
35636
35688
  })
@@ -35641,6 +35693,8 @@ var Editor = function Editor(props) {
35641
35693
  display: showPolymerEditor ? 'none' : undefined
35642
35694
  },
35643
35695
  children: jsx(MicromoleculesEditor, _objectSpread(_objectSpread({}, props), {}, {
35696
+ ketcherId: ketcherId,
35697
+ onSetKetcherId: setKetcherId,
35644
35698
  togglerComponent: togglerComponent,
35645
35699
  onInit: onInitMoleculesEditor
35646
35700
  }))