@bpmn-io/form-js-editor 0.6.0 → 0.6.1

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 (76) hide show
  1. package/dist/index.cjs +2 -3
  2. package/dist/index.cjs.map +1 -1
  3. package/dist/index.es.js +2 -3
  4. package/dist/index.es.js.map +1 -1
  5. package/dist/types/FormEditor.d.ts +140 -140
  6. package/dist/types/core/Debounce.d.ts +10 -10
  7. package/dist/types/core/EventBus.d.ts +1 -1
  8. package/dist/types/core/FieldFactory.d.ts +18 -18
  9. package/dist/types/core/FormFieldRegistry.d.ts +19 -19
  10. package/dist/types/core/index.d.ts +17 -17
  11. package/dist/types/features/editor-actions/FormEditorActions.d.ts +8 -8
  12. package/dist/types/features/editor-actions/index.d.ts +6 -6
  13. package/dist/types/features/keyboard/FormEditorKeyboardBindings.d.ts +8 -8
  14. package/dist/types/features/keyboard/index.d.ts +7 -7
  15. package/dist/types/features/modeling/Modeling.d.ts +34 -34
  16. package/dist/types/features/modeling/behavior/IdBehavior.d.ts +7 -7
  17. package/dist/types/features/modeling/behavior/KeyBehavior.d.ts +7 -7
  18. package/dist/types/features/modeling/behavior/index.d.ts +8 -8
  19. package/dist/types/features/modeling/cmd/AddFormFieldHandler.d.ts +16 -16
  20. package/dist/types/features/modeling/cmd/EditFormFieldHandler.d.ts +16 -16
  21. package/dist/types/features/modeling/cmd/MoveFormFieldHandler.d.ts +17 -17
  22. package/dist/types/features/modeling/cmd/RemoveFormFieldHandler.d.ts +16 -16
  23. package/dist/types/features/modeling/cmd/UpdateIdClaimHandler.d.ts +14 -14
  24. package/dist/types/features/modeling/cmd/UpdateKeyClaimHandler.d.ts +14 -14
  25. package/dist/types/features/modeling/cmd/Util.d.ts +4 -4
  26. package/dist/types/features/modeling/index.d.ts +7 -7
  27. package/dist/types/features/selection/Selection.d.ts +14 -14
  28. package/dist/types/features/selection/SelectionBehavior.d.ts +7 -7
  29. package/dist/types/features/selection/index.d.ts +8 -8
  30. package/dist/types/import/Importer.d.ts +51 -51
  31. package/dist/types/import/index.d.ts +5 -5
  32. package/dist/types/index.d.ts +15 -15
  33. package/dist/types/render/Renderer.d.ts +26 -26
  34. package/dist/types/render/components/FormEditor.d.ts +1 -1
  35. package/dist/types/render/components/palette/Palette.d.ts +1 -1
  36. package/dist/types/render/components/palette/icons/index.d.ts +11 -11
  37. package/dist/types/render/components/properties-panel/PropertiesPanel.d.ts +1 -1
  38. package/dist/types/render/components/properties-panel/Util.d.ts +6 -6
  39. package/dist/types/render/components/properties-panel/components/CheckboxInput.d.ts +1 -1
  40. package/dist/types/render/components/properties-panel/components/CheckboxInputEntry.d.ts +1 -1
  41. package/dist/types/render/components/properties-panel/components/CollapsibleEntry.d.ts +1 -1
  42. package/dist/types/render/components/properties-panel/components/Group.d.ts +1 -1
  43. package/dist/types/render/components/properties-panel/components/NumberInput.d.ts +1 -1
  44. package/dist/types/render/components/properties-panel/components/NumberInputEntry.d.ts +1 -1
  45. package/dist/types/render/components/properties-panel/components/Select.d.ts +1 -1
  46. package/dist/types/render/components/properties-panel/components/SelectEntry.d.ts +1 -1
  47. package/dist/types/render/components/properties-panel/components/TextInput.d.ts +1 -1
  48. package/dist/types/render/components/properties-panel/components/TextInputEntry.d.ts +1 -1
  49. package/dist/types/render/components/properties-panel/components/Textarea.d.ts +1 -1
  50. package/dist/types/render/components/properties-panel/components/TextareaEntry.d.ts +1 -1
  51. package/dist/types/render/components/properties-panel/components/index.d.ts +12 -12
  52. package/dist/types/render/components/properties-panel/entries/ActionEntry.d.ts +1 -1
  53. package/dist/types/render/components/properties-panel/entries/ColumnsEntry.d.ts +1 -1
  54. package/dist/types/render/components/properties-panel/entries/DefaultValueEntry.d.ts +1 -1
  55. package/dist/types/render/components/properties-panel/entries/DescriptionEntry.d.ts +1 -1
  56. package/dist/types/render/components/properties-panel/entries/DisabledEntry.d.ts +1 -1
  57. package/dist/types/render/components/properties-panel/entries/IdEntry.d.ts +1 -1
  58. package/dist/types/render/components/properties-panel/entries/KeyEntry.d.ts +1 -1
  59. package/dist/types/render/components/properties-panel/entries/LabelEntry.d.ts +1 -1
  60. package/dist/types/render/components/properties-panel/entries/TextEntry.d.ts +1 -1
  61. package/dist/types/render/components/properties-panel/entries/ValueEntry.d.ts +1 -1
  62. package/dist/types/render/components/properties-panel/entries/index.d.ts +10 -10
  63. package/dist/types/render/components/properties-panel/groups/GeneralGroup.d.ts +1 -1
  64. package/dist/types/render/components/properties-panel/groups/ValidationGroup.d.ts +1 -1
  65. package/dist/types/render/components/properties-panel/groups/ValuesGroup.d.ts +1 -1
  66. package/dist/types/render/components/properties-panel/groups/index.d.ts +3 -3
  67. package/dist/types/render/components/properties-panel/icons/index.d.ts +1 -1
  68. package/dist/types/render/context/DragAndDropContext.d.ts +4 -4
  69. package/dist/types/render/context/FormEditorContext.d.ts +11 -11
  70. package/dist/types/render/context/index.d.ts +2 -2
  71. package/dist/types/render/hooks/index.d.ts +3 -3
  72. package/dist/types/render/hooks/useDebounce.d.ts +1 -1
  73. package/dist/types/render/hooks/usePrevious.d.ts +1 -1
  74. package/dist/types/render/hooks/useService.d.ts +1 -1
  75. package/dist/types/render/index.d.ts +8 -8
  76. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.es.js","sources":["../../../node_modules/diagram-js/lib/core/EventBus.js","../src/core/Debounce.js","../src/core/FieldFactory.js","../src/core/FormFieldRegistry.js","../src/import/Importer.js","../src/import/index.js","../src/render/context/DragAndDropContext.js","../src/render/context/FormEditorContext.js","../src/render/hooks/useService.js","../src/render/components/palette/icons/Button.svg","../src/render/components/palette/icons/Checkbox.svg","../src/render/components/palette/icons/Form.svg","../src/render/components/palette/icons/Group.svg","../src/render/components/palette/icons/Number.svg","../src/render/components/palette/icons/Radio.svg","../src/render/components/palette/icons/Select.svg","../src/render/components/palette/icons/Text.svg","../src/render/components/palette/icons/Textfield.svg","../src/render/components/palette/icons/index.js","../src/render/components/palette/Palette.js","../src/render/components/properties-panel/Util.js","../src/render/components/properties-panel/components/CheckboxInput.js","../src/render/hooks/usePrevious.js","../src/render/hooks/useDebounce.js","../src/render/components/properties-panel/components/NumberInput.js","../src/render/components/properties-panel/components/Select.js","../src/render/components/properties-panel/components/Textarea.js","../src/render/components/properties-panel/components/TextInput.js","../src/render/components/properties-panel/components/CheckboxInputEntry.js","../src/render/components/properties-panel/components/NumberInputEntry.js","../src/render/components/properties-panel/components/SelectEntry.js","../src/render/components/properties-panel/components/TextareaEntry.js","../src/render/components/properties-panel/components/TextInputEntry.js","../src/render/components/properties-panel/icons/pp-create.svg","../src/render/components/properties-panel/icons/pp-list-arrow.svg","../src/render/components/properties-panel/icons/pp-list-delete.svg","../src/render/components/properties-panel/icons/pp-section-arrow.svg","../src/render/components/properties-panel/components/CollapsibleEntry.js","../src/render/components/properties-panel/components/Group.js","../src/render/components/properties-panel/entries/ActionEntry.js","../src/render/components/properties-panel/entries/ColumnsEntry.js","../src/render/components/properties-panel/entries/DescriptionEntry.js","../src/render/components/properties-panel/entries/DefaultValueEntry.js","../src/render/components/properties-panel/entries/DisabledEntry.js","../src/render/components/properties-panel/entries/IdEntry.js","../src/render/components/properties-panel/entries/KeyEntry.js","../src/render/components/properties-panel/entries/LabelEntry.js","../src/render/components/properties-panel/entries/TextEntry.js","../src/render/components/properties-panel/entries/ValueEntry.js","../src/render/components/properties-panel/groups/GeneralGroup.js","../src/render/components/properties-panel/groups/ValidationGroup.js","../src/render/components/properties-panel/groups/ValuesGroup.js","../src/render/components/properties-panel/PropertiesPanel.js","../src/render/components/FormEditor.js","../src/render/Renderer.js","../src/render/index.js","../src/core/index.js","../../../node_modules/diagram-js/lib/features/editor-actions/EditorActions.js","../../../node_modules/diagram-js/lib/features/editor-actions/index.js","../src/features/editor-actions/FormEditorActions.js","../src/features/editor-actions/index.js","../../../node_modules/diagram-js/lib/features/keyboard/KeyboardUtil.js","../../../node_modules/diagram-js/lib/features/keyboard/Keyboard.js","../../../node_modules/diagram-js/lib/features/keyboard/KeyboardBindings.js","../../../node_modules/diagram-js/lib/features/keyboard/index.js","../src/features/keyboard/FormEditorKeyboardBindings.js","../src/features/keyboard/index.js","../src/features/modeling/cmd/Util.js","../src/features/modeling/cmd/AddFormFieldHandler.js","../src/features/modeling/cmd/EditFormFieldHandler.js","../src/features/modeling/cmd/MoveFormFieldHandler.js","../src/features/modeling/cmd/RemoveFormFieldHandler.js","../src/features/modeling/cmd/UpdateIdClaimHandler.js","../src/features/modeling/cmd/UpdateKeyClaimHandler.js","../src/features/modeling/Modeling.js","../../../node_modules/diagram-js/lib/command/CommandInterceptor.js","../src/features/modeling/behavior/IdBehavior.js","../src/features/modeling/behavior/KeyBehavior.js","../src/features/modeling/behavior/index.js","../../../node_modules/diagram-js/lib/command/CommandStack.js","../../../node_modules/diagram-js/lib/command/index.js","../src/features/modeling/index.js","../src/features/selection/Selection.js","../src/features/selection/SelectionBehavior.js","../src/features/selection/index.js","../src/FormEditor.js","../src/index.js"],"sourcesContent":["import {\n isFunction,\n isArray,\n isNumber,\n bind,\n assign\n} from 'min-dash';\n\nvar FN_REF = '__fn';\n\nvar DEFAULT_PRIORITY = 1000;\n\nvar slice = Array.prototype.slice;\n\n/**\n * A general purpose event bus.\n *\n * This component is used to communicate across a diagram instance.\n * Other parts of a diagram can use it to listen to and broadcast events.\n *\n *\n * ## Registering for Events\n *\n * The event bus provides the {@link EventBus#on} and {@link EventBus#once}\n * methods to register for events. {@link EventBus#off} can be used to\n * remove event registrations. Listeners receive an instance of {@link Event}\n * as the first argument. It allows them to hook into the event execution.\n *\n * ```javascript\n *\n * // listen for event\n * eventBus.on('foo', function(event) {\n *\n * // access event type\n * event.type; // 'foo'\n *\n * // stop propagation to other listeners\n * event.stopPropagation();\n *\n * // prevent event default\n * event.preventDefault();\n * });\n *\n * // listen for event with custom payload\n * eventBus.on('bar', function(event, payload) {\n * console.log(payload);\n * });\n *\n * // listen for event returning value\n * eventBus.on('foobar', function(event) {\n *\n * // stop event propagation + prevent default\n * return false;\n *\n * // stop event propagation + return custom result\n * return {\n * complex: 'listening result'\n * };\n * });\n *\n *\n * // listen with custom priority (default=1000, higher is better)\n * eventBus.on('priorityfoo', 1500, function(event) {\n * console.log('invoked first!');\n * });\n *\n *\n * // listen for event and pass the context (`this`)\n * eventBus.on('foobar', function(event) {\n * this.foo();\n * }, this);\n * ```\n *\n *\n * ## Emitting Events\n *\n * Events can be emitted via the event bus using {@link EventBus#fire}.\n *\n * ```javascript\n *\n * // false indicates that the default action\n * // was prevented by listeners\n * if (eventBus.fire('foo') === false) {\n * console.log('default has been prevented!');\n * };\n *\n *\n * // custom args + return value listener\n * eventBus.on('sum', function(event, a, b) {\n * return a + b;\n * });\n *\n * // you can pass custom arguments + retrieve result values.\n * var sum = eventBus.fire('sum', 1, 2);\n * console.log(sum); // 3\n * ```\n */\nexport default function EventBus() {\n this._listeners = {};\n\n // cleanup on destroy on lowest priority to allow\n // message passing until the bitter end\n this.on('diagram.destroy', 1, this._destroy, this);\n}\n\n\n/**\n * Register an event listener for events with the given name.\n *\n * The callback will be invoked with `event, ...additionalArguments`\n * that have been passed to {@link EventBus#fire}.\n *\n * Returning false from a listener will prevent the events default action\n * (if any is specified). To stop an event from being processed further in\n * other listeners execute {@link Event#stopPropagation}.\n *\n * Returning anything but `undefined` from a listener will stop the listener propagation.\n *\n * @param {string|Array<string>} events\n * @param {number} [priority=1000] the priority in which this listener is called, larger is higher\n * @param {Function} callback\n * @param {Object} [that] Pass context (`this`) to the callback\n */\nEventBus.prototype.on = function(events, priority, callback, that) {\n\n events = isArray(events) ? events : [ events ];\n\n if (isFunction(priority)) {\n that = callback;\n callback = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (!isNumber(priority)) {\n throw new Error('priority must be a number');\n }\n\n var actualCallback = callback;\n\n if (that) {\n actualCallback = bind(callback, that);\n\n // make sure we remember and are able to remove\n // bound callbacks via {@link #off} using the original\n // callback\n actualCallback[FN_REF] = callback[FN_REF] || callback;\n }\n\n var self = this;\n\n events.forEach(function(e) {\n self._addListener(e, {\n priority: priority,\n callback: actualCallback,\n next: null\n });\n });\n};\n\n\n/**\n * Register an event listener that is executed only once.\n *\n * @param {string} event the event name to register for\n * @param {number} [priority=1000] the priority in which this listener is called, larger is higher\n * @param {Function} callback the callback to execute\n * @param {Object} [that] Pass context (`this`) to the callback\n */\nEventBus.prototype.once = function(event, priority, callback, that) {\n var self = this;\n\n if (isFunction(priority)) {\n that = callback;\n callback = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (!isNumber(priority)) {\n throw new Error('priority must be a number');\n }\n\n function wrappedCallback() {\n wrappedCallback.__isTomb = true;\n\n var result = callback.apply(that, arguments);\n\n self.off(event, wrappedCallback);\n\n return result;\n }\n\n // make sure we remember and are able to remove\n // bound callbacks via {@link #off} using the original\n // callback\n wrappedCallback[FN_REF] = callback;\n\n this.on(event, priority, wrappedCallback);\n};\n\n\n/**\n * Removes event listeners by event and callback.\n *\n * If no callback is given, all listeners for a given event name are being removed.\n *\n * @param {string|Array<string>} events\n * @param {Function} [callback]\n */\nEventBus.prototype.off = function(events, callback) {\n\n events = isArray(events) ? events : [ events ];\n\n var self = this;\n\n events.forEach(function(event) {\n self._removeListener(event, callback);\n });\n\n};\n\n\n/**\n * Create an EventBus event.\n *\n * @param {Object} data\n *\n * @return {Object} event, recognized by the eventBus\n */\nEventBus.prototype.createEvent = function(data) {\n var event = new InternalEvent();\n\n event.init(data);\n\n return event;\n};\n\n\n/**\n * Fires a named event.\n *\n * @example\n *\n * // fire event by name\n * events.fire('foo');\n *\n * // fire event object with nested type\n * var event = { type: 'foo' };\n * events.fire(event);\n *\n * // fire event with explicit type\n * var event = { x: 10, y: 20 };\n * events.fire('element.moved', event);\n *\n * // pass additional arguments to the event\n * events.on('foo', function(event, bar) {\n * alert(bar);\n * });\n *\n * events.fire({ type: 'foo' }, 'I am bar!');\n *\n * @param {string} [name] the optional event name\n * @param {Object} [event] the event object\n * @param {...Object} additional arguments to be passed to the callback functions\n *\n * @return {boolean} the events return value, if specified or false if the\n * default action was prevented by listeners\n */\nEventBus.prototype.fire = function(type, data) {\n var event,\n firstListener,\n returnValue,\n args;\n\n args = slice.call(arguments);\n\n if (typeof type === 'object') {\n data = type;\n type = data.type;\n }\n\n if (!type) {\n throw new Error('no event type specified');\n }\n\n firstListener = this._listeners[type];\n\n if (!firstListener) {\n return;\n }\n\n // we make sure we fire instances of our home made\n // events here. We wrap them only once, though\n if (data instanceof InternalEvent) {\n\n // we are fine, we alread have an event\n event = data;\n } else {\n event = this.createEvent(data);\n }\n\n // ensure we pass the event as the first parameter\n args[0] = event;\n\n // original event type (in case we delegate)\n var originalType = event.type;\n\n // update event type before delegation\n if (type !== originalType) {\n event.type = type;\n }\n\n try {\n returnValue = this._invokeListeners(event, args, firstListener);\n } finally {\n\n // reset event type after delegation\n if (type !== originalType) {\n event.type = originalType;\n }\n }\n\n // set the return value to false if the event default\n // got prevented and no other return value exists\n if (returnValue === undefined && event.defaultPrevented) {\n returnValue = false;\n }\n\n return returnValue;\n};\n\n\nEventBus.prototype.handleError = function(error) {\n return this.fire('error', { error: error }) === false;\n};\n\n\nEventBus.prototype._destroy = function() {\n this._listeners = {};\n};\n\nEventBus.prototype._invokeListeners = function(event, args, listener) {\n\n var returnValue;\n\n while (listener) {\n\n // handle stopped propagation\n if (event.cancelBubble) {\n break;\n }\n\n returnValue = this._invokeListener(event, args, listener);\n\n listener = listener.next;\n }\n\n return returnValue;\n};\n\nEventBus.prototype._invokeListener = function(event, args, listener) {\n\n var returnValue;\n\n if (listener.callback.__isTomb) {\n return returnValue;\n }\n\n try {\n\n // returning false prevents the default action\n returnValue = invokeFunction(listener.callback, args);\n\n // stop propagation on return value\n if (returnValue !== undefined) {\n event.returnValue = returnValue;\n event.stopPropagation();\n }\n\n // prevent default on return false\n if (returnValue === false) {\n event.preventDefault();\n }\n } catch (error) {\n if (!this.handleError(error)) {\n console.error('unhandled error in event listener', error);\n\n throw error;\n }\n }\n\n return returnValue;\n};\n\n/*\n * Add new listener with a certain priority to the list\n * of listeners (for the given event).\n *\n * The semantics of listener registration / listener execution are\n * first register, first serve: New listeners will always be inserted\n * after existing listeners with the same priority.\n *\n * Example: Inserting two listeners with priority 1000 and 1300\n *\n * * before: [ 1500, 1500, 1000, 1000 ]\n * * after: [ 1500, 1500, (new=1300), 1000, 1000, (new=1000) ]\n *\n * @param {string} event\n * @param {Object} listener { priority, callback }\n */\nEventBus.prototype._addListener = function(event, newListener) {\n\n var listener = this._getListeners(event),\n previousListener;\n\n // no prior listeners\n if (!listener) {\n this._setListeners(event, newListener);\n\n return;\n }\n\n // ensure we order listeners by priority from\n // 0 (high) to n > 0 (low)\n while (listener) {\n\n if (listener.priority < newListener.priority) {\n\n newListener.next = listener;\n\n if (previousListener) {\n previousListener.next = newListener;\n } else {\n this._setListeners(event, newListener);\n }\n\n return;\n }\n\n previousListener = listener;\n listener = listener.next;\n }\n\n // add new listener to back\n previousListener.next = newListener;\n};\n\n\nEventBus.prototype._getListeners = function(name) {\n return this._listeners[name];\n};\n\nEventBus.prototype._setListeners = function(name, listener) {\n this._listeners[name] = listener;\n};\n\nEventBus.prototype._removeListener = function(event, callback) {\n\n var listener = this._getListeners(event),\n nextListener,\n previousListener,\n listenerCallback;\n\n if (!callback) {\n\n // clear listeners\n this._setListeners(event, null);\n\n return;\n }\n\n while (listener) {\n\n nextListener = listener.next;\n\n listenerCallback = listener.callback;\n\n if (listenerCallback === callback || listenerCallback[FN_REF] === callback) {\n if (previousListener) {\n previousListener.next = nextListener;\n } else {\n\n // new first listener\n this._setListeners(event, nextListener);\n }\n }\n\n previousListener = listener;\n listener = nextListener;\n }\n};\n\n/**\n * A event that is emitted via the event bus.\n */\nfunction InternalEvent() { }\n\nInternalEvent.prototype.stopPropagation = function() {\n this.cancelBubble = true;\n};\n\nInternalEvent.prototype.preventDefault = function() {\n this.defaultPrevented = true;\n};\n\nInternalEvent.prototype.init = function(data) {\n assign(this, data || {});\n};\n\n\n/**\n * Invoke function. Be fast...\n *\n * @param {Function} fn\n * @param {Array<Object>} args\n *\n * @return {Any}\n */\nfunction invokeFunction(fn, args) {\n return fn.apply(null, args);\n}\n","import { debounce } from 'min-dash';\n\n/**\n * A factory to create a configurable debouncer.\n *\n * @param {number|boolean} [config=true]\n */\nexport default function DebounceFactory(config=true) {\n\n const timeout = typeof config === 'number' ? config : config ? 300 : 0;\n\n if (timeout) {\n return fn => debounce(fn, timeout);\n } else {\n return fn => fn;\n }\n}\n\nDebounceFactory.$inject = [ 'config.debounce' ];","export default class FieldFactory {\n\n /**\n * @constructor\n *\n * @param { import('./FormFieldRegistry').default } formFieldRegistry\n * @param { import('@bpmn-io/form-js-viewer').FormFields } formFields\n */\n constructor(formFieldRegistry, formFields) {\n this._formFieldRegistry = formFieldRegistry;\n this._formFields = formFields;\n }\n\n create(attrs, applyDefaults = true) {\n\n const {\n id,\n key,\n type\n } = attrs;\n\n const fieldDefinition = this._formFields.get(type);\n\n if (!fieldDefinition) {\n throw new Error(`form field of type <${ type }> not supported`);\n }\n\n if (id && this._formFieldRegistry._ids.assigned(id)) {\n throw new Error(`ID <${ id }> already assigned`);\n }\n\n if (key && this._formFieldRegistry._keys.assigned(key)) {\n throw new Error(`key <${ key }> already assigned`);\n }\n\n const labelAttrs = applyDefaults && fieldDefinition.label ? {\n label: fieldDefinition.label\n } : {};\n\n const field = fieldDefinition.create({\n ...labelAttrs,\n ...attrs\n });\n\n this._ensureId(field);\n\n if (fieldDefinition.keyed) {\n this._ensureKey(field, applyDefaults);\n }\n\n return field;\n }\n\n _ensureId(field) {\n\n if (field.id) {\n this._formFieldRegistry._ids.claim(field.id, field);\n\n return;\n }\n\n let prefix = 'Field';\n\n if (field.type === 'default') {\n prefix = 'Form';\n }\n\n field.id = this._formFieldRegistry._ids.nextPrefixed(`${prefix}_`, field);\n }\n\n _ensureKey(field, applyDefaults) {\n\n if (field.key) {\n this._formFieldRegistry._keys.claim(field.key, field);\n\n return;\n }\n\n if (applyDefaults) {\n let prefix = 'field';\n\n field.key = this._formFieldRegistry._keys.nextPrefixed(`${prefix}_`, field);\n }\n }\n}\n\n\nFieldFactory.$inject = [\n 'formFieldRegistry',\n 'formFields'\n];","import {\n FormFieldRegistry as BaseFieldRegistry\n} from '@bpmn-io/form-js-viewer';\n\n\nexport default class FormFieldRegistry extends BaseFieldRegistry {\n\n /**\n * Updates a form fields id.\n *\n * @param {Object} formField\n * @param {string} newId\n */\n updateId(formField, newId) {\n\n this._validateId(newId);\n\n this._eventBus.fire('formField.updateId', {\n formField,\n newId: newId\n });\n\n this.remove(formField);\n\n formField.id = newId;\n\n this.add(formField);\n\n // TODO(nikku): make this a proper object graph so we\n // do not have to deal with IDs this way...\n if ('components' in formField) {\n for (const component of formField.components) {\n component._parent = newId;\n }\n }\n\n }\n\n\n /**\n * Validate the suitability of the given id and signals a problem\n * with an exception.\n *\n * @param {string} id\n *\n * @throws {Error} if id is empty or already assigned\n */\n _validateId(id) {\n if (!id) {\n throw new Error('formField must have an id');\n }\n\n if (this.get(id)) {\n throw new Error('formField with id ' + id + ' already added');\n }\n }\n\n}","import { clone } from '@bpmn-io/form-js-viewer';\n\n\nexport default class Importer {\n\n /**\n * @constructor\n * @param { import('../core/FormFieldRegistry').default } formFieldRegistry\n * @param { import('../core/FieldFactory').default } fieldFactory\n */\n constructor(formFieldRegistry, fieldFactory) {\n this._formFieldRegistry = formFieldRegistry;\n this._fieldFactory = fieldFactory;\n }\n\n /**\n * Import schema creating fields, attaching additional\n * information to each field and adding fields to the\n * field registry.\n *\n * Additional information attached:\n *\n * * `id` (unless present)\n * * `_parent`\n * * `_path`\n *\n * @param {any} schema\n *\n * @typedef {{ warnings: Error[], schema: any }} ImportResult\n * @returns {ImportResult}\n */\n importSchema(schema) {\n\n // TODO: Add warnings\n const warnings = [];\n\n try {\n const importedSchema = this.importFormField(clone(schema));\n\n return {\n schema: importedSchema,\n warnings\n };\n } catch (err) {\n err.warnings = warnings;\n\n throw err;\n }\n }\n\n /**\n * @param {{[x: string]: any}} fieldAttrs\n * @param {String} [parentId]\n * @param {number} [index]\n *\n * @return {any} field\n */\n importFormField(fieldAttrs, parentId, index) {\n const {\n components,\n id,\n key\n } = fieldAttrs;\n\n let parent, path;\n\n if (parentId) {\n parent = this._formFieldRegistry.get(parentId);\n }\n\n // validate <id> uniqueness\n if (id && this._formFieldRegistry._ids.assigned(id)) {\n throw new Error(`form field with id <${ id }> already exists`);\n }\n\n // validate <key> uniqueness\n if (key && this._formFieldRegistry._keys.assigned(key)) {\n throw new Error(`form field with key <${ key }> already exists`);\n }\n\n // set form field path\n path = parent ? [ ...parent._path, 'components', index ] : [];\n\n const field = this._fieldFactory.create({\n ...fieldAttrs,\n _path: path,\n _parent: parent && parent.id\n }, false);\n\n this._formFieldRegistry.add(field);\n\n if (components) {\n field.components = this.importFormFields(components, field.id);\n }\n\n return field;\n }\n\n /**\n * @param {Array<any>} components\n * @param {string} parentId\n *\n * @return {Array<any>} imported components\n */\n importFormFields(components, parentId) {\n return components.map((component, index) => {\n return this.importFormField(component, parentId, index);\n });\n }\n\n}\n\nImporter.$inject = [ 'formFieldRegistry', 'fieldFactory' ];","import Importer from './Importer';\n\nexport default {\n importer: [ 'type', Importer ]\n};","import { createContext } from 'preact';\n\nconst DragAndDropContext = createContext({\n drake: null\n});\n\nexport default DragAndDropContext;","import { createContext } from 'preact';\n\n/**\n * @param {string} type\n * @param {boolean} [strict]\n *\n * @returns {any}\n */\nfunction getService(type, strict) {}\n\nconst FormEditorContext = createContext({\n getService\n});\n\nexport default FormEditorContext;","import {\n useContext\n} from 'preact/hooks';\n\nimport { FormEditorContext } from '../context';\n\n\nexport default function(type, strict) {\n const {\n getService\n } = useContext(FormEditorContext);\n\n return getService(type, strict);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M45 17a3 3 0 013 3v14a3 3 0 01-3 3H9a3 3 0 01-3-3V20a3 3 0 013-3h36zm-9 8.889H18v2.222h18V25.89z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34 18H20a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V20a2 2 0 00-2-2zm-9 14l-5-5 1.41-1.41L25 29.17l7.59-7.59L34 23l-9 9z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"15\",\n y: \"17\",\n width: \"24\",\n height: \"4\",\n rx: \"1\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"15\",\n y: \"25\",\n width: \"24\",\n height: \"4\",\n rx: \"1\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"15\",\n y: \"33\",\n width: \"13\",\n height: \"4\",\n rx: \"1\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M8 33v5a1 1 0 001 1h4v2H9a3 3 0 01-3-3v-5h2zm18 6v2H15v-2h11zm13 0v2H28v-2h11zm9-6v5a3 3 0 01-3 3h-4v-2h4a1 1 0 00.993-.883L46 38v-5h2zM8 22v9H6v-9h2zm40 0v9h-2v-9h2zm-35-9v2H9a1 1 0 00-.993.883L8 16v4H6v-4a3 3 0 013-3h4zm32 0a3 3 0 013 3v4h-2v-4a1 1 0 00-.883-.993L45 15h-4v-2h4zm-6 0v2H28v-2h11zm-13 0v2H15v-2h11z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1zM35 28.444h7l-3.5 4-3.5-4zM35 26h7l-3.5-4-3.5 4z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27 22c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1zm-12 7h9l-4.5 6-4.5-6z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.58 33.77h-3l-1.18-3.08H11l-1.1 3.08H7l5.27-13.54h2.89zm-5-5.36l-1.86-5-1.83 5zM22 20.23h5.41a15.47 15.47 0 012.4.14 3.42 3.42 0 011.41.55 3.47 3.47 0 011 1.14 3 3 0 01.42 1.58 3.26 3.26 0 01-1.91 2.94 3.63 3.63 0 011.91 1.22 3.28 3.28 0 01.66 2 4 4 0 01-.43 1.8 3.63 3.63 0 01-1.09 1.4 3.89 3.89 0 01-1.83.65q-.69.07-3.3.09H22zm2.73 2.25v3.13h3.8a1.79 1.79 0 001.1-.49 1.41 1.41 0 00.41-1 1.49 1.49 0 00-.35-1 1.54 1.54 0 00-1-.48c-.27 0-1.05-.05-2.34-.05zm0 5.39v3.62h2.57a11.52 11.52 0 001.88-.09 1.65 1.65 0 001-.54 1.6 1.6 0 00.38-1.14 1.75 1.75 0 00-.29-1 1.69 1.69 0 00-.86-.62 9.28 9.28 0 00-2.41-.23zM44.35 28.79l2.65.84a5.94 5.94 0 01-2 3.29A5.74 5.74 0 0141.38 34a5.87 5.87 0 01-4.44-1.84 7.09 7.09 0 01-1.73-5A7.43 7.43 0 0137 21.87 6 6 0 0141.54 20a5.64 5.64 0 014 1.47A5.33 5.33 0 0147 24l-2.7.65a2.8 2.8 0 00-2.86-2.27A3.09 3.09 0 0039 23.42a5.31 5.31 0 00-.93 3.5 5.62 5.62 0 00.93 3.65 3 3 0 002.4 1.09 2.72 2.72 0 001.82-.66 4 4 0 001.13-2.21z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1zm-32 4v10h-2V22h2z\"\n})));","import ButtonIcon from './Button.svg';\nimport CheckboxIcon from './Checkbox.svg';\nimport FormIcon from './Form.svg';\nimport ColumnsIcon from './Group.svg';\nimport NumberIcon from './Number.svg';\nimport RadioIcon from './Radio.svg';\nimport SelectIcon from './Select.svg';\nimport TextIcon from './Text.svg';\nimport TextfieldIcon from './Textfield.svg';\n\nexport const iconsByType = {\n button: ButtonIcon,\n checkbox: CheckboxIcon,\n columns: ColumnsIcon,\n number: NumberIcon,\n radio: RadioIcon,\n select: SelectIcon,\n text: TextIcon,\n textfield: TextfieldIcon,\n default: FormIcon\n};","import { iconsByType } from './icons';\n\nconst types = [\n {\n label: 'Text Field',\n type: 'textfield'\n },\n {\n label: 'Number',\n type: 'number'\n },\n {\n label: 'Checkbox',\n type: 'checkbox'\n },\n {\n label: 'Radio',\n type: 'radio'\n },\n {\n label: 'Select',\n type: 'select'\n },\n {\n label: 'Text',\n type: 'text'\n },\n {\n label: 'Button',\n type: 'button'\n }\n];\n\n\nexport default function Palette(props) {\n return <div class=\"fjs-palette\">\n <div class=\"fjs-palette-header\" title=\"Form elements library\">\n <span class=\"fjs-hide-compact\">FORM ELEMENTS </span>LIBRARY\n </div>\n <div class=\"fjs-palette-fields fjs-drag-container fjs-no-drop\">\n {\n types.map(({ label, type }) => {\n const Icon = iconsByType[ type ];\n\n return (\n <div\n class=\"fjs-palette-field fjs-drag-copy fjs-no-drop\"\n data-field-type={ type }\n title={ `Create a ${ label } element` }\n >\n {\n Icon ? <Icon class=\"fjs-palette-field-icon\" width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" /> : null\n }\n <span class=\"fjs-palette-field-text fjs-hide-compact\">{ label }</span>\n </div>\n );\n })\n }\n </div>\n </div>;\n}","export function arrayAdd(array, index, item) {\n const copy = [ ...array ];\n\n copy.splice(index, 0, item);\n\n return copy;\n}\n\nexport function arrayRemove(array, index) {\n const copy = [ ...array ];\n\n copy.splice(index, 1);\n\n return copy;\n}\n\nexport function prefixId(id) {\n return `fjs-properties-panel-${ id }`;\n}\n\nexport function stopPropagation(listener) {\n return (event) => {\n event.stopPropagation();\n\n listener(event);\n };\n}\n\nexport function textToLabel(text = '...') {\n if (text.length > 10) {\n return `${ text.substring(0, 30) }...`;\n }\n\n return text;\n}\n\nexport const INPUTS = [\n 'checkbox',\n 'number',\n 'radio',\n 'select',\n 'textfield'\n];","import { prefixId } from '../Util';\n\nexport default function CheckboxInput(props) {\n const {\n id,\n label,\n onChange,\n value = false\n } = props;\n\n const handleChange = ({ target }) => {\n onChange(target.checked);\n };\n\n return (\n <div class=\"fjs-properties-panel-checkbox\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(id) }\n type=\"checkbox\"\n class=\"fjs-properties-panel-input\"\n onChange={ handleChange }\n checked={ value } />\n </div>\n );\n}","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\n\nexport default function usePrevious(value) {\n const ref = useRef();\n\n useEffect(() => ref.current = value);\n\n return ref.current;\n}","import {\n useMemo,\n useEffect\n} from 'preact/hooks';\n\nimport useService from './useService';\n\n\nexport default function useDebounce(fn, dependencies=[]) {\n\n const debounce = useService('debounce');\n\n const callback = useMemo(() => {\n return debounce(fn);\n }, dependencies);\n\n // cleanup async side-effect if callback #flush is provided.\n useEffect(() => {\n return () => {\n (typeof callback.flush === 'function') && callback.flush();\n };\n }, [ callback ]);\n\n return callback;\n}","import { prefixId } from '../Util';\n\nimport {\n useDebounce\n} from '../../../hooks';\n\nexport default function NumberInput(props) {\n\n const {\n id,\n label,\n max,\n min,\n value = '',\n onInput: _onInput\n } = props;\n\n const onInput = useDebounce(event => {\n\n const {\n validity,\n value\n } = event.target;\n\n if (validity.valid) {\n _onInput(value ? parseInt(value, 10) : undefined);\n }\n }, [ _onInput ]);\n\n return (\n <div class=\"fjs-properties-panel-number\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(id) }\n type=\"number\"\n class=\"fjs-properties-panel-input\"\n max={ max }\n min={ min }\n onInput={ onInput }\n value={ value } />\n </div>\n );\n}","import { prefixId } from '../Util';\n\nexport default function Select(props) {\n const {\n id,\n label,\n onChange,\n options,\n value\n } = props;\n\n const handleChange = ({ target }) => {\n onChange(target.value);\n };\n\n return (\n <div class=\"fjs-properties-panel-select\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <select id={ prefixId(id) } class=\"fjs-properties-panel-input\" onInput={ handleChange }>\n {\n options.map((option) => {\n return (\n <option\n value={ option.value }\n selected={ option.value === value }>\n { option.label }\n </option>\n );\n })\n }\n </select>\n </div>\n );\n}","import { prefixId } from '../Util';\n\nimport {\n useDebounce\n} from '../../../hooks';\n\n\nexport default function Textarea(props) {\n\n const {\n id,\n label,\n rows = 10,\n value = '',\n onInput: _onInput\n } = props;\n\n const onInput = useDebounce(event => {\n const value = event.target.value;\n\n _onInput(value.length ? value : undefined);\n }, [ _onInput ]);\n\n return (\n <div class=\"fjs-properties-panel-textarea\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <textarea\n id={ prefixId(id) }\n spellcheck={ false }\n class=\"fjs-properties-panel-input\"\n onInput={ onInput }\n rows={ rows }\n value={ value } />\n </div>\n );\n}","import {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport { prefixId } from '../Util';\n\nimport {\n usePrevious,\n useDebounce\n} from '../../../hooks';\n\n\nexport default function TextInput(props) {\n\n let {\n id,\n label,\n validate = () => null,\n onInput: _onInput,\n value = ''\n } = props;\n\n const prevValue = usePrevious(value);\n\n const [ cachedValue, setCachedValue ] = useState(null);\n\n const [ error, setError ] = useState(null);\n\n useEffect(() => setError(validate(value)), [ value ]);\n\n const onInput = useDebounce(event => {\n\n const value = event.target.value;\n\n const error = validate(value);\n\n if (error) {\n setCachedValue(value);\n } else {\n _onInput(value.length ? value : undefined);\n }\n\n setError(error);\n }, [ validate, setCachedValue, _onInput ]);\n\n\n if (prevValue === value && error) {\n value = cachedValue;\n }\n\n const classes = [ 'fjs-properties-panel-input' ];\n\n if (error) {\n classes.push('fjs-has-error');\n }\n\n return (\n <div class=\"fjs-properties-panel-text\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(id) }\n type=\"text\"\n spellcheck={ false }\n class={ classes.join(' ') }\n onInput={ onInput }\n value={ value } />\n {\n error && <div class=\"fjs-properties-panel-error\">{ error }</div>\n }\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport CheckboxInput from './CheckboxInput';\n\nexport default function CheckboxInputEntry(props) {\n const {\n editField,\n field,\n id,\n label,\n path\n } = props;\n\n const onChange = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n props.onChange(value);\n }\n };\n\n const value = path ? get(field, path, false) : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <CheckboxInput id={ id } label={ label } onChange={ onChange } value={ value } />\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport NumberInput from './NumberInput';\n\nexport default function NumberInputEntry(props) {\n const {\n editField,\n field,\n id,\n label,\n max,\n min,\n onChange,\n path\n } = props;\n\n const onInput = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n onChange(value);\n }\n };\n\n const value = path ? get(field, path, '') : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <NumberInput\n id={ id }\n label={ label }\n max={ max }\n min={ min }\n onInput={ onInput }\n value={ value } />\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport Select from './Select';\n\nexport default function SelectEntry(props) {\n const {\n editField,\n field,\n id,\n description,\n label,\n options,\n path\n } = props;\n\n const onChange = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n props.onChange(value);\n }\n };\n\n const value = path ? get(field, path, '') : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <Select id={ id } label={ label } onChange={ onChange } options={ options } value={ value } />\n { description && <div class=\"fjs-properties-panel-description\">{ description }</div> }\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport Textarea from './Textarea';\n\nexport default function TextareaEntry(props) {\n const {\n editField,\n field,\n id,\n description,\n label,\n onChange,\n path\n } = props;\n\n const onInput = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n onChange(value);\n }\n };\n\n const value = path ? get(field, path, '') : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <Textarea id={ id } label={ label } onInput={ onInput } value={ value } />\n { description && <div class=\"fjs-properties-panel-description\">{ description }</div> }\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport TextInput from './TextInput';\n\nexport default function TextInputEntry(props) {\n const {\n editField,\n field,\n id,\n description,\n label,\n onChange,\n path,\n validate\n } = props;\n\n const onInput = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n onChange(value);\n }\n };\n\n const value = path ? get(field, path, '') : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <TextInput id={ id } label={ label } onInput={ onInput } validate={ validate } value={ value } />\n { description && <div class=\"fjs-properties-panel-description\">{ description }</div> }\n </div>\n );\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"12\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7 0v5h5v2H7v5H5V7H0V5h5V0h2z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"7\",\n height: \"9\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M6.25 4.421L4.836 5.835h-.001L2.007 8.663.593 7.249 3.421 4.42.593 1.593 2.007.178 6.25 4.421z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"11\",\n height: \"14\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 4v8c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V4h9zM8 6H3v4.8c0 .66.5 1.2 1.111 1.2H6.89C7.5 12 8 11.46 8 10.8V6zm3-5H8.5l-1-1h-4l-1 1H0v1.5h11V1z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"8\",\n height: \"12\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.007 11.66L.593 10.248l4.242-4.243L.593 1.761 2.007.347l5.657 5.657-5.657 5.657z\"\n})));","import { useState } from 'preact/hooks';\n\nimport { stopPropagation } from '../Util';\n\nimport {\n ListArrowIcon,\n ListDeleteIcon,\n} from '../icons';\n\nexport default function CollapsibleEntry(props) {\n const {\n children,\n label,\n removeEntry = () => {}\n } = props;\n\n const [ collapsed, setCollapsed ] = useState(false);\n\n const toggleCollapsed = () => setCollapsed(!collapsed);\n\n const classes = [ 'fjs-properties-panel-collapsible-entry' ];\n\n if (collapsed) {\n classes.push('fjs-properties-panel-collapsible-entry-collapsed');\n }\n\n return (\n <div class={ classes.join(' ') }>\n <div class=\"fjs-properties-panel-collapsible-entry-header\" onClick={ toggleCollapsed }>\n <div>\n <ListArrowIcon class={ collapsed ? 'fjs-arrow-right' : 'fjs-arrow-down' } />\n <span class=\"fjs-properties-panel-collapsible-entry-header-label\">\n { label }\n </span>\n </div>\n <button\n class=\"fjs-properties-panel-collapsible-entry-header-remove-entry\"\n onClick={ stopPropagation(removeEntry) }>\n <ListDeleteIcon />\n </button>\n </div>\n {\n collapsed\n ? null\n : (\n <div class=\"fjs-properties-panel-collapsible-entry-entries\">\n {\n children\n }\n </div>\n )\n }\n </div>\n );\n}","import { useState } from 'preact/hooks';\n\nimport {\n CreateIcon,\n SectionArrowIcon\n} from '../icons';\n\nexport default function Group(props) {\n const {\n children,\n hasEntries = true,\n label\n } = props;\n\n const [ open, setOpen ] = useState(hasEntries);\n\n const toggleOpen = () => setOpen(!open);\n\n const addEntry = (event) => {\n event.stopPropagation();\n\n setOpen(true);\n\n props.addEntry();\n };\n\n return <div class=\"fjs-properties-panel-group\">\n <div class=\"fjs-properties-panel-group-header\" onClick={ hasEntries ? toggleOpen : () => {} }>\n <span class=\"fjs-properties-panel-group-header-label\">\n { label }\n </span>\n <div class=\"fjs-properties-panel-group-header-buttons\">\n {\n props.addEntry\n ? (\n <button\n class=\"fjs-properties-panel-group-header-button fjs-properties-panel-group-header-button-add-entry\"\n onClick={ addEntry }>\n <CreateIcon />\n </button>\n )\n : null\n }\n <button class=\"fjs-properties-panel-group-header-button fjs-properties-panel-group-header-button-toggle-open\">\n <SectionArrowIcon class={ hasEntries && open ? 'fjs-arrow-down' : 'fjs-arrow-right' } />\n </button>\n </div>\n </div>\n {\n hasEntries && open\n ? (\n <div class=\"fjs-properties-panel-group-entries\">\n {\n children\n }\n </div>\n )\n : null\n }\n </div>;\n}","import { SelectEntry } from '../components';\n\nexport default function ActionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const options = [\n {\n label: 'Submit',\n value: 'submit'\n },\n {\n label: 'Reset',\n value: 'reset'\n }\n ];\n\n return (\n <SelectEntry\n editField={ editField }\n field={ field }\n id=\"action\"\n label=\"Action\"\n options={ options }\n path={ [ 'action' ] } />\n );\n}","import { Default } from '@bpmn-io/form-js-viewer';\n\nimport { NumberInputEntry } from '../components';\n\nexport default function ColumnsEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const onInput = (value) => {\n let components = field.components.slice();\n\n if (value > components.length) {\n while (value > components.length) {\n components.push(Default.create({ _parent: field.id }));\n }\n } else {\n components = components.slice(0, value);\n }\n\n editField(field, 'components', components);\n };\n\n const value = field.components.length;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <NumberInputEntry\n id=\"columns\"\n label=\"Columns\"\n onInput={ onInput }\n value={ value }\n min=\"1\"\n max=\"3\" />\n </div>\n );\n}","import { TextInputEntry } from '../components';\n\nexport default function DescriptionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"description\"\n label=\"Field Description\"\n path={ [ 'description' ] } />\n );\n}","import {\n NumberInputEntry,\n SelectEntry,\n TextInputEntry\n} from '../components';\n\nexport default function DefaultValueEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n defaultValue,\n type,\n values = []\n } = field;\n\n if (type === 'checkbox') {\n const options = [\n {\n label: 'Checked',\n value: 'true'\n },\n {\n label: 'Not checked',\n value: 'false'\n }\n ];\n\n const onChange = (value) => {\n editField(field, [ 'defaultValue' ], parseStringToBoolean(value));\n };\n\n return (\n <SelectEntry\n id=\"defaultValue\"\n label=\"Default Value\"\n onChange={ onChange }\n options={ options }\n value={ parseBooleanToString(defaultValue) } />\n );\n }\n\n if (type === 'number') {\n return (\n <NumberInputEntry\n editField={ editField }\n field={ field }\n id=\"defaultValue\"\n label=\"Default Value\"\n path={ [ 'defaultValue' ] } />\n );\n }\n\n if (type === 'radio' || type === 'select') {\n const options = [\n {\n label: '<none>'\n },\n ...values\n ];\n\n const onChange = (value) => {\n editField(field, [ 'defaultValue' ], value.length ? value : undefined);\n };\n\n return (\n <SelectEntry\n id=\"defaultValue\"\n label=\"Default Value\"\n onChange={ onChange }\n options={ options }\n value={ defaultValue } />\n );\n }\n\n if (type === 'textfield') {\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"defaultValue\"\n label=\"Default Value\"\n path={ [ 'defaultValue' ] } />\n );\n }\n}\n\nfunction parseStringToBoolean(value) {\n if (value === 'true') {\n return true;\n }\n\n return false;\n}\n\nfunction parseBooleanToString(value) {\n if (value === true) {\n return 'true';\n }\n\n return 'false';\n}","import { CheckboxInputEntry } from '../components';\n\nexport default function DisabledEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const onChange = (value) => {\n editField(field, 'disabled', value);\n };\n\n return <CheckboxInputEntry\n id=\"disabled\"\n field={ field }\n label=\"Disabled\"\n path={ [ 'disabled' ] }\n onChange={ onChange } />;\n}","import { isUndefined } from 'min-dash';\n\nimport useService from '../../../hooks/useService';\n\nimport { TextInputEntry } from '../components';\n\nexport default function IdEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const formFieldRegistry = useService('formFieldRegistry');\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\n return 'Must not be empty.';\n }\n\n const assigned = formFieldRegistry._ids.assigned(value);\n\n if (assigned && assigned !== field) {\n return 'Must be unique.';\n }\n\n return validateId(value) || null;\n };\n\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"id\"\n label=\"Id\"\n path={ [ 'id' ] }\n validate={ validate } />\n );\n}\n\n// id structural validation /////////////\n\nconst SPACE_REGEX = /\\s/;\n\n// for QName validation as per http://www.w3.org/TR/REC-xml/#NT-NameChar\nconst QNAME_REGEX = /^([a-z][\\w-.]*:)?[a-z_][\\w-.]*$/i;\n\n// for ID validation as per BPMN Schema (QName - Namespace)\nconst ID_REGEX = /^[a-z_][\\w-.]*$/i;\n\nfunction validateId(idValue) {\n\n if (containsSpace(idValue)) {\n return 'Must not contain spaces.';\n }\n\n if (!ID_REGEX.test(idValue)) {\n\n if (QNAME_REGEX.test(idValue)) {\n return 'Must not contain prefix.';\n }\n\n return 'Must be a valid QName.';\n }\n}\n\nfunction containsSpace(value) {\n return SPACE_REGEX.test(value);\n}","import { isUndefined } from 'min-dash';\n\nimport useService from '../../../hooks/useService';\n\nimport { TextInputEntry } from '../components';\n\nexport default function KeyEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const formFieldRegistry = useService('formFieldRegistry');\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\n return 'Must not be empty.';\n }\n\n if (/\\s/.test(value)) {\n return 'Must not contain spaces.';\n }\n\n const assigned = formFieldRegistry._keys.assigned(value);\n\n if (assigned && assigned !== field) {\n return 'Must be unique.';\n }\n\n return null;\n };\n\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"key\"\n label=\"Key\"\n description=\"Maps to a process variable.\"\n path={ [ 'key' ] }\n validate={ validate } />\n );\n}","import { TextInputEntry } from '../components';\n\nexport default function LabelEntry(props) {\n const {\n editField,\n field\n } = props;\n\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"label\"\n label=\"Field Label\"\n path={ [ 'label' ] } />\n );\n}","import { TextareaEntry } from '../components';\n\nexport default function TextEntry(props) {\n const {\n editField,\n field\n } = props;\n\n return (\n <TextareaEntry\n editField={ editField }\n field={ field }\n id=\"text\"\n label=\"Text\"\n path={ [ 'text' ] }\n description=\"Use Markdown or basic HTML to format.\" />\n );\n}","import {\n get,\n set\n} from 'min-dash';\n\nimport { TextInputEntry } from '../components';\n\nexport default function ValueEntry(props) {\n const {\n editField,\n field,\n index\n } = props;\n\n const onChange = (key) => {\n const values = get(field, [ 'values' ]);\n\n return (value) => {\n editField(field, 'values', set(values, [ index, key ], value));\n };\n };\n\n return <>\n <TextInputEntry\n id={ `value-label-${ index }` }\n label=\"Label\"\n onChange={ onChange('label') }\n value={ get(field, [ 'values', index, 'label' ]) } />\n <TextInputEntry\n id={ `value-value-${ index }` }\n label=\"Value\"\n onChange={ onChange('value') }\n value={ get(field, [ 'values', index, 'value' ]) } />\n </>;\n}","import { Group } from '../components';\n\nimport {\n ActionEntry,\n ColumnsEntry,\n DescriptionEntry,\n DefaultValueEntry,\n DisabledEntry,\n IdEntry,\n KeyEntry,\n LabelEntry,\n TextEntry\n} from '../entries';\n\nimport { INPUTS } from '../Util';\n\nexport default function GeneralGroup(field, editField) {\n const { type } = field;\n\n const entries = [];\n if (type === 'default') {\n entries.push(<IdEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type) || type === 'button') {\n entries.push(<LabelEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type)) {\n entries.push(<DescriptionEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type)) {\n entries.push(<KeyEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type)) {\n entries.push(<DefaultValueEntry editField={ editField } field={ field } />);\n }\n\n if (type === 'button') {\n entries.push(<ActionEntry editField={ editField } field={ field } />);\n }\n\n if (type === 'columns') {\n entries.push(<ColumnsEntry editField={ editField } field={ field } />);\n }\n\n if (type === 'text') {\n entries.push(<TextEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type)) {\n entries.push(<DisabledEntry editField={ editField } field={ field } />);\n }\n\n return (\n <Group label=\"General\">\n {\n entries.length ? entries : null\n }\n </Group>\n );\n}","import {\n get,\n set\n} from 'min-dash';\n\nimport {\n CheckboxInputEntry,\n Group,\n NumberInputEntry,\n TextInputEntry\n} from '../components';\n\nexport default function ValidationGroup(field, editField) {\n const { type } = field;\n\n const onChange = (key) => {\n return (value) => {\n const validate = get(field, [ 'validate' ], {});\n\n editField(field, [ 'validate' ], set(validate, [ key ], value));\n };\n };\n\n const entries = [\n <CheckboxInputEntry\n id=\"required\"\n label=\"Required\"\n onChange={ onChange('required') }\n value={ get(field, [ 'validate', 'required' ]) } />\n ];\n\n if (type === 'textfield') {\n entries.push(\n <NumberInputEntry\n id=\"minLength\"\n label=\"Minimum Length\"\n min=\"0\"\n onChange={ onChange('minLength') }\n value={ get(field, [ 'validate', 'minLength' ]) } />,\n <NumberInputEntry\n id=\"maxLength\"\n label=\"Maximum Length\"\n min=\"0\"\n onChange={ onChange('maxLength') }\n value={ get(field, [ 'validate', 'maxLength' ]) } />,\n <TextInputEntry\n id=\"regularExpressionPattern\"\n label=\"Regular Expression Pattern\"\n onChange={ onChange('regularExpressionPattern') }\n value={ get(field, [ 'validate', 'regularExpressionPattern' ]) } />\n );\n }\n\n if (type === 'number') {\n entries.push(\n <NumberInputEntry\n id=\"min\"\n label=\"Minimum\"\n onChange={ onChange('min') }\n value={ get(field, [ 'validate', 'min' ]) } />,\n <NumberInputEntry\n id=\"max\"\n label=\"Maximum\"\n onChange={ onChange('max') }\n value={ get(field, [ 'validate', 'max' ]) } />\n );\n }\n\n return (\n <Group label=\"Validation\">\n {\n entries.length ? entries : null\n }\n </Group>\n );\n}","import {\n CollapsibleEntry,\n Group\n} from '../components';\n\nimport { ValueEntry } from '../entries';\n\nimport {\n arrayAdd,\n arrayRemove\n} from '../Util';\n\nexport default function ValuesGroup(field, editField) {\n const {\n id,\n values = []\n } = field;\n\n const addEntry = () => {\n const entry = {\n label: 'Value',\n value: 'value'\n };\n\n editField(field, [ 'values' ], arrayAdd(values, values.length, entry));\n };\n\n const hasEntries = values.length > 0;\n\n return (\n <Group label=\"Values\" addEntry={ addEntry } hasEntries={ hasEntries }>\n {\n values.map((value, index) => {\n const { label } = value;\n\n const removeEntry = () => {\n editField(field, [ 'values' ], arrayRemove(values, index));\n };\n\n return (\n <CollapsibleEntry key={ `${ id }-${ index }` } label={ label } removeEntry={ removeEntry }>\n <ValueEntry editField={ editField } field={ field } index={ index } />\n </CollapsibleEntry>\n );\n })\n }\n </Group>\n );\n}","import {\n GeneralGroup,\n ValidationGroup,\n ValuesGroup\n} from './groups';\n\nimport {\n INPUTS,\n textToLabel\n} from './Util';\n\nimport {\n useService\n} from '../../hooks';\n\nimport { iconsByType } from '../palette/icons';\n\nconst labelsByType = {\n button: 'BUTTON',\n checkbox: 'CHECKBOX',\n columns: 'COLUMNS',\n default: 'FORM',\n number: 'NUMBER',\n radio: 'RADIO',\n select: 'SELECT',\n text: 'TEXT',\n textfield: 'TEXT FIELD',\n};\n\nfunction getGroups(field, editField) {\n const { type } = field;\n\n const groups = [\n GeneralGroup(field, editField)\n ];\n\n if (type === 'radio' || type === 'select') {\n groups.push(ValuesGroup(field, editField));\n }\n\n if (INPUTS.includes(type) && type !== 'checkbox') {\n groups.push(ValidationGroup(field, editField));\n }\n\n return groups;\n}\n\nexport default function PropertiesPanel(props) {\n const {\n editField,\n field\n } = props;\n\n const eventBus = useService('eventBus');\n\n if (!field) {\n return <div class=\"fjs-properties-panel-placeholder\">Select a form field to edit its properties.</div>;\n }\n\n const onFocus = () => eventBus.fire('propertiesPanel.focusin');\n\n const onBlur = () => eventBus.fire('propertiesPanel.focusout');\n\n const { type } = field;\n\n const Icon = iconsByType[ type ];\n\n const label = labelsByType[ type ];\n\n return (\n <div\n class=\"fjs-properties-panel\"\n data-field={ field.id }\n onFocusCapture={ onFocus }\n onBlurCapture={ onBlur }\n >\n <div class=\"fjs-properties-panel-header\">\n <div class=\"fjs-properties-panel-header-icon\">\n <Icon width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" />\n </div>\n <div>\n <span class=\"fjs-properties-panel-header-type\">{ label }</span>\n {\n type === 'text'\n ? <div class=\"fjs-properties-panel-header-label\">{ textToLabel(field.text) }</div>\n : type === 'default'\n ? <div class=\"fjs-properties-panel-header-label\">{ field.id }</div>\n : <div class=\"fjs-properties-panel-header-label\">{ field.label }</div>\n }\n </div>\n </div>\n {\n getGroups(field, editField)\n }\n </div>\n );\n}","import { render } from 'preact';\nimport {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n FormComponent,\n FormContext,\n FormRenderContext\n} from '@bpmn-io/form-js-viewer';\n\nimport useService from '../hooks/useService';\n\nimport { DragAndDropContext } from '../context';\n\nimport Palette from './palette/Palette';\nimport PropertiesPanel from './properties-panel/PropertiesPanel';\n\nimport dragula from 'dragula';\n\nimport { ListDeleteIcon } from './properties-panel/icons';\n\nimport { iconsByType } from './palette/icons';\n\nfunction ContextPad(props) {\n if (!props.children) {\n return null;\n }\n\n return (\n <div class=\"fjs-context-pad\">\n {\n props.children\n }\n </div>\n );\n}\n\nfunction Empty(props) {\n return null;\n}\n\nfunction Element(props) {\n const eventBus = useService('eventBus'),\n formEditor = useService('formEditor'),\n formFieldRegistry = useService('formFieldRegistry'),\n modeling = useService('modeling'),\n selection = useService('selection');\n\n const { field } = props;\n\n const {\n id,\n type\n } = field;\n\n const ref = useRef();\n\n function scrollIntoView({ selection }) {\n if (!selection || selection.id !== id || !ref.current) {\n return;\n }\n\n const elementBounds = ref.current.getBoundingClientRect(),\n containerBounds = formEditor._container.getBoundingClientRect();\n\n if (elementBounds.top < 0 || elementBounds.top > containerBounds.bottom) {\n ref.current.scrollIntoView();\n }\n }\n\n useEffect(() => {\n eventBus.on('selection.changed', scrollIntoView);\n\n return () => eventBus.off('selection.changed', scrollIntoView);\n }, [ id ]);\n\n function onClick(event) {\n event.stopPropagation();\n\n selection.toggle(field);\n }\n\n const classes = [ 'fjs-element' ];\n\n if (props.class) {\n classes.push(...props.class.split(' '));\n }\n\n if (selection.isSelected(field)) {\n classes.push('fjs-editor-selected');\n }\n\n const onRemove = (event) => {\n event.stopPropagation();\n\n const parentField = formFieldRegistry.get(field._parent);\n\n const index = getFormFieldIndex(parentField, field);\n\n modeling.removeFormField(field, parentField, index);\n };\n\n return (\n <div\n class={ classes.join(' ') }\n data-id={ id }\n data-field-type={ type }\n onClick={ onClick }\n ref={ ref }>\n <ContextPad>\n {\n selection.isSelected(field) && field.type !== 'default'\n ? <button class=\"fjs-context-pad-item\" onClick={ onRemove }><ListDeleteIcon /></button>\n : null\n }\n </ContextPad>\n { props.children }\n </div>\n );\n}\n\nfunction Children(props) {\n const { field } = props;\n\n const { id } = field;\n\n const classes = [ 'fjs-children', 'fjs-drag-container' ];\n\n if (props.class) {\n classes.push(...props.class.split(' '));\n }\n\n return (\n <div\n class={ classes.join(' ') }\n data-id={ id }>\n { props.children }\n </div>\n );\n}\n\nexport default function FormEditor(props) {\n const eventBus = useService('eventBus'),\n formEditor = useService('formEditor'),\n formFieldRegistry = useService('formFieldRegistry'),\n injector = useService('injector'),\n modeling = useService('modeling'),\n selection = useService('selection');\n\n const { schema } = formEditor._getState();\n\n const [ selectedFormField, setSelection ] = useState(schema);\n\n useEffect(() => {\n function handleSelectionChanged(event) {\n setSelection(event.selection || schema);\n }\n\n eventBus.on('selection.changed', handleSelectionChanged);\n\n setSelection(selection.get() || schema);\n\n return () => {\n eventBus.off('selection.changed', handleSelectionChanged);\n };\n }, [ schema, selection ]);\n\n const [ drake, setDrake ] = useState(null);\n\n const dragAndDropContext = {\n drake\n };\n\n useEffect(() => {\n const createDragulaInstance = () => {\n const dragulaInstance = dragula({\n isContainer(el) {\n return el.classList.contains('fjs-drag-container');\n },\n copy(el) {\n return el.classList.contains('fjs-drag-copy');\n },\n accepts(el, target) {\n return !target.classList.contains('fjs-no-drop');\n },\n slideFactorX: 10,\n slideFactorY: 5\n });\n\n dragulaInstance.on('drop', (el, target, source, sibling) => {\n dragulaInstance.remove();\n\n if (!target) {\n return;\n }\n\n const targetFormField = formFieldRegistry.get(target.dataset.id);\n\n const siblingFormField = sibling && formFieldRegistry.get(sibling.dataset.id),\n targetIndex = siblingFormField ? getFormFieldIndex(targetFormField, siblingFormField) : targetFormField.components.length;\n\n if (source.classList.contains('fjs-palette-fields')) {\n const type = el.dataset.fieldType;\n\n modeling.addFormField({ type }, targetFormField, targetIndex);\n } else {\n const formField = formFieldRegistry.get(el.dataset.id),\n sourceFormField = formFieldRegistry.get(source.dataset.id),\n sourceIndex = getFormFieldIndex(sourceFormField, formField);\n\n modeling.moveFormField(formField, sourceFormField, targetFormField, sourceIndex, targetIndex);\n }\n });\n\n eventBus.fire('dragula.created');\n\n setDrake(dragulaInstance);\n\n return dragulaInstance;\n };\n\n let dragulaInstance = createDragulaInstance();\n\n const onDetach = () => {\n if (dragulaInstance) {\n dragulaInstance.destroy();\n\n eventBus.fire('dragula.destroyed');\n }\n };\n\n const onAttach = () => {\n onDetach();\n\n dragulaInstance = createDragulaInstance();\n };\n\n eventBus.on('attach', onAttach);\n eventBus.on('detach', onDetach);\n\n return () => {\n onDetach();\n\n eventBus.off('attach', onAttach);\n eventBus.off('detach', onDetach);\n };\n }, []);\n\n const formRenderContext = {\n Children,\n Element,\n Empty\n };\n\n const formContext = {\n getService(type, strict = true) {\n\n // TODO(philippfromme): clean up\n if (type === 'formFieldRegistry') {\n return new Map();\n } else if (type === 'form') {\n return {\n _getState() {\n return {\n data: {},\n errors: {},\n properties: {\n readOnly: true\n },\n schema\n };\n }\n };\n }\n\n return injector.get(type, strict);\n },\n formId: formEditor._id\n };\n\n const onSubmit = useCallback(() => {}, []);\n\n const onReset = useCallback(() => {}, []);\n\n const editField = useCallback((formField, key, value) => modeling.editFormField(formField, key, value), [ modeling ]);\n\n return (\n <div class=\"fjs-form-editor\">\n\n <DragAndDropContext.Provider value={ dragAndDropContext }>\n <div class=\"fjs-palette-container\">\n <Palette />\n </div>\n <div class=\"fjs-form-container\">\n\n <FormContext.Provider value={ formContext }>\n <FormRenderContext.Provider value={ formRenderContext }>\n <FormComponent onSubmit={ onSubmit } onReset={ onReset } />\n </FormRenderContext.Provider>\n </FormContext.Provider>\n\n </div>\n <CreatePreview />\n </DragAndDropContext.Provider>\n\n <div class=\"fjs-properties-container\">\n <PropertiesPanel field={ selectedFormField } editField={ editField } />\n </div>\n </div>\n );\n}\n\nfunction getFormFieldIndex(parent, formField) {\n let fieldFormIndex = parent.components.length;\n\n parent.components.forEach(({ id }, index) => {\n if (id === formField.id) {\n fieldFormIndex = index;\n }\n });\n\n return fieldFormIndex;\n}\n\nfunction CreatePreview(props) {\n\n const { drake } = useContext(DragAndDropContext);\n\n function handleCloned(clone, original, type) {\n\n const fieldType = clone.dataset.fieldType;\n\n const Icon = iconsByType[ fieldType ];\n\n if (fieldType) {\n clone.innerHTML = '';\n\n clone.class = 'gu-mirror';\n\n render(<Icon />, clone);\n }\n }\n\n useEffect(() => {\n if (!drake) {\n return;\n }\n\n drake.on('cloned', handleCloned);\n\n return () => drake.off('cloned', handleCloned);\n }, [ drake ]);\n\n return null;\n}","import { render } from 'preact';\nimport { useState } from 'preact/hooks';\n\nimport FormEditor from './components/FormEditor';\n\nimport { FormEditorContext } from './context';\n\n/**\n * @typedef { { container: Element, compact?: boolean } } RenderConfig\n * @typedef { import('didi').Injector } Injector\n * @typedef { import('../core/EventBus').default } EventBus\n * @typedef { import('../FormEditor').default } FormEditor\n */\n\n/**\n * @param {RenderConfig} renderConfig\n * @param {EventBus} eventBus\n * @param {FormEditor} formEditor\n * @param {Injector} injector\n */\nexport default class Renderer {\n constructor(renderConfig, eventBus, formEditor, injector) {\n\n const {\n container,\n compact = false\n } = renderConfig;\n\n const App = () => {\n const [ state, setState ] = useState(formEditor._getState());\n\n const formEditorContext = {\n getService(type, strict = true) {\n return injector.get(type, strict);\n }\n };\n\n formEditor.on('changed', (newState) => {\n setState(newState);\n });\n\n const { schema } = state;\n\n if (!schema) {\n return null;\n }\n\n return (\n <div class={ `fjs-container fjs-editor-container ${ compact ? 'fjs-editor-compact' : '' }` }>\n <FormEditorContext.Provider value={ formEditorContext }>\n <FormEditor />\n </FormEditorContext.Provider>\n </div>\n );\n };\n\n eventBus.on('form.init', () => {\n render(<App />, container);\n });\n\n eventBus.on('form.destroy', () => {\n render(null, container);\n });\n }\n}\n\nRenderer.$inject = [ 'config.renderer', 'eventBus', 'formEditor', 'injector' ];","import { FormFields } from '@bpmn-io/form-js-viewer';\n\nimport Renderer from './Renderer';\n\nexport default {\n __init__: [ 'formFields', 'renderer' ],\n formFields: [ 'type', FormFields ],\n renderer: [ 'type', Renderer ]\n};","import EventBus from './EventBus';\nimport DebounceFactory from './Debounce';\nimport FieldFactory from './FieldFactory';\nimport FormFieldRegistry from './FormFieldRegistry';\n\nimport importModule from '../import';\nimport renderModule from '../render';\n\nexport default {\n __depends__: [\n importModule,\n renderModule\n ],\n eventBus: [ 'type', EventBus ],\n formFieldRegistry: [ 'type', FormFieldRegistry ],\n fieldFactory: [ 'type', FieldFactory ],\n debounce: [ 'factory', DebounceFactory ]\n};","import {\n forEach,\n isArray\n} from 'min-dash';\n\nvar NOT_REGISTERED_ERROR = 'is not a registered action',\n IS_REGISTERED_ERROR = 'is already registered';\n\n\n/**\n * An interface that provides access to modeling actions by decoupling\n * the one who requests the action to be triggered and the trigger itself.\n *\n * It's possible to add new actions by registering them with ´registerAction´\n * and likewise unregister existing ones with ´unregisterAction´.\n *\n *\n * ## Life-Cycle and configuration\n *\n * The editor actions will wait for diagram initialization before\n * registering default actions _and_ firing an `editorActions.init` event.\n *\n * Interested parties may listen to the `editorActions.init` event with\n * low priority to check, which actions got registered. Other components\n * may use the event to register their own actions via `registerAction`.\n *\n * @param {EventBus} eventBus\n * @param {Injector} injector\n */\nexport default function EditorActions(eventBus, injector) {\n\n // initialize actions\n this._actions = {};\n\n var self = this;\n\n eventBus.on('diagram.init', function() {\n\n // all diagram modules got loaded; check which ones\n // are available and register the respective default actions\n self._registerDefaultActions(injector);\n\n // ask interested parties to register available editor\n // actions on diagram initialization\n eventBus.fire('editorActions.init', {\n editorActions: self\n });\n });\n\n}\n\nEditorActions.$inject = [\n 'eventBus',\n 'injector'\n];\n\n/**\n * Register default actions.\n *\n * @param {Injector} injector\n */\nEditorActions.prototype._registerDefaultActions = function(injector) {\n\n // (1) retrieve optional components to integrate with\n\n var commandStack = injector.get('commandStack', false);\n var modeling = injector.get('modeling', false);\n var selection = injector.get('selection', false);\n var zoomScroll = injector.get('zoomScroll', false);\n var copyPaste = injector.get('copyPaste', false);\n var canvas = injector.get('canvas', false);\n var rules = injector.get('rules', false);\n var keyboardMove = injector.get('keyboardMove', false);\n var keyboardMoveSelection = injector.get('keyboardMoveSelection', false);\n\n // (2) check components and register actions\n\n if (commandStack) {\n this.register('undo', function() {\n commandStack.undo();\n });\n\n this.register('redo', function() {\n commandStack.redo();\n });\n }\n\n if (copyPaste && selection) {\n this.register('copy', function() {\n var selectedElements = selection.get();\n\n copyPaste.copy(selectedElements);\n });\n }\n\n if (copyPaste) {\n this.register('paste', function() {\n copyPaste.paste();\n });\n }\n\n if (zoomScroll) {\n this.register('stepZoom', function(opts) {\n zoomScroll.stepZoom(opts.value);\n });\n }\n\n if (canvas) {\n this.register('zoom', function(opts) {\n canvas.zoom(opts.value);\n });\n }\n\n if (modeling && selection && rules) {\n this.register('removeSelection', function() {\n\n var selectedElements = selection.get();\n\n if (!selectedElements.length) {\n return;\n }\n\n var allowed = rules.allowed('elements.delete', { elements: selectedElements }),\n removableElements;\n\n if (allowed === false) {\n return;\n }\n else if (isArray(allowed)) {\n removableElements = allowed;\n }\n else {\n removableElements = selectedElements;\n }\n\n if (removableElements.length) {\n modeling.removeElements(removableElements.slice());\n }\n });\n }\n\n if (keyboardMove) {\n this.register('moveCanvas', function(opts) {\n keyboardMove.moveCanvas(opts);\n });\n }\n\n if (keyboardMoveSelection) {\n this.register('moveSelection', function(opts) {\n keyboardMoveSelection.moveSelection(opts.direction, opts.accelerated);\n });\n }\n\n};\n\n\n/**\n * Triggers a registered action\n *\n * @param {string} action\n * @param {Object} opts\n *\n * @return {Unknown} Returns what the registered listener returns\n */\nEditorActions.prototype.trigger = function(action, opts) {\n if (!this._actions[action]) {\n throw error(action, NOT_REGISTERED_ERROR);\n }\n\n return this._actions[action](opts);\n};\n\n\n/**\n * Registers a collections of actions.\n * The key of the object will be the name of the action.\n *\n * @example\n * ´´´\n * var actions = {\n * spaceTool: function() {\n * spaceTool.activateSelection();\n * },\n * lassoTool: function() {\n * lassoTool.activateSelection();\n * }\n * ];\n *\n * editorActions.register(actions);\n *\n * editorActions.isRegistered('spaceTool'); // true\n * ´´´\n *\n * @param {Object} actions\n */\nEditorActions.prototype.register = function(actions, listener) {\n var self = this;\n\n if (typeof actions === 'string') {\n return this._registerAction(actions, listener);\n }\n\n forEach(actions, function(listener, action) {\n self._registerAction(action, listener);\n });\n};\n\n/**\n * Registers a listener to an action key\n *\n * @param {string} action\n * @param {Function} listener\n */\nEditorActions.prototype._registerAction = function(action, listener) {\n if (this.isRegistered(action)) {\n throw error(action, IS_REGISTERED_ERROR);\n }\n\n this._actions[action] = listener;\n};\n\n/**\n * Unregister an existing action\n *\n * @param {string} action\n */\nEditorActions.prototype.unregister = function(action) {\n if (!this.isRegistered(action)) {\n throw error(action, NOT_REGISTERED_ERROR);\n }\n\n this._actions[action] = undefined;\n};\n\n/**\n * Returns the number of actions that are currently registered\n *\n * @return {number}\n */\nEditorActions.prototype.getActions = function() {\n return Object.keys(this._actions);\n};\n\n/**\n * Checks wether the given action is registered\n *\n * @param {string} action\n *\n * @return {boolean}\n */\nEditorActions.prototype.isRegistered = function(action) {\n return !!this._actions[action];\n};\n\n\nfunction error(action, message) {\n return new Error(action + ' ' + message);\n}\n","import EditorActions from './EditorActions';\n\nexport default {\n __init__: [ 'editorActions' ],\n editorActions: [ 'type', EditorActions ]\n};\n","import EditorActions from 'diagram-js/lib/features/editor-actions/EditorActions';\n\n\nexport default class FormEditorActions extends EditorActions {\n constructor(eventBus, injector) {\n super(eventBus, injector);\n\n eventBus.on('form.init', () => {\n this._registerDefaultActions(injector);\n\n eventBus.fire('editorActions.init', {\n editorActions: this\n });\n });\n }\n\n _registerDefaultActions(injector) {\n const commandStack = injector.get('commandStack', false),\n formFieldRegistry = injector.get('formFieldRegistry', false),\n selection = injector.get('selection', false);\n\n if (commandStack) {\n\n // @ts-ignore\n this.register('undo', () => {\n commandStack.undo();\n });\n\n // @ts-ignore\n this.register('redo', () => {\n commandStack.redo();\n });\n }\n\n if (formFieldRegistry && selection) {\n\n // @ts-ignore\n this.register('selectFormField', (options = {}) => {\n const { id } = options;\n\n if (!id) {\n return;\n }\n\n const formField = formFieldRegistry.get(id);\n\n if (formField) {\n selection.set(formField);\n }\n });\n }\n }\n}\n\nFormEditorActions.$inject = [\n 'eventBus',\n 'injector'\n];","import EditorActionsModule from 'diagram-js/lib/features/editor-actions';\n\nimport FormEditorActions from './FormEditorActions';\n\nexport default {\n __depends__: [\n EditorActionsModule\n ],\n editorActions: [ 'type', FormEditorActions ]\n};\n","import { isArray } from 'min-dash';\r\n\r\n/**\r\n * Returns true if event was triggered with any modifier\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function hasModifier(event) {\r\n return (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey);\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isCmd(event) {\r\n\r\n // ensure we don't react to AltGr\r\n // (mapped to CTRL + ALT)\r\n if (event.altKey) {\r\n return false;\r\n }\r\n\r\n return event.ctrlKey || event.metaKey;\r\n}\r\n\r\n/**\r\n * Checks if key pressed is one of provided keys.\r\n *\r\n * @param {string|Array<string>} keys\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isKey(keys, event) {\r\n keys = isArray(keys) ? keys : [ keys ];\r\n\r\n return keys.indexOf(event.key) !== -1 || keys.indexOf(event.keyCode) !== -1;\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isShift(event) {\r\n return event.shiftKey;\r\n}","import {\n isFunction\n} from 'min-dash';\n\nimport {\n closest as domClosest,\n event as domEvent,\n matches as domMatches\n} from 'min-dom';\n\nimport {\n hasModifier,\n isCmd,\n isKey,\n isShift\n} from './KeyboardUtil';\n\nvar KEYDOWN_EVENT = 'keyboard.keydown',\n KEYUP_EVENT = 'keyboard.keyup';\n\nvar HANDLE_MODIFIER_ATTRIBUTE = 'input-handle-modified-keys';\n\nvar DEFAULT_PRIORITY = 1000;\n\n/**\n * A keyboard abstraction that may be activated and\n * deactivated by users at will, consuming key events\n * and triggering diagram actions.\n *\n * For keys pressed down, keyboard fires `keyboard.keydown` event.\n * The event context contains one field which is `KeyboardEvent` event.\n *\n * The implementation fires the following key events that allow\n * other components to hook into key handling:\n *\n * - keyboard.bind\n * - keyboard.unbind\n * - keyboard.init\n * - keyboard.destroy\n *\n * All events contain one field which is node.\n *\n * A default binding for the keyboard may be specified via the\n * `keyboard.bindTo` configuration option.\n *\n * @param {Config} config\n * @param {EventBus} eventBus\n */\nexport default function Keyboard(config, eventBus) {\n var self = this;\n\n this._config = config || {};\n this._eventBus = eventBus;\n\n this._keydownHandler = this._keydownHandler.bind(this);\n this._keyupHandler = this._keyupHandler.bind(this);\n\n // properly clean dom registrations\n eventBus.on('diagram.destroy', function() {\n self._fire('destroy');\n\n self.unbind();\n });\n\n eventBus.on('diagram.init', function() {\n self._fire('init');\n });\n\n eventBus.on('attach', function() {\n if (config && config.bindTo) {\n self.bind(config.bindTo);\n }\n });\n\n eventBus.on('detach', function() {\n self.unbind();\n });\n}\n\nKeyboard.$inject = [\n 'config.keyboard',\n 'eventBus'\n];\n\nKeyboard.prototype._keydownHandler = function(event) {\n this._keyHandler(event, KEYDOWN_EVENT);\n};\n\nKeyboard.prototype._keyupHandler = function(event) {\n this._keyHandler(event, KEYUP_EVENT);\n};\n\nKeyboard.prototype._keyHandler = function(event, type) {\n var eventBusResult;\n\n if (this._isEventIgnored(event)) {\n return;\n }\n\n var context = {\n keyEvent: event\n };\n\n eventBusResult = this._eventBus.fire(type || KEYDOWN_EVENT, context);\n\n if (eventBusResult) {\n event.preventDefault();\n }\n};\n\nKeyboard.prototype._isEventIgnored = function(event) {\n return isInput(event.target) && this._isModifiedKeyIgnored(event);\n};\n\nKeyboard.prototype._isModifiedKeyIgnored = function(event) {\n if (!isCmd(event)) {\n return true;\n }\n\n var allowedModifiers = this._getAllowedModifiers(event.target);\n return !allowedModifiers.includes(event.key);\n};\n\nKeyboard.prototype._getAllowedModifiers = function(element) {\n var modifierContainer = domClosest(element, '[' + HANDLE_MODIFIER_ATTRIBUTE + ']', true);\n\n if (!modifierContainer || (this._node && !this._node.contains(modifierContainer))) {\n return [];\n }\n\n return modifierContainer.getAttribute(HANDLE_MODIFIER_ATTRIBUTE).split(',');\n};\n\nKeyboard.prototype.bind = function(node) {\n\n // make sure that the keyboard is only bound once to the DOM\n this.unbind();\n\n this._node = node;\n\n // bind key events\n domEvent.bind(node, 'keydown', this._keydownHandler, true);\n domEvent.bind(node, 'keyup', this._keyupHandler, true);\n\n this._fire('bind');\n};\n\nKeyboard.prototype.getBinding = function() {\n return this._node;\n};\n\nKeyboard.prototype.unbind = function() {\n var node = this._node;\n\n if (node) {\n this._fire('unbind');\n\n // unbind key events\n domEvent.unbind(node, 'keydown', this._keydownHandler, true);\n domEvent.unbind(node, 'keyup', this._keyupHandler, true);\n }\n\n this._node = null;\n};\n\nKeyboard.prototype._fire = function(event) {\n this._eventBus.fire('keyboard.' + event, { node: this._node });\n};\n\n/**\n * Add a listener function that is notified with `KeyboardEvent` whenever\n * the keyboard is bound and the user presses a key. If no priority is\n * provided, the default value of 1000 is used.\n *\n * @param {number} [priority]\n * @param {Function} listener\n * @param {string} type\n */\nKeyboard.prototype.addListener = function(priority, listener, type) {\n if (isFunction(priority)) {\n type = listener;\n listener = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n this._eventBus.on(type || KEYDOWN_EVENT, priority, listener);\n};\n\nKeyboard.prototype.removeListener = function(listener, type) {\n this._eventBus.off(type || KEYDOWN_EVENT, listener);\n};\n\nKeyboard.prototype.hasModifier = hasModifier;\nKeyboard.prototype.isCmd = isCmd;\nKeyboard.prototype.isShift = isShift;\nKeyboard.prototype.isKey = isKey;\n\n\n\n// helpers ///////\n\nfunction isInput(target) {\n return target && (domMatches(target, 'input, textarea') || target.contentEditable === 'true');\n}\n","import {\n isCmd,\n isKey,\n isShift\n} from './KeyboardUtil';\n\nvar LOW_PRIORITY = 500;\n\nexport var KEYCODE_C = 67;\nexport var KEYCODE_V = 86;\nexport var KEYCODE_Y = 89;\nexport var KEYCODE_Z = 90;\n\nexport var KEYS_COPY = ['c', 'C', KEYCODE_C ];\nexport var KEYS_PASTE = [ 'v', 'V', KEYCODE_V ];\nexport var KEYS_REDO = [ 'y', 'Y', KEYCODE_Y ];\nexport var KEYS_UNDO = [ 'z', 'Z', KEYCODE_Z ];\n\n\n/**\n * Adds default keyboard bindings.\n *\n * This does not pull in any features will bind only actions that\n * have previously been registered against the editorActions component.\n *\n * @param {EventBus} eventBus\n * @param {Keyboard} keyboard\n */\nexport default function KeyboardBindings(eventBus, keyboard) {\n\n var self = this;\n\n eventBus.on('editorActions.init', LOW_PRIORITY, function(event) {\n\n var editorActions = event.editorActions;\n\n self.registerBindings(keyboard, editorActions);\n });\n}\n\nKeyboardBindings.$inject = [\n 'eventBus',\n 'keyboard'\n];\n\n\n/**\n * Register available keyboard bindings.\n *\n * @param {Keyboard} keyboard\n * @param {EditorActions} editorActions\n */\nKeyboardBindings.prototype.registerBindings = function(keyboard, editorActions) {\n\n /**\n * Add keyboard binding if respective editor action\n * is registered.\n *\n * @param {string} action name\n * @param {Function} fn that implements the key binding\n */\n function addListener(action, fn) {\n\n if (editorActions.isRegistered(action)) {\n keyboard.addListener(fn);\n }\n }\n\n\n // undo\n // (CTRL|CMD) + Z\n addListener('undo', function(context) {\n\n var event = context.keyEvent;\n\n if (isCmd(event) && !isShift(event) && isKey(KEYS_UNDO, event)) {\n editorActions.trigger('undo');\n\n return true;\n }\n });\n\n // redo\n // CTRL + Y\n // CMD + SHIFT + Z\n addListener('redo', function(context) {\n\n var event = context.keyEvent;\n\n if (isCmd(event) && (isKey(KEYS_REDO, event) || (isKey(KEYS_UNDO, event) && isShift(event)))) {\n editorActions.trigger('redo');\n\n return true;\n }\n });\n\n // copy\n // CTRL/CMD + C\n addListener('copy', function(context) {\n\n var event = context.keyEvent;\n\n if (isCmd(event) && isKey(KEYS_COPY, event)) {\n editorActions.trigger('copy');\n\n return true;\n }\n });\n\n // paste\n // CTRL/CMD + V\n addListener('paste', function(context) {\n\n var event = context.keyEvent;\n\n if (isCmd(event) && isKey(KEYS_PASTE, event)) {\n editorActions.trigger('paste');\n\n return true;\n }\n });\n\n // zoom in one step\n // CTRL/CMD + +\n addListener('stepZoom', function(context) {\n\n var event = context.keyEvent;\n\n // quirk: it has to be triggered by `=` as well to work on international keyboard layout\n // cf: https://github.com/bpmn-io/bpmn-js/issues/1362#issuecomment-722989754\n if (isKey([ '+', 'Add', '=' ], event) && isCmd(event)) {\n editorActions.trigger('stepZoom', { value: 1 });\n\n return true;\n }\n });\n\n // zoom out one step\n // CTRL + -\n addListener('stepZoom', function(context) {\n\n var event = context.keyEvent;\n\n if (isKey([ '-', 'Subtract' ], event) && isCmd(event)) {\n editorActions.trigger('stepZoom', { value: -1 });\n\n return true;\n }\n });\n\n // zoom to the default level\n // CTRL + 0\n addListener('zoom', function(context) {\n\n var event = context.keyEvent;\n\n if (isKey('0', event) && isCmd(event)) {\n editorActions.trigger('zoom', { value: 1 });\n\n return true;\n }\n });\n\n // delete selected element\n // DEL\n addListener('removeSelection', function(context) {\n\n var event = context.keyEvent;\n\n if (isKey(['Backspace', 'Delete', 'Del' ], event)) {\n editorActions.trigger('removeSelection');\n\n return true;\n }\n });\n};","import Keyboard from './Keyboard';\nimport KeyboardBindings from './KeyboardBindings';\n\nexport default {\n __init__: [ 'keyboard', 'keyboardBindings' ],\n keyboard: [ 'type', Keyboard ],\n keyboardBindings: [ 'type', KeyboardBindings ]\n};\n","import {\n isCmd,\n isKey,\n isShift\n} from 'diagram-js/lib/features/keyboard/KeyboardUtil';\n\nimport {\n KEYS_REDO,\n KEYS_UNDO\n} from 'diagram-js/lib/features/keyboard/KeyboardBindings';\n\nconst LOW_PRIORITY = 500;\n\nexport default class FormEditorKeyboardBindings {\n constructor(eventBus, keyboard) {\n eventBus.on('editorActions.init', LOW_PRIORITY, (event) => {\n const { editorActions } = event;\n\n this.registerBindings(keyboard, editorActions);\n });\n }\n\n registerBindings(keyboard, editorActions) {\n\n function addListener(action, fn) {\n if (editorActions.isRegistered(action)) {\n keyboard.addListener(fn);\n }\n }\n\n // undo\n // (CTRL|CMD) + Z\n addListener('undo', (context) => {\n const { keyEvent } = context;\n\n if (isCmd(keyEvent) && !isShift(keyEvent) && isKey(KEYS_UNDO, keyEvent)) {\n editorActions.trigger('undo');\n\n return true;\n }\n });\n\n // redo\n // CTRL + Y\n // CMD + SHIFT + Z\n addListener('redo', (context) => {\n const { keyEvent } = context;\n\n if (isCmd(keyEvent) && (isKey(KEYS_REDO, keyEvent) || (isKey(KEYS_UNDO, keyEvent) && isShift(keyEvent)))) {\n editorActions.trigger('redo');\n\n return true;\n }\n });\n\n }\n}\n\nFormEditorKeyboardBindings.$inject = [ 'eventBus', 'keyboard' ];","import KeyboardModule from 'diagram-js/lib/features/keyboard';\n\nimport FormEditorKeyboardBindings from './FormEditorKeyboardBindings';\n\nexport default {\n __depends__: [\n KeyboardModule\n ],\n __init__: [ 'keyboardBindings' ],\n keyboardBindings: [ 'type', FormEditorKeyboardBindings ]\n};","export function arrayAdd(array, index, item) {\n array.splice(index, 0, item);\n\n return array;\n}\n\nexport { mutate as arrayMove } from 'array-move';\n\nexport function arrayRemove(array, index) {\n array.splice(index, 1);\n\n return array;\n}\n\nexport function updatePath(formFieldRegistry, formField, index) {\n const parent = formFieldRegistry.get(formField._parent);\n\n formField._path = [ ...parent._path, 'components', index ];\n\n return formField;\n}","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class AddFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n formField,\n targetFormField,\n targetIndex\n } = context;\n\n const { schema } = this._formEditor._getState();\n\n const targetPath = [ ...targetFormField._path, 'components' ];\n\n formField._parent = targetFormField.id;\n\n // (1) Add new form field\n arrayAdd(get(schema, targetPath), targetIndex, formField);\n\n // (2) Update paths of new form field and its siblings\n get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Add new form field to form field registry\n this._formFieldRegistry.add(formField);\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n\n revert(context) {\n const {\n formField,\n targetFormField,\n targetIndex\n } = context;\n\n const { schema } = this._formEditor._getState();\n\n const targetPath = [ ...targetFormField._path, 'components' ];\n\n // (1) Remove new form field\n arrayRemove(get(schema, targetPath), targetIndex);\n\n // (2) Update paths of new form field and its siblings\n get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Remove new form field from form field registry\n this._formFieldRegistry.remove(formField);\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n}\n\nAddFormFieldHandler.$inject = [ 'formEditor', 'formFieldRegistry' ];","export default class EditFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n formField,\n properties\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const oldProperties = {};\n\n for (let key in properties) {\n oldProperties[ key ] = formField[ key ];\n\n const property = properties[ key ];\n\n if (key === 'id') {\n if (property !== formField.id) {\n this._formFieldRegistry.updateId(formField, property);\n }\n } else {\n formField[ key ] = property;\n }\n }\n\n context.oldProperties = oldProperties;\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n\n return formField;\n }\n\n revert(context) {\n const {\n formField,\n oldProperties\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n for (let key in oldProperties) {\n\n const property = oldProperties[ key ];\n\n if (key === 'id') {\n if (property !== formField.id) {\n this._formFieldRegistry.updateId(formField, property);\n }\n } else {\n formField[ key ] = property;\n }\n }\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n\n return formField;\n }\n\n}\n\nEditFormFieldHandler.$inject = [\n 'formEditor',\n 'formFieldRegistry'\n];","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayMove,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class MoveFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n this.moveFormField(context);\n }\n\n revert(context) {\n let {\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex\n } = context;\n\n this.moveFormField({\n sourceFormField: targetFormField,\n targetFormField: sourceFormField,\n sourceIndex: targetIndex,\n targetIndex: sourceIndex\n }, true);\n }\n\n moveFormField(context, revert) {\n let {\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const sourcePath = [ ...sourceFormField._path, 'components' ];\n\n if (sourceFormField.id === targetFormField.id) {\n\n if (revert) {\n if (sourceIndex > targetIndex) {\n sourceIndex--;\n }\n } else {\n if (sourceIndex < targetIndex) {\n targetIndex--;\n }\n }\n\n // (1) Move form field\n arrayMove(get(schema, sourcePath), sourceIndex, targetIndex);\n\n // (2) Update paths of new form field and its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n } else {\n const formField = get(schema, [ ...sourcePath, sourceIndex ]);\n\n formField._parent = targetFormField.id;\n\n // (1) Remove form field\n arrayRemove(get(schema, sourcePath), sourceIndex);\n\n // (2) Update paths of siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n const targetPath = [ ...targetFormField._path, 'components' ];\n\n // (3) Add form field\n arrayAdd(get(schema, targetPath), targetIndex, formField);\n\n // (4) Update paths of siblings\n get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n }\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n}\n\nMoveFormFieldHandler.$inject = [ 'formEditor', 'formFieldRegistry' ];","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class RemoveFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n sourceFormField,\n sourceIndex\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const sourcePath = [ ...sourceFormField._path, 'components' ];\n\n const formField = context.formField = get(schema, [ ...sourcePath, sourceIndex ]);\n\n // (1) Remove form field\n arrayRemove(get(schema, sourcePath), sourceIndex);\n\n // (2) Update paths of its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Remove form field from form field registry\n this._formFieldRegistry.remove(formField);\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n\n revert(context) {\n const {\n formField,\n sourceFormField,\n sourceIndex\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const sourcePath = [ ...sourceFormField._path, 'components' ];\n\n // (1) Add form field\n arrayAdd(get(schema, sourcePath), sourceIndex, formField);\n\n // (2) Update paths of its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Add form field to form field registry\n this._formFieldRegistry.add(formField);\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n}\n\nRemoveFormFieldHandler.$inject = [ 'formEditor', 'formFieldRegistry' ];","export default class UpdateIdClaimHandler {\n\n /**\n * @constructor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formFieldRegistry) {\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n claiming,\n formField,\n id\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._ids.claim(id, formField);\n } else {\n this._formFieldRegistry._ids.unclaim(id);\n }\n }\n\n revert(context) {\n const {\n claiming,\n formField,\n id\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._ids.unclaim(id);\n } else {\n this._formFieldRegistry._ids.claim(id, formField);\n }\n }\n}\n\nUpdateIdClaimHandler.$inject = [ 'formFieldRegistry' ];","export default class UpdateKeyClaimHandler {\n\n /**\n * @constructor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formFieldRegistry) {\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n claiming,\n formField,\n key\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._keys.claim(key, formField);\n } else {\n this._formFieldRegistry._keys.unclaim(key);\n }\n }\n\n revert(context) {\n const {\n claiming,\n formField,\n key\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._keys.unclaim(key);\n } else {\n this._formFieldRegistry._keys.claim(key, formField);\n }\n }\n}\n\nUpdateKeyClaimHandler.$inject = [ 'formFieldRegistry' ];","import AddFormFieldHandler from './cmd/AddFormFieldHandler';\nimport EditFormFieldHandler from './cmd/EditFormFieldHandler';\nimport MoveFormFieldHandler from './cmd/MoveFormFieldHandler';\nimport RemoveFormFieldHandler from './cmd/RemoveFormFieldHandler';\nimport UpdateIdClaimHandler from './cmd/UpdateIdClaimHandler';\nimport UpdateKeyClaimHandler from './cmd/UpdateKeyClaimHandler';\n\nimport { isObject } from 'min-dash';\n\n\nexport default class Modeling {\n constructor(commandStack, eventBus, formEditor, formFieldRegistry, fieldFactory) {\n this._commandStack = commandStack;\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n this._fieldFactory = fieldFactory;\n\n eventBus.on('form.init', () => {\n this.registerHandlers();\n });\n }\n\n registerHandlers() {\n Object.entries(this.getHandlers()).forEach(([ id, handler ]) => {\n this._commandStack.registerHandler(id, handler);\n });\n }\n\n getHandlers() {\n return {\n 'formField.add': AddFormFieldHandler,\n 'formField.edit': EditFormFieldHandler,\n 'formField.move': MoveFormFieldHandler,\n 'formField.remove': RemoveFormFieldHandler,\n 'id.updateClaim': UpdateIdClaimHandler,\n 'key.updateClaim': UpdateKeyClaimHandler\n };\n }\n\n addFormField(attrs, targetFormField, targetIndex) {\n\n const formField = this._fieldFactory.create(attrs);\n\n const context = {\n formField,\n targetFormField,\n targetIndex\n };\n\n this._commandStack.execute('formField.add', context);\n\n return formField;\n }\n\n editFormField(formField, properties, value) {\n if (!isObject(properties)) {\n properties = {\n [ properties ]: value\n };\n }\n\n const context = {\n formField,\n properties\n };\n\n this._commandStack.execute('formField.edit', context);\n }\n\n moveFormField(formField, sourceFormField, targetFormField, sourceIndex, targetIndex) {\n const context = {\n formField,\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex\n };\n\n this._commandStack.execute('formField.move', context);\n }\n\n removeFormField(formField, sourceFormField, sourceIndex) {\n const context = {\n formField,\n sourceFormField,\n sourceIndex\n };\n\n this._commandStack.execute('formField.remove', context);\n }\n\n claimId(formField, id) {\n const context = {\n formField,\n id,\n claiming: true\n };\n\n this._commandStack.execute('id.updateClaim', context);\n }\n\n unclaimId(formField, id) {\n const context = {\n formField,\n id,\n claiming: false\n };\n\n this._commandStack.execute('id.updateClaim', context);\n }\n\n claimKey(formField, key) {\n const context = {\n formField,\n key,\n claiming: true\n };\n\n this._commandStack.execute('key.updateClaim', context);\n }\n\n unclaimKey(formField, key) {\n const context = {\n formField,\n key,\n claiming: false\n };\n\n this._commandStack.execute('key.updateClaim', context);\n }\n}\n\nModeling.$inject = [\n 'commandStack',\n 'eventBus',\n 'formEditor',\n 'formFieldRegistry',\n 'fieldFactory'\n];","import {\n forEach,\n isFunction,\n isArray,\n isNumber,\n isObject\n} from 'min-dash';\n\n\nvar DEFAULT_PRIORITY = 1000;\n\n/**\n * A utility that can be used to plug-in into the command execution for\n * extension and/or validation.\n *\n * @param {EventBus} eventBus\n *\n * @example\n *\n * import inherits from 'inherits';\n *\n * import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n *\n * function CommandLogger(eventBus) {\n * CommandInterceptor.call(this, eventBus);\n *\n * this.preExecute(function(event) {\n * console.log('command pre-execute', event);\n * });\n * }\n *\n * inherits(CommandLogger, CommandInterceptor);\n *\n */\nexport default function CommandInterceptor(eventBus) {\n this._eventBus = eventBus;\n}\n\nCommandInterceptor.$inject = [ 'eventBus' ];\n\nfunction unwrapEvent(fn, that) {\n return function(event) {\n return fn.call(that || null, event.context, event.command, event);\n };\n}\n\n/**\n * Register an interceptor for a command execution\n *\n * @param {string|Array<string>} [events] list of commands to register on\n * @param {string} [hook] command hook, i.e. preExecute, executed to listen on\n * @param {number} [priority] the priority on which to hook into the execution\n * @param {Function} handlerFn interceptor to be invoked with (event)\n * @param {boolean} unwrap if true, unwrap the event and pass (context, command, event) to the\n * listener instead\n * @param {Object} [that] Pass context (`this`) to the handler function\n */\nCommandInterceptor.prototype.on = function(events, hook, priority, handlerFn, unwrap, that) {\n\n if (isFunction(hook) || isNumber(hook)) {\n that = unwrap;\n unwrap = handlerFn;\n handlerFn = priority;\n priority = hook;\n hook = null;\n }\n\n if (isFunction(priority)) {\n that = unwrap;\n unwrap = handlerFn;\n handlerFn = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (isObject(unwrap)) {\n that = unwrap;\n unwrap = false;\n }\n\n if (!isFunction(handlerFn)) {\n throw new Error('handlerFn must be a function');\n }\n\n if (!isArray(events)) {\n events = [ events ];\n }\n\n var eventBus = this._eventBus;\n\n forEach(events, function(event) {\n\n // concat commandStack(.event)?(.hook)?\n var fullEvent = [ 'commandStack', event, hook ].filter(function(e) { return e; }).join('.');\n\n eventBus.on(fullEvent, priority, unwrap ? unwrapEvent(handlerFn, that) : handlerFn, that);\n });\n};\n\n\nvar hooks = [\n 'canExecute',\n 'preExecute',\n 'preExecuted',\n 'execute',\n 'executed',\n 'postExecute',\n 'postExecuted',\n 'revert',\n 'reverted'\n];\n\n/*\n * Install hook shortcuts\n *\n * This will generate the CommandInterceptor#(preExecute|...|reverted) methods\n * which will in term forward to CommandInterceptor#on.\n */\nforEach(hooks, function(hook) {\n\n /**\n * {canExecute|preExecute|preExecuted|execute|executed|postExecute|postExecuted|revert|reverted}\n *\n * A named hook for plugging into the command execution\n *\n * @param {string|Array<string>} [events] list of commands to register on\n * @param {number} [priority] the priority on which to hook into the execution\n * @param {Function} handlerFn interceptor to be invoked with (event)\n * @param {boolean} [unwrap=false] if true, unwrap the event and pass (context, command, event) to the\n * listener instead\n * @param {Object} [that] Pass context (`this`) to the handler function\n */\n CommandInterceptor.prototype[hook] = function(events, priority, handlerFn, unwrap, that) {\n\n if (isFunction(events) || isNumber(events)) {\n that = unwrap;\n unwrap = handlerFn;\n handlerFn = priority;\n priority = events;\n events = null;\n }\n\n this.on(events, hook, priority, handlerFn, unwrap, that);\n };\n});\n","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default class IdBehavior extends CommandInterceptor {\n constructor(eventBus, modeling) {\n super(eventBus);\n\n // @ts-ignore-next-line\n this.preExecute('formField.remove', function(context) {\n const { formField } = context;\n\n const { id } = formField;\n\n modeling.unclaimId(formField, id);\n }, true);\n\n // @ts-ignore-next-line\n this.preExecute('formField.edit', function(context) {\n const {\n formField,\n properties\n } = context;\n\n if ('id' in properties) {\n modeling.unclaimId(formField, formField.id);\n\n modeling.claimId(formField, properties.id);\n }\n }, true);\n }\n}\n\nIdBehavior.$inject = [ 'eventBus', 'modeling' ];","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default class KeyBehavior extends CommandInterceptor {\n constructor(eventBus, modeling) {\n super(eventBus);\n\n // @ts-ignore-next-line\n this.preExecute('formField.remove', function(context) {\n const { formField } = context;\n\n const { key } = formField;\n\n if (key) {\n modeling.unclaimKey(formField, key);\n }\n }, true);\n\n // @ts-ignore-next-line\n this.preExecute('formField.edit', function(context) {\n const {\n formField,\n properties\n } = context;\n\n if ('key' in properties) {\n modeling.unclaimKey(formField, formField.key);\n\n modeling.claimKey(formField, properties.key);\n }\n }, true);\n }\n}\n\nKeyBehavior.$inject = [ 'eventBus', 'modeling' ];","import IdBehavior from './IdBehavior';\nimport KeyBehavior from './KeyBehavior';\n\nexport default {\n __init__: [\n 'idBehavior',\n 'keyBehavior'\n ],\n idBehavior: [ 'type', IdBehavior ],\n keyBehavior: [ 'type', KeyBehavior ]\n};\n","import {\n uniqueBy,\n isArray\n} from 'min-dash';\n\n\n/**\n * A service that offers un- and redoable execution of commands.\n *\n * The command stack is responsible for executing modeling actions\n * in a un- and redoable manner. To do this it delegates the actual\n * command execution to {@link CommandHandler}s.\n *\n * Command handlers provide {@link CommandHandler#execute(ctx)} and\n * {@link CommandHandler#revert(ctx)} methods to un- and redo a command\n * identified by a command context.\n *\n *\n * ## Life-Cycle events\n *\n * In the process the command stack fires a number of life-cycle events\n * that other components to participate in the command execution.\n *\n * * preExecute\n * * preExecuted\n * * execute\n * * executed\n * * postExecute\n * * postExecuted\n * * revert\n * * reverted\n *\n * A special event is used for validating, whether a command can be\n * performed prior to its execution.\n *\n * * canExecute\n *\n * Each of the events is fired as `commandStack.{eventName}` and\n * `commandStack.{commandName}.{eventName}`, respectively. This gives\n * components fine grained control on where to hook into.\n *\n * The event object fired transports `command`, the name of the\n * command and `context`, the command context.\n *\n *\n * ## Creating Command Handlers\n *\n * Command handlers should provide the {@link CommandHandler#execute(ctx)}\n * and {@link CommandHandler#revert(ctx)} methods to implement\n * redoing and undoing of a command.\n *\n * A command handler _must_ ensure undo is performed properly in order\n * not to break the undo chain. It must also return the shapes that\n * got changed during the `execute` and `revert` operations.\n *\n * Command handlers may execute other modeling operations (and thus\n * commands) in their `preExecute` and `postExecute` phases. The command\n * stack will properly group all commands together into a logical unit\n * that may be re- and undone atomically.\n *\n * Command handlers must not execute other commands from within their\n * core implementation (`execute`, `revert`).\n *\n *\n * ## Change Tracking\n *\n * During the execution of the CommandStack it will keep track of all\n * elements that have been touched during the command's execution.\n *\n * At the end of the CommandStack execution it will notify interested\n * components via an 'elements.changed' event with all the dirty\n * elements.\n *\n * The event can be picked up by components that are interested in the fact\n * that elements have been changed. One use case for this is updating\n * their graphical representation after moving / resizing or deletion.\n *\n * @see CommandHandler\n *\n * @param {EventBus} eventBus\n * @param {Injector} injector\n */\nexport default function CommandStack(eventBus, injector) {\n\n /**\n * A map of all registered command handlers.\n *\n * @type {Object}\n */\n this._handlerMap = {};\n\n /**\n * A stack containing all re/undoable actions on the diagram\n *\n * @type {Array<Object>}\n */\n this._stack = [];\n\n /**\n * The current index on the stack\n *\n * @type {number}\n */\n this._stackIdx = -1;\n\n /**\n * Current active commandStack execution\n *\n * @type {Object}\n * @property {Object[]} actions\n * @property {Object[]} dirty\n * @property { 'undo' | 'redo' | 'clear' | 'execute' | null } trigger the cause of the current excecution\n */\n this._currentExecution = {\n actions: [],\n dirty: [],\n trigger: null\n };\n\n\n this._injector = injector;\n this._eventBus = eventBus;\n\n this._uid = 1;\n\n eventBus.on([\n 'diagram.destroy',\n 'diagram.clear'\n ], function() {\n this.clear(false);\n }, this);\n}\n\nCommandStack.$inject = [ 'eventBus', 'injector' ];\n\n\n/**\n * Execute a command\n *\n * @param {string} command the command to execute\n * @param {Object} context the environment to execute the command in\n */\nCommandStack.prototype.execute = function(command, context) {\n if (!command) {\n throw new Error('command required');\n }\n\n this._currentExecution.trigger = 'execute';\n\n var action = { command: command, context: context };\n\n this._pushAction(action);\n this._internalExecute(action);\n this._popAction(action);\n};\n\n\n/**\n * Ask whether a given command can be executed.\n *\n * Implementors may hook into the mechanism on two ways:\n *\n * * in event listeners:\n *\n * Users may prevent the execution via an event listener.\n * It must prevent the default action for `commandStack.(<command>.)canExecute` events.\n *\n * * in command handlers:\n *\n * If the method {@link CommandHandler#canExecute} is implemented in a handler\n * it will be called to figure out whether the execution is allowed.\n *\n * @param {string} command the command to execute\n * @param {Object} context the environment to execute the command in\n *\n * @return {boolean} true if the command can be executed\n */\nCommandStack.prototype.canExecute = function(command, context) {\n\n var action = { command: command, context: context };\n\n var handler = this._getHandler(command);\n\n var result = this._fire(command, 'canExecute', action);\n\n // handler#canExecute will only be called if no listener\n // decided on a result already\n if (result === undefined) {\n if (!handler) {\n return false;\n }\n\n if (handler.canExecute) {\n result = handler.canExecute(context);\n }\n }\n\n return result;\n};\n\n\n/**\n * Clear the command stack, erasing all undo / redo history\n */\nCommandStack.prototype.clear = function(emit) {\n this._stack.length = 0;\n this._stackIdx = -1;\n\n if (emit !== false) {\n this._fire('changed', { trigger: 'clear' });\n }\n};\n\n\n/**\n * Undo last command(s)\n */\nCommandStack.prototype.undo = function() {\n var action = this._getUndoAction(),\n next;\n\n if (action) {\n this._currentExecution.trigger = 'undo';\n\n this._pushAction(action);\n\n while (action) {\n this._internalUndo(action);\n next = this._getUndoAction();\n\n if (!next || next.id !== action.id) {\n break;\n }\n\n action = next;\n }\n\n this._popAction();\n }\n};\n\n\n/**\n * Redo last command(s)\n */\nCommandStack.prototype.redo = function() {\n var action = this._getRedoAction(),\n next;\n\n if (action) {\n this._currentExecution.trigger = 'redo';\n\n this._pushAction(action);\n\n while (action) {\n this._internalExecute(action, true);\n next = this._getRedoAction();\n\n if (!next || next.id !== action.id) {\n break;\n }\n\n action = next;\n }\n\n this._popAction();\n }\n};\n\n\n/**\n * Register a handler instance with the command stack\n *\n * @param {string} command\n * @param {CommandHandler} handler\n */\nCommandStack.prototype.register = function(command, handler) {\n this._setHandler(command, handler);\n};\n\n\n/**\n * Register a handler type with the command stack\n * by instantiating it and injecting its dependencies.\n *\n * @param {string} command\n * @param {Function} a constructor for a {@link CommandHandler}\n */\nCommandStack.prototype.registerHandler = function(command, handlerCls) {\n\n if (!command || !handlerCls) {\n throw new Error('command and handlerCls must be defined');\n }\n\n var handler = this._injector.instantiate(handlerCls);\n this.register(command, handler);\n};\n\nCommandStack.prototype.canUndo = function() {\n return !!this._getUndoAction();\n};\n\nCommandStack.prototype.canRedo = function() {\n return !!this._getRedoAction();\n};\n\n// stack access //////////////////////\n\nCommandStack.prototype._getRedoAction = function() {\n return this._stack[this._stackIdx + 1];\n};\n\n\nCommandStack.prototype._getUndoAction = function() {\n return this._stack[this._stackIdx];\n};\n\n\n// internal functionality //////////////////////\n\nCommandStack.prototype._internalUndo = function(action) {\n var self = this;\n\n var command = action.command,\n context = action.context;\n\n var handler = this._getHandler(command);\n\n // guard against illegal nested command stack invocations\n this._atomicDo(function() {\n self._fire(command, 'revert', action);\n\n if (handler.revert) {\n self._markDirty(handler.revert(context));\n }\n\n self._revertedAction(action);\n\n self._fire(command, 'reverted', action);\n });\n};\n\n\nCommandStack.prototype._fire = function(command, qualifier, event) {\n if (arguments.length < 3) {\n event = qualifier;\n qualifier = null;\n }\n\n var names = qualifier ? [ command + '.' + qualifier, qualifier ] : [ command ],\n i, name, result;\n\n event = this._eventBus.createEvent(event);\n\n for (i = 0; (name = names[i]); i++) {\n result = this._eventBus.fire('commandStack.' + name, event);\n\n if (event.cancelBubble) {\n break;\n }\n }\n\n return result;\n};\n\nCommandStack.prototype._createId = function() {\n return this._uid++;\n};\n\nCommandStack.prototype._atomicDo = function(fn) {\n\n var execution = this._currentExecution;\n\n execution.atomic = true;\n\n try {\n fn();\n } finally {\n execution.atomic = false;\n }\n};\n\nCommandStack.prototype._internalExecute = function(action, redo) {\n var self = this;\n\n var command = action.command,\n context = action.context;\n\n var handler = this._getHandler(command);\n\n if (!handler) {\n throw new Error('no command handler registered for <' + command + '>');\n }\n\n this._pushAction(action);\n\n if (!redo) {\n this._fire(command, 'preExecute', action);\n\n if (handler.preExecute) {\n handler.preExecute(context);\n }\n\n this._fire(command, 'preExecuted', action);\n }\n\n // guard against illegal nested command stack invocations\n this._atomicDo(function() {\n\n self._fire(command, 'execute', action);\n\n if (handler.execute) {\n\n // actual execute + mark return results as dirty\n self._markDirty(handler.execute(context));\n }\n\n // log to stack\n self._executedAction(action, redo);\n\n self._fire(command, 'executed', action);\n });\n\n if (!redo) {\n this._fire(command, 'postExecute', action);\n\n if (handler.postExecute) {\n handler.postExecute(context);\n }\n\n this._fire(command, 'postExecuted', action);\n }\n\n this._popAction(action);\n};\n\n\nCommandStack.prototype._pushAction = function(action) {\n\n var execution = this._currentExecution,\n actions = execution.actions;\n\n var baseAction = actions[0];\n\n if (execution.atomic) {\n throw new Error('illegal invocation in <execute> or <revert> phase (action: ' + action.command + ')');\n }\n\n if (!action.id) {\n action.id = (baseAction && baseAction.id) || this._createId();\n }\n\n actions.push(action);\n};\n\n\nCommandStack.prototype._popAction = function() {\n var execution = this._currentExecution,\n trigger = execution.trigger,\n actions = execution.actions,\n dirty = execution.dirty;\n\n actions.pop();\n\n if (!actions.length) {\n this._eventBus.fire('elements.changed', { elements: uniqueBy('id', dirty.reverse()) });\n\n dirty.length = 0;\n\n this._fire('changed', { trigger: trigger });\n\n execution.trigger = null;\n }\n};\n\n\nCommandStack.prototype._markDirty = function(elements) {\n var execution = this._currentExecution;\n\n if (!elements) {\n return;\n }\n\n elements = isArray(elements) ? elements : [ elements ];\n\n execution.dirty = execution.dirty.concat(elements);\n};\n\n\nCommandStack.prototype._executedAction = function(action, redo) {\n var stackIdx = ++this._stackIdx;\n\n if (!redo) {\n this._stack.splice(stackIdx, this._stack.length, action);\n }\n};\n\n\nCommandStack.prototype._revertedAction = function(action) {\n this._stackIdx--;\n};\n\n\nCommandStack.prototype._getHandler = function(command) {\n return this._handlerMap[command];\n};\n\nCommandStack.prototype._setHandler = function(command, handler) {\n if (!command || !handler) {\n throw new Error('command and handler required');\n }\n\n if (this._handlerMap[command]) {\n throw new Error('overriding handler for command <' + command + '>');\n }\n\n this._handlerMap[command] = handler;\n};\n","import CommandStack from './CommandStack';\n\nexport default {\n commandStack: [ 'type', CommandStack ]\n};\n","import Modeling from './Modeling';\n\nimport behaviorModule from './behavior';\nimport commandModule from 'diagram-js/lib/command';\n\nexport default {\n __depends__: [\n behaviorModule,\n commandModule\n ],\n __init__: [ 'modeling' ],\n modeling: [ 'type', Modeling ]\n};\n","export default class Selection {\n constructor(eventBus) {\n this._eventBus = eventBus;\n this._selection = null;\n }\n\n get() {\n return this._selection;\n }\n\n set(selection) {\n if (this._selection === selection) {\n return;\n }\n\n this._selection = selection;\n\n this._eventBus.fire('selection.changed', {\n selection: this._selection\n });\n }\n\n toggle(selection) {\n const newSelection = this._selection === selection ? null : selection;\n\n this.set(newSelection);\n }\n\n clear() {\n this.set(null);\n }\n\n isSelected(formField) {\n return this._selection === formField;\n }\n}\n\nSelection.$inject = [ 'eventBus' ];","export default class SelectionBehavior {\n constructor(eventBus, selection) {\n eventBus.on([\n 'commandStack.formField.add.postExecuted',\n 'commandStack.formField.move.postExecuted'\n ], ({ context }) => {\n const { formField } = context;\n\n selection.set(formField);\n });\n\n eventBus.on('commandStack.formField.remove.postExecuted', ({ context }) => {\n const {\n sourceFormField,\n sourceIndex\n } = context;\n\n const formField = sourceFormField.components[ sourceIndex ] || sourceFormField.components[ sourceIndex - 1 ];\n\n if (formField) {\n selection.set(formField);\n } else {\n selection.clear();\n }\n });\n\n eventBus.on('formField.remove', ({ formField }) => {\n if (selection.isSelected(formField)) {\n selection.clear();\n }\n });\n }\n}\n\nSelectionBehavior.$inject = [ 'eventBus', 'selection' ];","import Selection from './Selection';\nimport SelectionBehavior from './SelectionBehavior';\n\nexport default {\n __init__: [ 'selection', 'selectionBehavior' ],\n selection: [ 'type', Selection ],\n selectionBehavior: [ 'type', SelectionBehavior ]\n};","import Ids from 'ids';\n\nimport {\n isString,\n set\n} from 'min-dash';\n\nimport {\n createInjector,\n clone,\n createFormContainer,\n schemaVersion\n} from '@bpmn-io/form-js-viewer';\n\nimport core from './core';\n\nimport EditorActionsModule from './features/editor-actions';\nimport KeyboardModule from './features/keyboard';\nimport ModelingModule from './features/modeling';\nimport SelectionModule from './features/selection';\n\nconst ids = new Ids([ 32, 36, 1 ]);\n\n/**\n * @typedef { import('./types').Injector } Injector\n * @typedef { import('./types').Module } Module\n * @typedef { import('./types').Schema } Schema\n *\n * @typedef { import('./types').FormEditorOptions } FormEditorOptions\n * @typedef { import('./types').FormEditorProperties } FormEditorProperties\n *\n * @typedef { {\n * properties: FormEditorProperties,\n * schema: Schema\n * } } State\n */\n\n/**\n * The form editor.\n */\nexport default class FormEditor {\n\n /**\n * @constructor\n * @param {FormEditorOptions} options\n */\n constructor(options = {}) {\n\n /**\n * @public\n * @type {String}\n */\n this._id = ids.next();\n\n /**\n * @private\n * @type {Element}\n */\n this._container = createFormContainer();\n\n this._container.setAttribute('input-handle-modified-keys', 'z,y');\n\n const {\n container,\n exporter,\n injector = this._createInjector(options, this._container),\n properties = {}\n } = options;\n\n /**\n * @private\n * @type {any}\n */\n this.exporter = exporter;\n\n /**\n * @private\n * @type {State}\n */\n this._state = {\n properties,\n schema: null\n };\n\n this.get = injector.get;\n\n this.invoke = injector.invoke;\n\n this.get('eventBus').fire('form.init');\n\n if (container) {\n this.attachTo(container);\n }\n }\n\n clear() {\n\n // clear form services\n this._emit('diagram.clear');\n\n // clear diagram services (e.g. EventBus)\n this._emit('form.clear');\n }\n\n destroy() {\n\n // destroy form services\n this.get('eventBus').fire('form.destroy');\n\n // destroy diagram services (e.g. EventBus)\n this.get('eventBus').fire('diagram.destroy');\n\n this._detach(false);\n }\n\n /**\n * @param {Schema} schema\n *\n * @return {Promise<{ warnings: Array<any> }>}\n */\n importSchema(schema) {\n return new Promise((resolve, reject) => {\n try {\n this.clear();\n\n const {\n schema: importedSchema,\n warnings\n } = this.get('importer').importSchema(schema);\n\n this._setState({\n schema: importedSchema\n });\n\n this._emit('import.done', { warnings });\n\n return resolve({ warnings });\n } catch (error) {\n this._emit('import.done', {\n error: error,\n warnings: error.warnings || []\n });\n\n return reject(error);\n }\n });\n }\n\n /**\n * @returns {Schema}\n */\n saveSchema() {\n return this.getSchema();\n }\n\n /**\n * @returns {Schema}\n */\n getSchema() {\n const { schema } = this._getState();\n\n return exportSchema(\n schema,\n this.exporter,\n schemaVersion\n );\n }\n\n /**\n * @param {Element|string} parentNode\n */\n attachTo(parentNode) {\n if (!parentNode) {\n throw new Error('parentNode required');\n }\n\n this.detach();\n\n if (isString(parentNode)) {\n parentNode = document.querySelector(parentNode);\n }\n\n const container = this._container;\n\n parentNode.appendChild(container);\n\n this._emit('attach');\n }\n\n detach() {\n this._detach();\n }\n\n /**\n * @internal\n *\n * @param {boolean} [emit]\n */\n _detach(emit = true) {\n const container = this._container,\n parentNode = container.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n if (emit) {\n this._emit('detach');\n }\n\n parentNode.removeChild(container);\n }\n\n /**\n * @param {any} property\n * @param {any} value\n */\n setProperty(property, value) {\n const properties = set(this._getState().properties, [ property ], value);\n\n this._setState({ properties });\n }\n\n /**\n * @param {string} type\n * @param {number} priority\n * @param {Function} handler\n */\n on(type, priority, handler) {\n this.get('eventBus').on(type, priority, handler);\n }\n\n /**\n * @param {string} type\n * @param {Function} handler\n */\n off(type, handler) {\n this.get('eventBus').off(type, handler);\n }\n\n /**\n * @internal\n *\n * @param {FormEditorOptions} options\n * @param {Element} container\n *\n * @returns {Injector}\n */\n _createInjector(options, container) {\n const {\n additionalModules = [],\n modules = this._getModules(),\n renderer = {}\n } = options;\n\n const config = {\n ...options,\n renderer: {\n ...renderer,\n container\n }\n };\n\n return createInjector([\n { config: [ 'value', config ] },\n { formEditor: [ 'value', this ] },\n core,\n ...modules,\n ...additionalModules\n ]);\n }\n\n /**\n * @internal\n */\n _emit(type, data) {\n this.get('eventBus').fire(type, data);\n }\n\n /**\n * @internal\n */\n _getState() {\n return this._state;\n }\n\n /**\n * @internal\n */\n _setState(state) {\n this._state = {\n ...this._state,\n ...state\n };\n\n this._emit('changed', this._getState());\n }\n\n /**\n * @internal\n */\n _getModules() {\n return [\n ModelingModule,\n EditorActionsModule,\n KeyboardModule,\n SelectionModule\n ];\n }\n\n}\n\n// helpers //////////\n\nexport function exportSchema(schema, exporter, schemaVersion) {\n\n const exportDetails = exporter ? {\n exporter\n } : {};\n\n const cleanedSchema = clone(schema, (name, value) => {\n if ([ '_parent', '_path' ].includes(name)) {\n return undefined;\n }\n\n return value;\n });\n\n return {\n schemaVersion,\n ...exportDetails,\n ...cleanedSchema\n };\n}","import FormEditor from './FormEditor';\r\n\r\nimport { schemaVersion } from '@bpmn-io/form-js-viewer';\r\n\r\nexport {\r\n FormEditor,\r\n schemaVersion\r\n};\r\n\r\n/**\r\n * @typedef { import('./types').CreateFormEditorOptions } CreateFormEditorOptions\r\n */\r\n\r\n/**\r\n * Create a form editor.\r\n *\r\n * @param {CreateFormEditorOptions} options\r\n *\r\n * @return {Promise<FormEditor>}\r\n */\r\nexport function createFormEditor(options) {\r\n const {\r\n schema,\r\n ...rest\r\n } = options;\r\n\r\n const formEditor = new FormEditor(rest);\r\n\r\n return formEditor.importSchema(schema).then(() => {\r\n return formEditor;\r\n });\r\n}"],"names":["FN_REF","DEFAULT_PRIORITY","slice","Array","prototype","EventBus","_listeners","on","_destroy","events","priority","callback","that","isArray","isFunction","isNumber","Error","actualCallback","bind","self","forEach","e","_addListener","next","once","event","wrappedCallback","__isTomb","result","apply","arguments","off","_removeListener","createEvent","data","InternalEvent","init","fire","type","firstListener","returnValue","args","call","originalType","_invokeListeners","undefined","defaultPrevented","handleError","error","listener","cancelBubble","_invokeListener","invokeFunction","stopPropagation","preventDefault","console","newListener","_getListeners","previousListener","_setListeners","name","nextListener","listenerCallback","assign","fn","DebounceFactory","config","timeout","debounce","$inject","FieldFactory","constructor","formFieldRegistry","formFields","_formFieldRegistry","_formFields","create","attrs","applyDefaults","id","key","fieldDefinition","get","_ids","assigned","_keys","labelAttrs","label","field","_ensureId","keyed","_ensureKey","claim","prefix","nextPrefixed","FormFieldRegistry","BaseFieldRegistry","updateId","formField","newId","_validateId","_eventBus","remove","add","component","components","_parent","Importer","fieldFactory","_fieldFactory","importSchema","schema","warnings","importedSchema","importFormField","clone","err","fieldAttrs","parentId","index","parent","path","_path","importFormFields","map","importer","DragAndDropContext","createContext","drake","getService","strict","FormEditorContext","useContext","_extends","iconsByType","button","ButtonIcon","checkbox","CheckboxIcon","columns","ColumnsIcon","number","NumberIcon","radio","RadioIcon","select","SelectIcon","text","TextIcon","textfield","TextfieldIcon","default","FormIcon","types","Palette","props","_jsxs","_jsx","Icon","arrayAdd","array","item","copy","splice","arrayRemove","prefixId","textToLabel","length","substring","INPUTS","CheckboxInput","onChange","value","handleChange","target","checked","usePrevious","ref","useRef","useEffect","current","useDebounce","dependencies","useService","useMemo","flush","NumberInput","max","min","onInput","_onInput","validity","valid","parseInt","Select","options","option","Textarea","rows","TextInput","validate","prevValue","cachedValue","setCachedValue","useState","setError","classes","push","join","CheckboxInputEntry","editField","NumberInputEntry","SelectEntry","description","TextareaEntry","TextInputEntry","CollapsibleEntry","children","removeEntry","collapsed","setCollapsed","toggleCollapsed","Group","hasEntries","open","setOpen","toggleOpen","addEntry","ActionEntry","ColumnsEntry","Default","DescriptionEntry","DefaultValueEntry","defaultValue","values","parseStringToBoolean","parseBooleanToString","DisabledEntry","IdEntry","isUndefined","validateId","SPACE_REGEX","QNAME_REGEX","ID_REGEX","idValue","containsSpace","test","KeyEntry","LabelEntry","TextEntry","ValueEntry","set","GeneralGroup","entries","includes","ValidationGroup","ValuesGroup","entry","labelsByType","getGroups","groups","PropertiesPanel","eventBus","onFocus","onBlur","ContextPad","Empty","Element","formEditor","modeling","selection","scrollIntoView","elementBounds","getBoundingClientRect","containerBounds","_container","top","bottom","onClick","toggle","class","split","isSelected","onRemove","parentField","getFormFieldIndex","removeFormField","Children","FormEditor","injector","_getState","selectedFormField","setSelection","handleSelectionChanged","setDrake","dragAndDropContext","createDragulaInstance","dragulaInstance","dragula","isContainer","el","classList","contains","accepts","slideFactorX","slideFactorY","source","sibling","targetFormField","dataset","siblingFormField","targetIndex","fieldType","addFormField","sourceFormField","sourceIndex","moveFormField","onDetach","destroy","onAttach","formRenderContext","formContext","Map","errors","properties","readOnly","formId","_id","onSubmit","useCallback","onReset","editFormField","fieldFormIndex","CreatePreview","handleCloned","original","innerHTML","render","Renderer","renderConfig","container","compact","App","state","setState","formEditorContext","newState","__init__","FormFields","renderer","__depends__","importModule","renderModule","NOT_REGISTERED_ERROR","IS_REGISTERED_ERROR","EditorActions","_actions","_registerDefaultActions","editorActions","commandStack","zoomScroll","copyPaste","canvas","rules","keyboardMove","keyboardMoveSelection","register","undo","redo","selectedElements","paste","opts","stepZoom","zoom","allowed","elements","removableElements","removeElements","moveCanvas","moveSelection","direction","accelerated","trigger","action","actions","_registerAction","isRegistered","unregister","getActions","Object","keys","message","FormEditorActions","EditorActionsModule","hasModifier","ctrlKey","metaKey","shiftKey","altKey","isCmd","isKey","indexOf","keyCode","isShift","KEYDOWN_EVENT","KEYUP_EVENT","HANDLE_MODIFIER_ATTRIBUTE","Keyboard","_config","_keydownHandler","_keyupHandler","_fire","unbind","bindTo","_keyHandler","eventBusResult","_isEventIgnored","context","keyEvent","isInput","_isModifiedKeyIgnored","allowedModifiers","_getAllowedModifiers","element","modifierContainer","domClosest","_node","getAttribute","node","domEvent","getBinding","addListener","removeListener","domMatches","contentEditable","LOW_PRIORITY","KEYCODE_C","KEYCODE_V","KEYCODE_Y","KEYCODE_Z","KEYS_COPY","KEYS_PASTE","KEYS_REDO","KEYS_UNDO","KeyboardBindings","keyboard","registerBindings","keyboardBindings","FormEditorKeyboardBindings","KeyboardModule","updatePath","AddFormFieldHandler","_formEditor","execute","targetPath","_setState","revert","EditFormFieldHandler","oldProperties","property","MoveFormFieldHandler","sourcePath","arrayMove","RemoveFormFieldHandler","UpdateIdClaimHandler","claiming","unclaim","UpdateKeyClaimHandler","Modeling","_commandStack","registerHandlers","getHandlers","handler","registerHandler","isObject","claimId","unclaimId","claimKey","unclaimKey","CommandInterceptor","unwrapEvent","command","hook","handlerFn","unwrap","fullEvent","filter","hooks","IdBehavior","preExecute","KeyBehavior","idBehavior","keyBehavior","CommandStack","_handlerMap","_stack","_stackIdx","_currentExecution","dirty","_injector","_uid","clear","_pushAction","_internalExecute","_popAction","canExecute","_getHandler","emit","_getUndoAction","_internalUndo","_getRedoAction","_setHandler","handlerCls","instantiate","canUndo","canRedo","_atomicDo","_markDirty","_revertedAction","qualifier","names","i","_createId","execution","atomic","_executedAction","postExecute","baseAction","pop","uniqueBy","reverse","concat","stackIdx","behaviorModule","commandModule","Selection","_selection","newSelection","SelectionBehavior","selectionBehavior","ids","Ids","createFormContainer","setAttribute","exporter","_createInjector","_state","invoke","attachTo","_emit","_detach","Promise","resolve","reject","saveSchema","getSchema","exportSchema","schemaVersion","parentNode","detach","isString","document","querySelector","appendChild","removeChild","setProperty","additionalModules","modules","_getModules","createInjector","core","ModelingModule","SelectionModule","exportDetails","cleanedSchema","createFormEditor","rest","then"],"mappings":";;;;;;;;;;;;AAQA,IAAIA,MAAM,GAAG,MAAb;AAEA,IAAIC,kBAAgB,GAAG,IAAvB;AAEA,IAAIC,KAAK,GAAGC,KAAK,CAACC,SAAN,CAAgBF,KAA5B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASG,QAAT,GAAoB;AACjC,OAAKC,UAAL,GAAkB,EAAlB,CADiC;AAIjC;;AACA,OAAKC,EAAL,CAAQ,iBAAR,EAA2B,CAA3B,EAA8B,KAAKC,QAAnC,EAA6C,IAA7C;AACD;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAH,QAAQ,CAACD,SAAT,CAAmBG,EAAnB,GAAwB,UAASE,MAAT,EAAiBC,QAAjB,EAA2BC,QAA3B,EAAqCC,IAArC,EAA2C;AAEjEH,EAAAA,MAAM,GAAGI,OAAO,CAACJ,MAAD,CAAP,GAAkBA,MAAlB,GAA2B,CAAEA,MAAF,CAApC;;AAEA,MAAIK,UAAU,CAACJ,QAAD,CAAd,EAA0B;AACxBE,IAAAA,IAAI,GAAGD,QAAP;AACAA,IAAAA,QAAQ,GAAGD,QAAX;AACAA,IAAAA,QAAQ,GAAGT,kBAAX;AACD;;AAED,MAAI,CAACc,QAAQ,CAACL,QAAD,CAAb,EAAyB;AACvB,UAAM,IAAIM,KAAJ,CAAU,2BAAV,CAAN;AACD;;AAED,MAAIC,cAAc,GAAGN,QAArB;;AAEA,MAAIC,IAAJ,E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"}
1
+ {"version":3,"file":"index.es.js","sources":["../../../node_modules/diagram-js/lib/core/EventBus.js","../src/core/Debounce.js","../src/core/FieldFactory.js","../src/core/FormFieldRegistry.js","../src/import/Importer.js","../src/import/index.js","../src/render/context/DragAndDropContext.js","../src/render/context/FormEditorContext.js","../src/render/hooks/useService.js","../src/render/components/palette/icons/Button.svg","../src/render/components/palette/icons/Checkbox.svg","../src/render/components/palette/icons/Form.svg","../src/render/components/palette/icons/Group.svg","../src/render/components/palette/icons/Number.svg","../src/render/components/palette/icons/Radio.svg","../src/render/components/palette/icons/Select.svg","../src/render/components/palette/icons/Text.svg","../src/render/components/palette/icons/Textfield.svg","../src/render/components/palette/icons/index.js","../src/render/components/palette/Palette.js","../src/render/components/properties-panel/Util.js","../src/render/components/properties-panel/components/CheckboxInput.js","../src/render/hooks/usePrevious.js","../src/render/hooks/useDebounce.js","../src/render/components/properties-panel/components/NumberInput.js","../src/render/components/properties-panel/components/Select.js","../src/render/components/properties-panel/components/Textarea.js","../src/render/components/properties-panel/components/TextInput.js","../src/render/components/properties-panel/components/CheckboxInputEntry.js","../src/render/components/properties-panel/components/NumberInputEntry.js","../src/render/components/properties-panel/components/SelectEntry.js","../src/render/components/properties-panel/components/TextareaEntry.js","../src/render/components/properties-panel/components/TextInputEntry.js","../src/render/components/properties-panel/icons/pp-create.svg","../src/render/components/properties-panel/icons/pp-list-arrow.svg","../src/render/components/properties-panel/icons/pp-list-delete.svg","../src/render/components/properties-panel/icons/pp-section-arrow.svg","../src/render/components/properties-panel/components/CollapsibleEntry.js","../src/render/components/properties-panel/components/Group.js","../src/render/components/properties-panel/entries/ActionEntry.js","../src/render/components/properties-panel/entries/ColumnsEntry.js","../src/render/components/properties-panel/entries/DescriptionEntry.js","../src/render/components/properties-panel/entries/DefaultValueEntry.js","../src/render/components/properties-panel/entries/DisabledEntry.js","../src/render/components/properties-panel/entries/IdEntry.js","../src/render/components/properties-panel/entries/KeyEntry.js","../src/render/components/properties-panel/entries/LabelEntry.js","../src/render/components/properties-panel/entries/TextEntry.js","../src/render/components/properties-panel/entries/ValueEntry.js","../src/render/components/properties-panel/groups/GeneralGroup.js","../src/render/components/properties-panel/groups/ValidationGroup.js","../src/render/components/properties-panel/groups/ValuesGroup.js","../src/render/components/properties-panel/PropertiesPanel.js","../src/render/components/FormEditor.js","../src/render/Renderer.js","../src/render/index.js","../src/core/index.js","../../../node_modules/diagram-js/lib/features/editor-actions/EditorActions.js","../../../node_modules/diagram-js/lib/features/editor-actions/index.js","../src/features/editor-actions/FormEditorActions.js","../src/features/editor-actions/index.js","../../../node_modules/diagram-js/lib/features/keyboard/KeyboardUtil.js","../../../node_modules/diagram-js/lib/features/keyboard/Keyboard.js","../../../node_modules/diagram-js/lib/features/keyboard/KeyboardBindings.js","../../../node_modules/diagram-js/lib/features/keyboard/index.js","../src/features/keyboard/FormEditorKeyboardBindings.js","../src/features/keyboard/index.js","../src/features/modeling/cmd/Util.js","../src/features/modeling/cmd/AddFormFieldHandler.js","../src/features/modeling/cmd/EditFormFieldHandler.js","../src/features/modeling/cmd/MoveFormFieldHandler.js","../src/features/modeling/cmd/RemoveFormFieldHandler.js","../src/features/modeling/cmd/UpdateIdClaimHandler.js","../src/features/modeling/cmd/UpdateKeyClaimHandler.js","../src/features/modeling/Modeling.js","../../../node_modules/diagram-js/lib/command/CommandInterceptor.js","../src/features/modeling/behavior/IdBehavior.js","../src/features/modeling/behavior/KeyBehavior.js","../src/features/modeling/behavior/index.js","../../../node_modules/diagram-js/lib/command/CommandStack.js","../../../node_modules/diagram-js/lib/command/index.js","../src/features/modeling/index.js","../src/features/selection/Selection.js","../src/features/selection/SelectionBehavior.js","../src/features/selection/index.js","../src/FormEditor.js","../src/index.js"],"sourcesContent":["import {\n isFunction,\n isArray,\n isNumber,\n bind,\n assign\n} from 'min-dash';\n\nvar FN_REF = '__fn';\n\nvar DEFAULT_PRIORITY = 1000;\n\nvar slice = Array.prototype.slice;\n\n/**\n * A general purpose event bus.\n *\n * This component is used to communicate across a diagram instance.\n * Other parts of a diagram can use it to listen to and broadcast events.\n *\n *\n * ## Registering for Events\n *\n * The event bus provides the {@link EventBus#on} and {@link EventBus#once}\n * methods to register for events. {@link EventBus#off} can be used to\n * remove event registrations. Listeners receive an instance of {@link Event}\n * as the first argument. It allows them to hook into the event execution.\n *\n * ```javascript\n *\n * // listen for event\n * eventBus.on('foo', function(event) {\n *\n * // access event type\n * event.type; // 'foo'\n *\n * // stop propagation to other listeners\n * event.stopPropagation();\n *\n * // prevent event default\n * event.preventDefault();\n * });\n *\n * // listen for event with custom payload\n * eventBus.on('bar', function(event, payload) {\n * console.log(payload);\n * });\n *\n * // listen for event returning value\n * eventBus.on('foobar', function(event) {\n *\n * // stop event propagation + prevent default\n * return false;\n *\n * // stop event propagation + return custom result\n * return {\n * complex: 'listening result'\n * };\n * });\n *\n *\n * // listen with custom priority (default=1000, higher is better)\n * eventBus.on('priorityfoo', 1500, function(event) {\n * console.log('invoked first!');\n * });\n *\n *\n * // listen for event and pass the context (`this`)\n * eventBus.on('foobar', function(event) {\n * this.foo();\n * }, this);\n * ```\n *\n *\n * ## Emitting Events\n *\n * Events can be emitted via the event bus using {@link EventBus#fire}.\n *\n * ```javascript\n *\n * // false indicates that the default action\n * // was prevented by listeners\n * if (eventBus.fire('foo') === false) {\n * console.log('default has been prevented!');\n * };\n *\n *\n * // custom args + return value listener\n * eventBus.on('sum', function(event, a, b) {\n * return a + b;\n * });\n *\n * // you can pass custom arguments + retrieve result values.\n * var sum = eventBus.fire('sum', 1, 2);\n * console.log(sum); // 3\n * ```\n */\nexport default function EventBus() {\n this._listeners = {};\n\n // cleanup on destroy on lowest priority to allow\n // message passing until the bitter end\n this.on('diagram.destroy', 1, this._destroy, this);\n}\n\n\n/**\n * Register an event listener for events with the given name.\n *\n * The callback will be invoked with `event, ...additionalArguments`\n * that have been passed to {@link EventBus#fire}.\n *\n * Returning false from a listener will prevent the events default action\n * (if any is specified). To stop an event from being processed further in\n * other listeners execute {@link Event#stopPropagation}.\n *\n * Returning anything but `undefined` from a listener will stop the listener propagation.\n *\n * @param {string|Array<string>} events\n * @param {number} [priority=1000] the priority in which this listener is called, larger is higher\n * @param {Function} callback\n * @param {Object} [that] Pass context (`this`) to the callback\n */\nEventBus.prototype.on = function(events, priority, callback, that) {\n\n events = isArray(events) ? events : [ events ];\n\n if (isFunction(priority)) {\n that = callback;\n callback = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (!isNumber(priority)) {\n throw new Error('priority must be a number');\n }\n\n var actualCallback = callback;\n\n if (that) {\n actualCallback = bind(callback, that);\n\n // make sure we remember and are able to remove\n // bound callbacks via {@link #off} using the original\n // callback\n actualCallback[FN_REF] = callback[FN_REF] || callback;\n }\n\n var self = this;\n\n events.forEach(function(e) {\n self._addListener(e, {\n priority: priority,\n callback: actualCallback,\n next: null\n });\n });\n};\n\n\n/**\n * Register an event listener that is executed only once.\n *\n * @param {string} event the event name to register for\n * @param {number} [priority=1000] the priority in which this listener is called, larger is higher\n * @param {Function} callback the callback to execute\n * @param {Object} [that] Pass context (`this`) to the callback\n */\nEventBus.prototype.once = function(event, priority, callback, that) {\n var self = this;\n\n if (isFunction(priority)) {\n that = callback;\n callback = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (!isNumber(priority)) {\n throw new Error('priority must be a number');\n }\n\n function wrappedCallback() {\n wrappedCallback.__isTomb = true;\n\n var result = callback.apply(that, arguments);\n\n self.off(event, wrappedCallback);\n\n return result;\n }\n\n // make sure we remember and are able to remove\n // bound callbacks via {@link #off} using the original\n // callback\n wrappedCallback[FN_REF] = callback;\n\n this.on(event, priority, wrappedCallback);\n};\n\n\n/**\n * Removes event listeners by event and callback.\n *\n * If no callback is given, all listeners for a given event name are being removed.\n *\n * @param {string|Array<string>} events\n * @param {Function} [callback]\n */\nEventBus.prototype.off = function(events, callback) {\n\n events = isArray(events) ? events : [ events ];\n\n var self = this;\n\n events.forEach(function(event) {\n self._removeListener(event, callback);\n });\n\n};\n\n\n/**\n * Create an EventBus event.\n *\n * @param {Object} data\n *\n * @return {Object} event, recognized by the eventBus\n */\nEventBus.prototype.createEvent = function(data) {\n var event = new InternalEvent();\n\n event.init(data);\n\n return event;\n};\n\n\n/**\n * Fires a named event.\n *\n * @example\n *\n * // fire event by name\n * events.fire('foo');\n *\n * // fire event object with nested type\n * var event = { type: 'foo' };\n * events.fire(event);\n *\n * // fire event with explicit type\n * var event = { x: 10, y: 20 };\n * events.fire('element.moved', event);\n *\n * // pass additional arguments to the event\n * events.on('foo', function(event, bar) {\n * alert(bar);\n * });\n *\n * events.fire({ type: 'foo' }, 'I am bar!');\n *\n * @param {string} [name] the optional event name\n * @param {Object} [event] the event object\n * @param {...Object} additional arguments to be passed to the callback functions\n *\n * @return {boolean} the events return value, if specified or false if the\n * default action was prevented by listeners\n */\nEventBus.prototype.fire = function(type, data) {\n var event,\n firstListener,\n returnValue,\n args;\n\n args = slice.call(arguments);\n\n if (typeof type === 'object') {\n data = type;\n type = data.type;\n }\n\n if (!type) {\n throw new Error('no event type specified');\n }\n\n firstListener = this._listeners[type];\n\n if (!firstListener) {\n return;\n }\n\n // we make sure we fire instances of our home made\n // events here. We wrap them only once, though\n if (data instanceof InternalEvent) {\n\n // we are fine, we alread have an event\n event = data;\n } else {\n event = this.createEvent(data);\n }\n\n // ensure we pass the event as the first parameter\n args[0] = event;\n\n // original event type (in case we delegate)\n var originalType = event.type;\n\n // update event type before delegation\n if (type !== originalType) {\n event.type = type;\n }\n\n try {\n returnValue = this._invokeListeners(event, args, firstListener);\n } finally {\n\n // reset event type after delegation\n if (type !== originalType) {\n event.type = originalType;\n }\n }\n\n // set the return value to false if the event default\n // got prevented and no other return value exists\n if (returnValue === undefined && event.defaultPrevented) {\n returnValue = false;\n }\n\n return returnValue;\n};\n\n\nEventBus.prototype.handleError = function(error) {\n return this.fire('error', { error: error }) === false;\n};\n\n\nEventBus.prototype._destroy = function() {\n this._listeners = {};\n};\n\nEventBus.prototype._invokeListeners = function(event, args, listener) {\n\n var returnValue;\n\n while (listener) {\n\n // handle stopped propagation\n if (event.cancelBubble) {\n break;\n }\n\n returnValue = this._invokeListener(event, args, listener);\n\n listener = listener.next;\n }\n\n return returnValue;\n};\n\nEventBus.prototype._invokeListener = function(event, args, listener) {\n\n var returnValue;\n\n if (listener.callback.__isTomb) {\n return returnValue;\n }\n\n try {\n\n // returning false prevents the default action\n returnValue = invokeFunction(listener.callback, args);\n\n // stop propagation on return value\n if (returnValue !== undefined) {\n event.returnValue = returnValue;\n event.stopPropagation();\n }\n\n // prevent default on return false\n if (returnValue === false) {\n event.preventDefault();\n }\n } catch (error) {\n if (!this.handleError(error)) {\n console.error('unhandled error in event listener', error);\n\n throw error;\n }\n }\n\n return returnValue;\n};\n\n/*\n * Add new listener with a certain priority to the list\n * of listeners (for the given event).\n *\n * The semantics of listener registration / listener execution are\n * first register, first serve: New listeners will always be inserted\n * after existing listeners with the same priority.\n *\n * Example: Inserting two listeners with priority 1000 and 1300\n *\n * * before: [ 1500, 1500, 1000, 1000 ]\n * * after: [ 1500, 1500, (new=1300), 1000, 1000, (new=1000) ]\n *\n * @param {string} event\n * @param {Object} listener { priority, callback }\n */\nEventBus.prototype._addListener = function(event, newListener) {\n\n var listener = this._getListeners(event),\n previousListener;\n\n // no prior listeners\n if (!listener) {\n this._setListeners(event, newListener);\n\n return;\n }\n\n // ensure we order listeners by priority from\n // 0 (high) to n > 0 (low)\n while (listener) {\n\n if (listener.priority < newListener.priority) {\n\n newListener.next = listener;\n\n if (previousListener) {\n previousListener.next = newListener;\n } else {\n this._setListeners(event, newListener);\n }\n\n return;\n }\n\n previousListener = listener;\n listener = listener.next;\n }\n\n // add new listener to back\n previousListener.next = newListener;\n};\n\n\nEventBus.prototype._getListeners = function(name) {\n return this._listeners[name];\n};\n\nEventBus.prototype._setListeners = function(name, listener) {\n this._listeners[name] = listener;\n};\n\nEventBus.prototype._removeListener = function(event, callback) {\n\n var listener = this._getListeners(event),\n nextListener,\n previousListener,\n listenerCallback;\n\n if (!callback) {\n\n // clear listeners\n this._setListeners(event, null);\n\n return;\n }\n\n while (listener) {\n\n nextListener = listener.next;\n\n listenerCallback = listener.callback;\n\n if (listenerCallback === callback || listenerCallback[FN_REF] === callback) {\n if (previousListener) {\n previousListener.next = nextListener;\n } else {\n\n // new first listener\n this._setListeners(event, nextListener);\n }\n }\n\n previousListener = listener;\n listener = nextListener;\n }\n};\n\n/**\n * A event that is emitted via the event bus.\n */\nfunction InternalEvent() { }\n\nInternalEvent.prototype.stopPropagation = function() {\n this.cancelBubble = true;\n};\n\nInternalEvent.prototype.preventDefault = function() {\n this.defaultPrevented = true;\n};\n\nInternalEvent.prototype.init = function(data) {\n assign(this, data || {});\n};\n\n\n/**\n * Invoke function. Be fast...\n *\n * @param {Function} fn\n * @param {Array<Object>} args\n *\n * @return {Any}\n */\nfunction invokeFunction(fn, args) {\n return fn.apply(null, args);\n}\n","import { debounce } from 'min-dash';\n\n/**\n * A factory to create a configurable debouncer.\n *\n * @param {number|boolean} [config=true]\n */\nexport default function DebounceFactory(config=true) {\n\n const timeout = typeof config === 'number' ? config : config ? 300 : 0;\n\n if (timeout) {\n return fn => debounce(fn, timeout);\n } else {\n return fn => fn;\n }\n}\n\nDebounceFactory.$inject = [ 'config.debounce' ];","export default class FieldFactory {\n\n /**\n * @constructor\n *\n * @param { import('./FormFieldRegistry').default } formFieldRegistry\n * @param { import('@bpmn-io/form-js-viewer').FormFields } formFields\n */\n constructor(formFieldRegistry, formFields) {\n this._formFieldRegistry = formFieldRegistry;\n this._formFields = formFields;\n }\n\n create(attrs, applyDefaults = true) {\n\n const {\n id,\n key,\n type\n } = attrs;\n\n const fieldDefinition = this._formFields.get(type);\n\n if (!fieldDefinition) {\n throw new Error(`form field of type <${ type }> not supported`);\n }\n\n if (id && this._formFieldRegistry._ids.assigned(id)) {\n throw new Error(`ID <${ id }> already assigned`);\n }\n\n if (key && this._formFieldRegistry._keys.assigned(key)) {\n throw new Error(`key <${ key }> already assigned`);\n }\n\n const labelAttrs = applyDefaults && fieldDefinition.label ? {\n label: fieldDefinition.label\n } : {};\n\n const field = fieldDefinition.create({\n ...labelAttrs,\n ...attrs\n });\n\n this._ensureId(field);\n\n if (fieldDefinition.keyed) {\n this._ensureKey(field, applyDefaults);\n }\n\n return field;\n }\n\n _ensureId(field) {\n\n if (field.id) {\n this._formFieldRegistry._ids.claim(field.id, field);\n\n return;\n }\n\n let prefix = 'Field';\n\n if (field.type === 'default') {\n prefix = 'Form';\n }\n\n field.id = this._formFieldRegistry._ids.nextPrefixed(`${prefix}_`, field);\n }\n\n _ensureKey(field, applyDefaults) {\n\n if (field.key) {\n this._formFieldRegistry._keys.claim(field.key, field);\n\n return;\n }\n\n if (applyDefaults) {\n let prefix = 'field';\n\n field.key = this._formFieldRegistry._keys.nextPrefixed(`${prefix}_`, field);\n }\n }\n}\n\n\nFieldFactory.$inject = [\n 'formFieldRegistry',\n 'formFields'\n];","import {\n FormFieldRegistry as BaseFieldRegistry\n} from '@bpmn-io/form-js-viewer';\n\n\nexport default class FormFieldRegistry extends BaseFieldRegistry {\n\n /**\n * Updates a form fields id.\n *\n * @param {Object} formField\n * @param {string} newId\n */\n updateId(formField, newId) {\n\n this._validateId(newId);\n\n this._eventBus.fire('formField.updateId', {\n formField,\n newId: newId\n });\n\n this.remove(formField);\n\n formField.id = newId;\n\n this.add(formField);\n\n // TODO(nikku): make this a proper object graph so we\n // do not have to deal with IDs this way...\n if ('components' in formField) {\n for (const component of formField.components) {\n component._parent = newId;\n }\n }\n\n }\n\n\n /**\n * Validate the suitability of the given id and signals a problem\n * with an exception.\n *\n * @param {string} id\n *\n * @throws {Error} if id is empty or already assigned\n */\n _validateId(id) {\n if (!id) {\n throw new Error('formField must have an id');\n }\n\n if (this.get(id)) {\n throw new Error('formField with id ' + id + ' already added');\n }\n }\n\n}","import { clone } from '@bpmn-io/form-js-viewer';\n\n\nexport default class Importer {\n\n /**\n * @constructor\n * @param { import('../core/FormFieldRegistry').default } formFieldRegistry\n * @param { import('../core/FieldFactory').default } fieldFactory\n */\n constructor(formFieldRegistry, fieldFactory) {\n this._formFieldRegistry = formFieldRegistry;\n this._fieldFactory = fieldFactory;\n }\n\n /**\n * Import schema creating fields, attaching additional\n * information to each field and adding fields to the\n * field registry.\n *\n * Additional information attached:\n *\n * * `id` (unless present)\n * * `_parent`\n * * `_path`\n *\n * @param {any} schema\n *\n * @typedef {{ warnings: Error[], schema: any }} ImportResult\n * @returns {ImportResult}\n */\n importSchema(schema) {\n\n // TODO: Add warnings\n const warnings = [];\n\n try {\n const importedSchema = this.importFormField(clone(schema));\n\n return {\n schema: importedSchema,\n warnings\n };\n } catch (err) {\n err.warnings = warnings;\n\n throw err;\n }\n }\n\n /**\n * @param {{[x: string]: any}} fieldAttrs\n * @param {String} [parentId]\n * @param {number} [index]\n *\n * @return {any} field\n */\n importFormField(fieldAttrs, parentId, index) {\n const {\n components,\n id,\n key\n } = fieldAttrs;\n\n let parent, path;\n\n if (parentId) {\n parent = this._formFieldRegistry.get(parentId);\n }\n\n // validate <id> uniqueness\n if (id && this._formFieldRegistry._ids.assigned(id)) {\n throw new Error(`form field with id <${ id }> already exists`);\n }\n\n // validate <key> uniqueness\n if (key && this._formFieldRegistry._keys.assigned(key)) {\n throw new Error(`form field with key <${ key }> already exists`);\n }\n\n // set form field path\n path = parent ? [ ...parent._path, 'components', index ] : [];\n\n const field = this._fieldFactory.create({\n ...fieldAttrs,\n _path: path,\n _parent: parent && parent.id\n }, false);\n\n this._formFieldRegistry.add(field);\n\n if (components) {\n field.components = this.importFormFields(components, field.id);\n }\n\n return field;\n }\n\n /**\n * @param {Array<any>} components\n * @param {string} parentId\n *\n * @return {Array<any>} imported components\n */\n importFormFields(components, parentId) {\n return components.map((component, index) => {\n return this.importFormField(component, parentId, index);\n });\n }\n\n}\n\nImporter.$inject = [ 'formFieldRegistry', 'fieldFactory' ];","import Importer from './Importer';\n\nexport default {\n importer: [ 'type', Importer ]\n};","import { createContext } from 'preact';\n\nconst DragAndDropContext = createContext({\n drake: null\n});\n\nexport default DragAndDropContext;","import { createContext } from 'preact';\n\n/**\n * @param {string} type\n * @param {boolean} [strict]\n *\n * @returns {any}\n */\nfunction getService(type, strict) {}\n\nconst FormEditorContext = createContext({\n getService\n});\n\nexport default FormEditorContext;","import {\n useContext\n} from 'preact/hooks';\n\nimport { FormEditorContext } from '../context';\n\n\nexport default function(type, strict) {\n const {\n getService\n } = useContext(FormEditorContext);\n\n return getService(type, strict);\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M45 17a3 3 0 013 3v14a3 3 0 01-3 3H9a3 3 0 01-3-3V20a3 3 0 013-3h36zm-9 8.889H18v2.222h18V25.89z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34 18H20a2 2 0 00-2 2v14a2 2 0 002 2h14a2 2 0 002-2V20a2 2 0 00-2-2zm-9 14l-5-5 1.41-1.41L25 29.17l7.59-7.59L34 23l-9 9z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"15\",\n y: \"17\",\n width: \"24\",\n height: \"4\",\n rx: \"1\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"15\",\n y: \"25\",\n width: \"24\",\n height: \"4\",\n rx: \"1\"\n}), /*#__PURE__*/React.createElement(\"rect\", {\n x: \"15\",\n y: \"33\",\n width: \"13\",\n height: \"4\",\n rx: \"1\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M8 33v5a1 1 0 001 1h4v2H9a3 3 0 01-3-3v-5h2zm18 6v2H15v-2h11zm13 0v2H28v-2h11zm9-6v5a3 3 0 01-3 3h-4v-2h4a1 1 0 00.993-.883L46 38v-5h2zM8 22v9H6v-9h2zm40 0v9h-2v-9h2zm-35-9v2H9a1 1 0 00-.993.883L8 16v4H6v-4a3 3 0 013-3h4zm32 0a3 3 0 013 3v4h-2v-4a1 1 0 00-.883-.993L45 15h-4v-2h4zm-6 0v2H28v-2h11zm-13 0v2H15v-2h11z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1zM35 28.444h7l-3.5 4-3.5-4zM35 26h7l-3.5-4-3.5 4z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M27 22c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zm0-5c-5.52 0-10 4.48-10 10s4.48 10 10 10 10-4.48 10-10-4.48-10-10-10zm0 18c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1zm-12 7h9l-4.5 6-4.5-6z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.58 33.77h-3l-1.18-3.08H11l-1.1 3.08H7l5.27-13.54h2.89zm-5-5.36l-1.86-5-1.83 5zM22 20.23h5.41a15.47 15.47 0 012.4.14 3.42 3.42 0 011.41.55 3.47 3.47 0 011 1.14 3 3 0 01.42 1.58 3.26 3.26 0 01-1.91 2.94 3.63 3.63 0 011.91 1.22 3.28 3.28 0 01.66 2 4 4 0 01-.43 1.8 3.63 3.63 0 01-1.09 1.4 3.89 3.89 0 01-1.83.65q-.69.07-3.3.09H22zm2.73 2.25v3.13h3.8a1.79 1.79 0 001.1-.49 1.41 1.41 0 00.41-1 1.49 1.49 0 00-.35-1 1.54 1.54 0 00-1-.48c-.27 0-1.05-.05-2.34-.05zm0 5.39v3.62h2.57a11.52 11.52 0 001.88-.09 1.65 1.65 0 001-.54 1.6 1.6 0 00.38-1.14 1.75 1.75 0 00-.29-1 1.69 1.69 0 00-.86-.62 9.28 9.28 0 00-2.41-.23zM44.35 28.79l2.65.84a5.94 5.94 0 01-2 3.29A5.74 5.74 0 0141.38 34a5.87 5.87 0 01-4.44-1.84 7.09 7.09 0 01-1.73-5A7.43 7.43 0 0137 21.87 6 6 0 0141.54 20a5.64 5.64 0 014 1.47A5.33 5.33 0 0147 24l-2.7.65a2.8 2.8 0 00-2.86-2.27A3.09 3.09 0 0039 23.42a5.31 5.31 0 00-.93 3.5 5.62 5.62 0 00.93 3.65 3 3 0 002.4 1.09 2.72 2.72 0 001.82-.66 4 4 0 001.13-2.21z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"54\",\n height: \"54\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M45 16a3 3 0 013 3v16a3 3 0 01-3 3H9a3 3 0 01-3-3V19a3 3 0 013-3h36zm0 2H9a1 1 0 00-1 1v16a1 1 0 001 1h36a1 1 0 001-1V19a1 1 0 00-1-1zm-32 4v10h-2V22h2z\"\n})));","import ButtonIcon from './Button.svg';\nimport CheckboxIcon from './Checkbox.svg';\nimport FormIcon from './Form.svg';\nimport ColumnsIcon from './Group.svg';\nimport NumberIcon from './Number.svg';\nimport RadioIcon from './Radio.svg';\nimport SelectIcon from './Select.svg';\nimport TextIcon from './Text.svg';\nimport TextfieldIcon from './Textfield.svg';\n\nexport const iconsByType = {\n button: ButtonIcon,\n checkbox: CheckboxIcon,\n columns: ColumnsIcon,\n number: NumberIcon,\n radio: RadioIcon,\n select: SelectIcon,\n text: TextIcon,\n textfield: TextfieldIcon,\n default: FormIcon\n};","import { iconsByType } from './icons';\n\nconst types = [\n {\n label: 'Text Field',\n type: 'textfield'\n },\n {\n label: 'Number',\n type: 'number'\n },\n {\n label: 'Checkbox',\n type: 'checkbox'\n },\n {\n label: 'Radio',\n type: 'radio'\n },\n {\n label: 'Select',\n type: 'select'\n },\n {\n label: 'Text',\n type: 'text'\n },\n {\n label: 'Button',\n type: 'button'\n }\n];\n\n\nexport default function Palette(props) {\n return <div class=\"fjs-palette\">\n <div class=\"fjs-palette-header\" title=\"Form elements library\">\n <span class=\"fjs-hide-compact\">FORM ELEMENTS </span>LIBRARY\n </div>\n <div class=\"fjs-palette-fields fjs-drag-container fjs-no-drop\">\n {\n types.map(({ label, type }) => {\n const Icon = iconsByType[ type ];\n\n return (\n <div\n class=\"fjs-palette-field fjs-drag-copy fjs-no-drop\"\n data-field-type={ type }\n title={ `Create a ${ label } element` }\n >\n {\n Icon ? <Icon class=\"fjs-palette-field-icon\" width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" /> : null\n }\n <span class=\"fjs-palette-field-text fjs-hide-compact\">{ label }</span>\n </div>\n );\n })\n }\n </div>\n </div>;\n}","export function arrayAdd(array, index, item) {\n const copy = [ ...array ];\n\n copy.splice(index, 0, item);\n\n return copy;\n}\n\nexport function arrayRemove(array, index) {\n const copy = [ ...array ];\n\n copy.splice(index, 1);\n\n return copy;\n}\n\nexport function prefixId(id) {\n return `fjs-properties-panel-${ id }`;\n}\n\nexport function stopPropagation(listener) {\n return (event) => {\n event.stopPropagation();\n\n listener(event);\n };\n}\n\nexport function textToLabel(text = '...') {\n if (text.length > 10) {\n return `${ text.substring(0, 30) }...`;\n }\n\n return text;\n}\n\nexport const INPUTS = [\n 'checkbox',\n 'number',\n 'radio',\n 'select',\n 'textfield'\n];","import { prefixId } from '../Util';\n\nexport default function CheckboxInput(props) {\n const {\n id,\n label,\n onChange,\n value = false\n } = props;\n\n const handleChange = ({ target }) => {\n onChange(target.checked);\n };\n\n return (\n <div class=\"fjs-properties-panel-checkbox\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(id) }\n type=\"checkbox\"\n class=\"fjs-properties-panel-input\"\n onChange={ handleChange }\n checked={ value } />\n </div>\n );\n}","import {\n useEffect,\n useRef\n} from 'preact/hooks';\n\n\nexport default function usePrevious(value) {\n const ref = useRef();\n\n useEffect(() => ref.current = value);\n\n return ref.current;\n}","import {\n useMemo,\n useEffect\n} from 'preact/hooks';\n\nimport useService from './useService';\n\n\nexport default function useDebounce(fn, dependencies=[]) {\n\n const debounce = useService('debounce');\n\n const callback = useMemo(() => {\n return debounce(fn);\n }, dependencies);\n\n // cleanup async side-effect if callback #flush is provided.\n useEffect(() => {\n return () => {\n (typeof callback.flush === 'function') && callback.flush();\n };\n }, [ callback ]);\n\n return callback;\n}","import { prefixId } from '../Util';\n\nimport {\n useDebounce\n} from '../../../hooks';\n\nexport default function NumberInput(props) {\n\n const {\n id,\n label,\n max,\n min,\n value = '',\n onInput: _onInput\n } = props;\n\n const onInput = useDebounce(event => {\n\n const {\n validity,\n value\n } = event.target;\n\n if (validity.valid) {\n _onInput(value ? parseInt(value, 10) : undefined);\n }\n }, [ _onInput ]);\n\n return (\n <div class=\"fjs-properties-panel-number\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(id) }\n type=\"number\"\n class=\"fjs-properties-panel-input\"\n max={ max }\n min={ min }\n onInput={ onInput }\n value={ value } />\n </div>\n );\n}","import { prefixId } from '../Util';\n\nexport default function Select(props) {\n const {\n id,\n label,\n onChange,\n options,\n value\n } = props;\n\n const handleChange = ({ target }) => {\n onChange(target.value);\n };\n\n return (\n <div class=\"fjs-properties-panel-select\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <select id={ prefixId(id) } class=\"fjs-properties-panel-input\" onInput={ handleChange }>\n {\n options.map((option) => {\n return (\n <option\n value={ option.value }\n selected={ option.value === value }>\n { option.label }\n </option>\n );\n })\n }\n </select>\n </div>\n );\n}","import { prefixId } from '../Util';\n\nimport {\n useDebounce\n} from '../../../hooks';\n\n\nexport default function Textarea(props) {\n\n const {\n id,\n label,\n rows = 10,\n value = '',\n onInput: _onInput\n } = props;\n\n const onInput = useDebounce(event => {\n const value = event.target.value;\n\n _onInput(value.length ? value : undefined);\n }, [ _onInput ]);\n\n return (\n <div class=\"fjs-properties-panel-textarea\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <textarea\n id={ prefixId(id) }\n spellcheck={ false }\n class=\"fjs-properties-panel-input\"\n onInput={ onInput }\n rows={ rows }\n value={ value } />\n </div>\n );\n}","import {\n useEffect,\n useState\n} from 'preact/hooks';\n\nimport { prefixId } from '../Util';\n\nimport {\n usePrevious,\n useDebounce\n} from '../../../hooks';\n\n\nexport default function TextInput(props) {\n\n let {\n id,\n label,\n validate = () => null,\n onInput: _onInput,\n value = ''\n } = props;\n\n const prevValue = usePrevious(value);\n\n const [ cachedValue, setCachedValue ] = useState(null);\n\n const [ error, setError ] = useState(null);\n\n useEffect(() => setError(validate(value)), [ value ]);\n\n const onInput = useDebounce(event => {\n\n const value = event.target.value;\n\n const error = validate(value);\n\n if (error) {\n setCachedValue(value);\n } else {\n _onInput(value.length ? value : undefined);\n }\n\n setError(error);\n }, [ validate, setCachedValue, _onInput ]);\n\n\n if (prevValue === value && error) {\n value = cachedValue;\n }\n\n const classes = [ 'fjs-properties-panel-input' ];\n\n if (error) {\n classes.push('fjs-has-error');\n }\n\n return (\n <div class=\"fjs-properties-panel-text\">\n <label for={ prefixId(id) } class=\"fjs-properties-panel-label\">{ label }</label>\n <input\n id={ prefixId(id) }\n type=\"text\"\n spellcheck={ false }\n class={ classes.join(' ') }\n onInput={ onInput }\n value={ value } />\n {\n error && <div class=\"fjs-properties-panel-error\">{ error }</div>\n }\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport CheckboxInput from './CheckboxInput';\n\nexport default function CheckboxInputEntry(props) {\n const {\n editField,\n field,\n id,\n label,\n path\n } = props;\n\n const onChange = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n props.onChange(value);\n }\n };\n\n const value = path ? get(field, path, false) : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <CheckboxInput id={ id } label={ label } onChange={ onChange } value={ value } />\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport NumberInput from './NumberInput';\n\nexport default function NumberInputEntry(props) {\n const {\n editField,\n field,\n id,\n label,\n max,\n min,\n onChange,\n path\n } = props;\n\n const onInput = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n onChange(value);\n }\n };\n\n const value = path ? get(field, path, '') : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <NumberInput\n id={ id }\n label={ label }\n max={ max }\n min={ min }\n onInput={ onInput }\n value={ value } />\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport Select from './Select';\n\nexport default function SelectEntry(props) {\n const {\n editField,\n field,\n id,\n description,\n label,\n options,\n path\n } = props;\n\n const onChange = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n props.onChange(value);\n }\n };\n\n const value = path ? get(field, path, '') : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <Select id={ id } label={ label } onChange={ onChange } options={ options } value={ value } />\n { description && <div class=\"fjs-properties-panel-description\">{ description }</div> }\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport Textarea from './Textarea';\n\nexport default function TextareaEntry(props) {\n const {\n editField,\n field,\n id,\n description,\n label,\n onChange,\n path\n } = props;\n\n const onInput = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n onChange(value);\n }\n };\n\n const value = path ? get(field, path, '') : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <Textarea id={ id } label={ label } onInput={ onInput } value={ value } />\n { description && <div class=\"fjs-properties-panel-description\">{ description }</div> }\n </div>\n );\n}","import { get } from 'min-dash';\n\nimport TextInput from './TextInput';\n\nexport default function TextInputEntry(props) {\n const {\n editField,\n field,\n id,\n description,\n label,\n onChange,\n path,\n validate\n } = props;\n\n const onInput = (value) => {\n if (editField && path) {\n editField(field, path, value);\n } else {\n onChange(value);\n }\n };\n\n const value = path ? get(field, path, '') : props.value;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <TextInput id={ id } label={ label } onInput={ onInput } validate={ validate } value={ value } />\n { description && <div class=\"fjs-properties-panel-description\">{ description }</div> }\n </div>\n );\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"12\",\n height: \"12\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M7 0v5h5v2H7v5H5V7H0V5h5V0h2z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"7\",\n height: \"9\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M6.25 4.421L4.836 5.835h-.001L2.007 8.663.593 7.249 3.421 4.42.593 1.593 2.007.178 6.25 4.421z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"11\",\n height: \"14\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10 4v8c0 1.1-.9 2-2 2H3c-1.1 0-2-.9-2-2V4h9zM8 6H3v4.8c0 .66.5 1.2 1.111 1.2H6.89C7.5 12 8 11.46 8 10.8V6zm3-5H8.5l-1-1h-4l-1 1H0v1.5h11V1z\"\n})));","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport React from \"react\";\nexport default (({\n styles = {},\n ...props\n}) => /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: \"8\",\n height: \"12\"\n}, props), /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n d: \"M2.007 11.66L.593 10.248l4.242-4.243L.593 1.761 2.007.347l5.657 5.657-5.657 5.657z\"\n})));","import { useState } from 'preact/hooks';\n\nimport { stopPropagation } from '../Util';\n\nimport {\n ListArrowIcon,\n ListDeleteIcon,\n} from '../icons';\n\nexport default function CollapsibleEntry(props) {\n const {\n children,\n label,\n removeEntry = () => {}\n } = props;\n\n const [ collapsed, setCollapsed ] = useState(false);\n\n const toggleCollapsed = () => setCollapsed(!collapsed);\n\n const classes = [ 'fjs-properties-panel-collapsible-entry' ];\n\n if (collapsed) {\n classes.push('fjs-properties-panel-collapsible-entry-collapsed');\n }\n\n return (\n <div class={ classes.join(' ') }>\n <div class=\"fjs-properties-panel-collapsible-entry-header\" onClick={ toggleCollapsed }>\n <div>\n <ListArrowIcon class={ collapsed ? 'fjs-arrow-right' : 'fjs-arrow-down' } />\n <span class=\"fjs-properties-panel-collapsible-entry-header-label\">\n { label }\n </span>\n </div>\n <button\n class=\"fjs-properties-panel-collapsible-entry-header-remove-entry\"\n onClick={ stopPropagation(removeEntry) }>\n <ListDeleteIcon />\n </button>\n </div>\n {\n collapsed\n ? null\n : (\n <div class=\"fjs-properties-panel-collapsible-entry-entries\">\n {\n children\n }\n </div>\n )\n }\n </div>\n );\n}","import { useState } from 'preact/hooks';\n\nimport {\n CreateIcon,\n SectionArrowIcon\n} from '../icons';\n\nexport default function Group(props) {\n const {\n children,\n hasEntries = true,\n label\n } = props;\n\n const [ open, setOpen ] = useState(hasEntries);\n\n const toggleOpen = () => setOpen(!open);\n\n const addEntry = (event) => {\n event.stopPropagation();\n\n setOpen(true);\n\n props.addEntry();\n };\n\n return <div class=\"fjs-properties-panel-group\">\n <div class=\"fjs-properties-panel-group-header\" onClick={ hasEntries ? toggleOpen : () => {} }>\n <span class=\"fjs-properties-panel-group-header-label\">\n { label }\n </span>\n <div class=\"fjs-properties-panel-group-header-buttons\">\n {\n props.addEntry\n ? (\n <button\n class=\"fjs-properties-panel-group-header-button fjs-properties-panel-group-header-button-add-entry\"\n onClick={ addEntry }>\n <CreateIcon />\n </button>\n )\n : null\n }\n <button class=\"fjs-properties-panel-group-header-button fjs-properties-panel-group-header-button-toggle-open\">\n <SectionArrowIcon class={ hasEntries && open ? 'fjs-arrow-down' : 'fjs-arrow-right' } />\n </button>\n </div>\n </div>\n {\n hasEntries && open\n ? (\n <div class=\"fjs-properties-panel-group-entries\">\n {\n children\n }\n </div>\n )\n : null\n }\n </div>;\n}","import { SelectEntry } from '../components';\n\nexport default function ActionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const options = [\n {\n label: 'Submit',\n value: 'submit'\n },\n {\n label: 'Reset',\n value: 'reset'\n }\n ];\n\n return (\n <SelectEntry\n editField={ editField }\n field={ field }\n id=\"action\"\n label=\"Action\"\n options={ options }\n path={ [ 'action' ] } />\n );\n}","import { Default } from '@bpmn-io/form-js-viewer';\n\nimport { NumberInputEntry } from '../components';\n\nexport default function ColumnsEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const onInput = (value) => {\n let components = field.components.slice();\n\n if (value > components.length) {\n while (value > components.length) {\n components.push(Default.create({ _parent: field.id }));\n }\n } else {\n components = components.slice(0, value);\n }\n\n editField(field, 'components', components);\n };\n\n const value = field.components.length;\n\n return (\n <div class=\"fjs-properties-panel-entry\">\n <NumberInputEntry\n id=\"columns\"\n label=\"Columns\"\n onInput={ onInput }\n value={ value }\n min=\"1\"\n max=\"3\" />\n </div>\n );\n}","import { TextInputEntry } from '../components';\n\nexport default function DescriptionEntry(props) {\n const {\n editField,\n field\n } = props;\n\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"description\"\n label=\"Field Description\"\n path={ [ 'description' ] } />\n );\n}","import {\n NumberInputEntry,\n SelectEntry,\n TextInputEntry\n} from '../components';\n\nexport default function DefaultValueEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const {\n defaultValue,\n type,\n values = []\n } = field;\n\n if (type === 'checkbox') {\n const options = [\n {\n label: 'Checked',\n value: 'true'\n },\n {\n label: 'Not checked',\n value: 'false'\n }\n ];\n\n const onChange = (value) => {\n editField(field, [ 'defaultValue' ], parseStringToBoolean(value));\n };\n\n return (\n <SelectEntry\n id=\"defaultValue\"\n label=\"Default Value\"\n onChange={ onChange }\n options={ options }\n value={ parseBooleanToString(defaultValue) } />\n );\n }\n\n if (type === 'number') {\n return (\n <NumberInputEntry\n editField={ editField }\n field={ field }\n id=\"defaultValue\"\n label=\"Default Value\"\n path={ [ 'defaultValue' ] } />\n );\n }\n\n if (type === 'radio' || type === 'select') {\n const options = [\n {\n label: '<none>'\n },\n ...values\n ];\n\n const onChange = (value) => {\n editField(field, [ 'defaultValue' ], value.length ? value : undefined);\n };\n\n return (\n <SelectEntry\n id=\"defaultValue\"\n label=\"Default Value\"\n onChange={ onChange }\n options={ options }\n value={ defaultValue } />\n );\n }\n\n if (type === 'textfield') {\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"defaultValue\"\n label=\"Default Value\"\n path={ [ 'defaultValue' ] } />\n );\n }\n}\n\nfunction parseStringToBoolean(value) {\n if (value === 'true') {\n return true;\n }\n\n return false;\n}\n\nfunction parseBooleanToString(value) {\n if (value === true) {\n return 'true';\n }\n\n return 'false';\n}","import { CheckboxInputEntry } from '../components';\n\nexport default function DisabledEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const onChange = (value) => {\n editField(field, 'disabled', value);\n };\n\n return <CheckboxInputEntry\n id=\"disabled\"\n field={ field }\n label=\"Disabled\"\n path={ [ 'disabled' ] }\n onChange={ onChange } />;\n}","import { isUndefined } from 'min-dash';\n\nimport useService from '../../../hooks/useService';\n\nimport { TextInputEntry } from '../components';\n\nexport default function IdEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const formFieldRegistry = useService('formFieldRegistry');\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\n return 'Must not be empty.';\n }\n\n const assigned = formFieldRegistry._ids.assigned(value);\n\n if (assigned && assigned !== field) {\n return 'Must be unique.';\n }\n\n return validateId(value) || null;\n };\n\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"id\"\n label=\"Id\"\n path={ [ 'id' ] }\n validate={ validate } />\n );\n}\n\n// id structural validation /////////////\n\nconst SPACE_REGEX = /\\s/;\n\n// for QName validation as per http://www.w3.org/TR/REC-xml/#NT-NameChar\nconst QNAME_REGEX = /^([a-z][\\w-.]*:)?[a-z_][\\w-.]*$/i;\n\n// for ID validation as per BPMN Schema (QName - Namespace)\nconst ID_REGEX = /^[a-z_][\\w-.]*$/i;\n\nfunction validateId(idValue) {\n\n if (containsSpace(idValue)) {\n return 'Must not contain spaces.';\n }\n\n if (!ID_REGEX.test(idValue)) {\n\n if (QNAME_REGEX.test(idValue)) {\n return 'Must not contain prefix.';\n }\n\n return 'Must be a valid QName.';\n }\n}\n\nfunction containsSpace(value) {\n return SPACE_REGEX.test(value);\n}","import { isUndefined } from 'min-dash';\n\nimport useService from '../../../hooks/useService';\n\nimport { TextInputEntry } from '../components';\n\nexport default function KeyEntry(props) {\n const {\n editField,\n field\n } = props;\n\n const formFieldRegistry = useService('formFieldRegistry');\n\n const validate = (value) => {\n if (isUndefined(value) || !value.length) {\n return 'Must not be empty.';\n }\n\n if (/\\s/.test(value)) {\n return 'Must not contain spaces.';\n }\n\n const assigned = formFieldRegistry._keys.assigned(value);\n\n if (assigned && assigned !== field) {\n return 'Must be unique.';\n }\n\n return null;\n };\n\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"key\"\n label=\"Key\"\n description=\"Maps to a process variable.\"\n path={ [ 'key' ] }\n validate={ validate } />\n );\n}","import { TextInputEntry } from '../components';\n\nexport default function LabelEntry(props) {\n const {\n editField,\n field\n } = props;\n\n return (\n <TextInputEntry\n editField={ editField }\n field={ field }\n id=\"label\"\n label=\"Field Label\"\n path={ [ 'label' ] } />\n );\n}","import { TextareaEntry } from '../components';\n\nexport default function TextEntry(props) {\n const {\n editField,\n field\n } = props;\n\n return (\n <TextareaEntry\n editField={ editField }\n field={ field }\n id=\"text\"\n label=\"Text\"\n path={ [ 'text' ] }\n description=\"Use Markdown or basic HTML to format.\" />\n );\n}","import {\n get,\n set\n} from 'min-dash';\n\nimport { TextInputEntry } from '../components';\n\nexport default function ValueEntry(props) {\n const {\n editField,\n field,\n index\n } = props;\n\n const onChange = (key) => {\n const values = get(field, [ 'values' ]);\n\n return (value) => {\n editField(field, 'values', set(values, [ index, key ], value));\n };\n };\n\n return <>\n <TextInputEntry\n id={ `value-label-${ index }` }\n label=\"Label\"\n onChange={ onChange('label') }\n value={ get(field, [ 'values', index, 'label' ]) } />\n <TextInputEntry\n id={ `value-value-${ index }` }\n label=\"Value\"\n onChange={ onChange('value') }\n value={ get(field, [ 'values', index, 'value' ]) } />\n </>;\n}","import { Group } from '../components';\n\nimport {\n ActionEntry,\n ColumnsEntry,\n DescriptionEntry,\n DefaultValueEntry,\n DisabledEntry,\n IdEntry,\n KeyEntry,\n LabelEntry,\n TextEntry\n} from '../entries';\n\nimport { INPUTS } from '../Util';\n\nexport default function GeneralGroup(field, editField) {\n const { type } = field;\n\n const entries = [];\n if (type === 'default') {\n entries.push(<IdEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type) || type === 'button') {\n entries.push(<LabelEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type)) {\n entries.push(<DescriptionEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type)) {\n entries.push(<KeyEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type)) {\n entries.push(<DefaultValueEntry editField={ editField } field={ field } />);\n }\n\n if (type === 'button') {\n entries.push(<ActionEntry editField={ editField } field={ field } />);\n }\n\n if (type === 'columns') {\n entries.push(<ColumnsEntry editField={ editField } field={ field } />);\n }\n\n if (type === 'text') {\n entries.push(<TextEntry editField={ editField } field={ field } />);\n }\n\n if (INPUTS.includes(type)) {\n entries.push(<DisabledEntry editField={ editField } field={ field } />);\n }\n\n return (\n <Group label=\"General\">\n {\n entries.length ? entries : null\n }\n </Group>\n );\n}","import {\n get,\n set\n} from 'min-dash';\n\nimport {\n CheckboxInputEntry,\n Group,\n NumberInputEntry,\n TextInputEntry\n} from '../components';\n\nexport default function ValidationGroup(field, editField) {\n const { type } = field;\n\n const onChange = (key) => {\n return (value) => {\n const validate = get(field, [ 'validate' ], {});\n\n editField(field, [ 'validate' ], set(validate, [ key ], value));\n };\n };\n\n const entries = [\n <CheckboxInputEntry\n id=\"required\"\n label=\"Required\"\n onChange={ onChange('required') }\n value={ get(field, [ 'validate', 'required' ]) } />\n ];\n\n if (type === 'textfield') {\n entries.push(\n <NumberInputEntry\n id=\"minLength\"\n label=\"Minimum Length\"\n min=\"0\"\n onChange={ onChange('minLength') }\n value={ get(field, [ 'validate', 'minLength' ]) } />,\n <NumberInputEntry\n id=\"maxLength\"\n label=\"Maximum Length\"\n min=\"0\"\n onChange={ onChange('maxLength') }\n value={ get(field, [ 'validate', 'maxLength' ]) } />,\n <TextInputEntry\n id=\"regularExpressionPattern\"\n label=\"Regular Expression Pattern\"\n onChange={ onChange('regularExpressionPattern') }\n value={ get(field, [ 'validate', 'regularExpressionPattern' ]) } />\n );\n }\n\n if (type === 'number') {\n entries.push(\n <NumberInputEntry\n id=\"min\"\n label=\"Minimum\"\n onChange={ onChange('min') }\n value={ get(field, [ 'validate', 'min' ]) } />,\n <NumberInputEntry\n id=\"max\"\n label=\"Maximum\"\n onChange={ onChange('max') }\n value={ get(field, [ 'validate', 'max' ]) } />\n );\n }\n\n return (\n <Group label=\"Validation\">\n {\n entries.length ? entries : null\n }\n </Group>\n );\n}","import {\n CollapsibleEntry,\n Group\n} from '../components';\n\nimport { ValueEntry } from '../entries';\n\nimport {\n arrayAdd,\n arrayRemove\n} from '../Util';\n\nexport default function ValuesGroup(field, editField) {\n const {\n id,\n values = []\n } = field;\n\n const addEntry = () => {\n const entry = {\n label: 'Value',\n value: 'value'\n };\n\n editField(field, [ 'values' ], arrayAdd(values, values.length, entry));\n };\n\n const hasEntries = values.length > 0;\n\n return (\n <Group label=\"Values\" addEntry={ addEntry } hasEntries={ hasEntries }>\n {\n values.map((value, index) => {\n const { label } = value;\n\n const removeEntry = () => {\n editField(field, [ 'values' ], arrayRemove(values, index));\n };\n\n return (\n <CollapsibleEntry key={ `${ id }-${ index }` } label={ label } removeEntry={ removeEntry }>\n <ValueEntry editField={ editField } field={ field } index={ index } />\n </CollapsibleEntry>\n );\n })\n }\n </Group>\n );\n}","import {\n GeneralGroup,\n ValidationGroup,\n ValuesGroup\n} from './groups';\n\nimport {\n INPUTS,\n textToLabel\n} from './Util';\n\nimport {\n useService\n} from '../../hooks';\n\nimport { iconsByType } from '../palette/icons';\n\nconst labelsByType = {\n button: 'BUTTON',\n checkbox: 'CHECKBOX',\n columns: 'COLUMNS',\n default: 'FORM',\n number: 'NUMBER',\n radio: 'RADIO',\n select: 'SELECT',\n text: 'TEXT',\n textfield: 'TEXT FIELD',\n};\n\nfunction getGroups(field, editField) {\n const { type } = field;\n\n const groups = [\n GeneralGroup(field, editField)\n ];\n\n if (type === 'radio' || type === 'select') {\n groups.push(ValuesGroup(field, editField));\n }\n\n if (INPUTS.includes(type) && type !== 'checkbox') {\n groups.push(ValidationGroup(field, editField));\n }\n\n return groups;\n}\n\nexport default function PropertiesPanel(props) {\n const {\n editField,\n field\n } = props;\n\n const eventBus = useService('eventBus');\n\n if (!field) {\n return <div class=\"fjs-properties-panel-placeholder\">Select a form field to edit its properties.</div>;\n }\n\n const onFocus = () => eventBus.fire('propertiesPanel.focusin');\n\n const onBlur = () => eventBus.fire('propertiesPanel.focusout');\n\n const { type } = field;\n\n const Icon = iconsByType[ type ];\n\n const label = labelsByType[ type ];\n\n return (\n <div\n class=\"fjs-properties-panel\"\n data-field={ field.id }\n onFocusCapture={ onFocus }\n onBlurCapture={ onBlur }\n >\n <div class=\"fjs-properties-panel-header\">\n <div class=\"fjs-properties-panel-header-icon\">\n <Icon width=\"36\" height=\"36\" viewBox=\"0 0 54 54\" />\n </div>\n <div>\n <span class=\"fjs-properties-panel-header-type\">{ label }</span>\n {\n type === 'text'\n ? <div class=\"fjs-properties-panel-header-label\">{ textToLabel(field.text) }</div>\n : type === 'default'\n ? <div class=\"fjs-properties-panel-header-label\">{ field.id }</div>\n : <div class=\"fjs-properties-panel-header-label\">{ field.label }</div>\n }\n </div>\n </div>\n {\n getGroups(field, editField)\n }\n </div>\n );\n}","import { render } from 'preact';\nimport {\n useCallback,\n useContext,\n useEffect,\n useRef,\n useState\n} from 'preact/hooks';\n\nimport {\n FormComponent,\n FormContext,\n FormRenderContext\n} from '@bpmn-io/form-js-viewer';\n\nimport useService from '../hooks/useService';\n\nimport { DragAndDropContext } from '../context';\n\nimport Palette from './palette/Palette';\nimport PropertiesPanel from './properties-panel/PropertiesPanel';\n\nimport dragula from 'dragula';\n\nimport { ListDeleteIcon } from './properties-panel/icons';\n\nimport { iconsByType } from './palette/icons';\n\nfunction ContextPad(props) {\n if (!props.children) {\n return null;\n }\n\n return (\n <div class=\"fjs-context-pad\">\n {\n props.children\n }\n </div>\n );\n}\n\nfunction Empty(props) {\n return null;\n}\n\nfunction Element(props) {\n const eventBus = useService('eventBus'),\n formEditor = useService('formEditor'),\n formFieldRegistry = useService('formFieldRegistry'),\n modeling = useService('modeling'),\n selection = useService('selection');\n\n const { field } = props;\n\n const {\n id,\n type\n } = field;\n\n const ref = useRef();\n\n function scrollIntoView({ selection }) {\n if (!selection || selection.id !== id || !ref.current) {\n return;\n }\n\n const elementBounds = ref.current.getBoundingClientRect(),\n containerBounds = formEditor._container.getBoundingClientRect();\n\n if (elementBounds.top < 0 || elementBounds.top > containerBounds.bottom) {\n ref.current.scrollIntoView();\n }\n }\n\n useEffect(() => {\n eventBus.on('selection.changed', scrollIntoView);\n\n return () => eventBus.off('selection.changed', scrollIntoView);\n }, [ id ]);\n\n function onClick(event) {\n event.stopPropagation();\n\n selection.toggle(field);\n }\n\n const classes = [ 'fjs-element' ];\n\n if (props.class) {\n classes.push(...props.class.split(' '));\n }\n\n if (selection.isSelected(field)) {\n classes.push('fjs-editor-selected');\n }\n\n const onRemove = (event) => {\n event.stopPropagation();\n\n const parentField = formFieldRegistry.get(field._parent);\n\n const index = getFormFieldIndex(parentField, field);\n\n modeling.removeFormField(field, parentField, index);\n };\n\n return (\n <div\n class={ classes.join(' ') }\n data-id={ id }\n data-field-type={ type }\n onClick={ onClick }\n ref={ ref }>\n <ContextPad>\n {\n selection.isSelected(field) && field.type !== 'default'\n ? <button class=\"fjs-context-pad-item\" onClick={ onRemove }><ListDeleteIcon /></button>\n : null\n }\n </ContextPad>\n { props.children }\n </div>\n );\n}\n\nfunction Children(props) {\n const { field } = props;\n\n const { id } = field;\n\n const classes = [ 'fjs-children', 'fjs-drag-container' ];\n\n if (props.class) {\n classes.push(...props.class.split(' '));\n }\n\n return (\n <div\n class={ classes.join(' ') }\n data-id={ id }>\n { props.children }\n </div>\n );\n}\n\nexport default function FormEditor(props) {\n const eventBus = useService('eventBus'),\n formEditor = useService('formEditor'),\n formFieldRegistry = useService('formFieldRegistry'),\n injector = useService('injector'),\n modeling = useService('modeling'),\n selection = useService('selection');\n\n const { schema } = formEditor._getState();\n\n const [ selectedFormField, setSelection ] = useState(schema);\n\n useEffect(() => {\n function handleSelectionChanged(event) {\n setSelection(event.selection || schema);\n }\n\n eventBus.on('selection.changed', handleSelectionChanged);\n\n setSelection(selection.get() || schema);\n\n return () => {\n eventBus.off('selection.changed', handleSelectionChanged);\n };\n }, [ schema, selection ]);\n\n const [ drake, setDrake ] = useState(null);\n\n const dragAndDropContext = {\n drake\n };\n\n useEffect(() => {\n const createDragulaInstance = () => {\n const dragulaInstance = dragula({\n isContainer(el) {\n return el.classList.contains('fjs-drag-container');\n },\n copy(el) {\n return el.classList.contains('fjs-drag-copy');\n },\n accepts(el, target) {\n return !target.classList.contains('fjs-no-drop');\n },\n slideFactorX: 10,\n slideFactorY: 5\n });\n\n dragulaInstance.on('drop', (el, target, source, sibling) => {\n dragulaInstance.remove();\n\n if (!target) {\n return;\n }\n\n const targetFormField = formFieldRegistry.get(target.dataset.id);\n\n const siblingFormField = sibling && formFieldRegistry.get(sibling.dataset.id),\n targetIndex = siblingFormField ? getFormFieldIndex(targetFormField, siblingFormField) : targetFormField.components.length;\n\n if (source.classList.contains('fjs-palette-fields')) {\n const type = el.dataset.fieldType;\n\n modeling.addFormField({ type }, targetFormField, targetIndex);\n } else {\n const formField = formFieldRegistry.get(el.dataset.id),\n sourceFormField = formFieldRegistry.get(source.dataset.id),\n sourceIndex = getFormFieldIndex(sourceFormField, formField);\n\n modeling.moveFormField(formField, sourceFormField, targetFormField, sourceIndex, targetIndex);\n }\n });\n\n eventBus.fire('dragula.created');\n\n setDrake(dragulaInstance);\n\n return dragulaInstance;\n };\n\n let dragulaInstance = createDragulaInstance();\n\n const onDetach = () => {\n if (dragulaInstance) {\n dragulaInstance.destroy();\n\n eventBus.fire('dragula.destroyed');\n }\n };\n\n const onAttach = () => {\n onDetach();\n\n dragulaInstance = createDragulaInstance();\n };\n\n eventBus.on('attach', onAttach);\n eventBus.on('detach', onDetach);\n\n return () => {\n onDetach();\n\n eventBus.off('attach', onAttach);\n eventBus.off('detach', onDetach);\n };\n }, []);\n\n const formRenderContext = {\n Children,\n Element,\n Empty\n };\n\n const formContext = {\n getService(type, strict = true) {\n\n // TODO(philippfromme): clean up\n if (type === 'formFieldRegistry') {\n return new Map();\n } else if (type === 'form') {\n return {\n _getState() {\n return {\n data: {},\n errors: {},\n properties: {\n readOnly: true\n },\n schema\n };\n }\n };\n }\n\n return injector.get(type, strict);\n },\n formId: formEditor._id\n };\n\n const onSubmit = useCallback(() => {}, []);\n\n const onReset = useCallback(() => {}, []);\n\n const editField = useCallback((formField, key, value) => modeling.editFormField(formField, key, value), [ modeling ]);\n\n return (\n <div class=\"fjs-form-editor\">\n\n <DragAndDropContext.Provider value={ dragAndDropContext }>\n <div class=\"fjs-palette-container\">\n <Palette />\n </div>\n <div class=\"fjs-form-container\">\n\n <FormContext.Provider value={ formContext }>\n <FormRenderContext.Provider value={ formRenderContext }>\n <FormComponent onSubmit={ onSubmit } onReset={ onReset } />\n </FormRenderContext.Provider>\n </FormContext.Provider>\n\n </div>\n <CreatePreview />\n </DragAndDropContext.Provider>\n\n <div class=\"fjs-properties-container\">\n <PropertiesPanel field={ selectedFormField } editField={ editField } />\n </div>\n </div>\n );\n}\n\nfunction getFormFieldIndex(parent, formField) {\n let fieldFormIndex = parent.components.length;\n\n parent.components.forEach(({ id }, index) => {\n if (id === formField.id) {\n fieldFormIndex = index;\n }\n });\n\n return fieldFormIndex;\n}\n\nfunction CreatePreview(props) {\n\n const { drake } = useContext(DragAndDropContext);\n\n function handleCloned(clone, original, type) {\n\n const fieldType = clone.dataset.fieldType;\n\n const Icon = iconsByType[ fieldType ];\n\n if (fieldType) {\n clone.innerHTML = '';\n\n clone.class = 'gu-mirror';\n\n render(<Icon />, clone);\n }\n }\n\n useEffect(() => {\n if (!drake) {\n return;\n }\n\n drake.on('cloned', handleCloned);\n\n return () => drake.off('cloned', handleCloned);\n }, [ drake ]);\n\n return null;\n}","import { render } from 'preact';\nimport { useState } from 'preact/hooks';\n\nimport FormEditor from './components/FormEditor';\n\nimport { FormEditorContext } from './context';\n\n/**\n * @typedef { { container: Element, compact?: boolean } } RenderConfig\n * @typedef { import('didi').Injector } Injector\n * @typedef { import('../core/EventBus').default } EventBus\n * @typedef { import('../FormEditor').default } FormEditor\n */\n\n/**\n * @param {RenderConfig} renderConfig\n * @param {EventBus} eventBus\n * @param {FormEditor} formEditor\n * @param {Injector} injector\n */\nexport default class Renderer {\n constructor(renderConfig, eventBus, formEditor, injector) {\n\n const {\n container,\n compact = false\n } = renderConfig;\n\n const App = () => {\n const [ state, setState ] = useState(formEditor._getState());\n\n const formEditorContext = {\n getService(type, strict = true) {\n return injector.get(type, strict);\n }\n };\n\n formEditor.on('changed', (newState) => {\n setState(newState);\n });\n\n const { schema } = state;\n\n if (!schema) {\n return null;\n }\n\n return (\n <div class={ `fjs-container fjs-editor-container ${ compact ? 'fjs-editor-compact' : '' }` }>\n <FormEditorContext.Provider value={ formEditorContext }>\n <FormEditor />\n </FormEditorContext.Provider>\n </div>\n );\n };\n\n eventBus.on('form.init', () => {\n render(<App />, container);\n });\n\n eventBus.on('form.destroy', () => {\n render(null, container);\n });\n }\n}\n\nRenderer.$inject = [ 'config.renderer', 'eventBus', 'formEditor', 'injector' ];","import { FormFields } from '@bpmn-io/form-js-viewer';\n\nimport Renderer from './Renderer';\n\nexport default {\n __init__: [ 'formFields', 'renderer' ],\n formFields: [ 'type', FormFields ],\n renderer: [ 'type', Renderer ]\n};","import EventBus from './EventBus';\nimport DebounceFactory from './Debounce';\nimport FieldFactory from './FieldFactory';\nimport FormFieldRegistry from './FormFieldRegistry';\n\nimport importModule from '../import';\nimport renderModule from '../render';\n\nexport default {\n __depends__: [\n importModule,\n renderModule\n ],\n eventBus: [ 'type', EventBus ],\n formFieldRegistry: [ 'type', FormFieldRegistry ],\n fieldFactory: [ 'type', FieldFactory ],\n debounce: [ 'factory', DebounceFactory ]\n};","import {\n forEach,\n isArray\n} from 'min-dash';\n\nvar NOT_REGISTERED_ERROR = 'is not a registered action',\n IS_REGISTERED_ERROR = 'is already registered';\n\n\n/**\n * An interface that provides access to modeling actions by decoupling\n * the one who requests the action to be triggered and the trigger itself.\n *\n * It's possible to add new actions by registering them with ´registerAction´\n * and likewise unregister existing ones with ´unregisterAction´.\n *\n *\n * ## Life-Cycle and configuration\n *\n * The editor actions will wait for diagram initialization before\n * registering default actions _and_ firing an `editorActions.init` event.\n *\n * Interested parties may listen to the `editorActions.init` event with\n * low priority to check, which actions got registered. Other components\n * may use the event to register their own actions via `registerAction`.\n *\n * @param {EventBus} eventBus\n * @param {Injector} injector\n */\nexport default function EditorActions(eventBus, injector) {\n\n // initialize actions\n this._actions = {};\n\n var self = this;\n\n eventBus.on('diagram.init', function() {\n\n // all diagram modules got loaded; check which ones\n // are available and register the respective default actions\n self._registerDefaultActions(injector);\n\n // ask interested parties to register available editor\n // actions on diagram initialization\n eventBus.fire('editorActions.init', {\n editorActions: self\n });\n });\n\n}\n\nEditorActions.$inject = [\n 'eventBus',\n 'injector'\n];\n\n/**\n * Register default actions.\n *\n * @param {Injector} injector\n */\nEditorActions.prototype._registerDefaultActions = function(injector) {\n\n // (1) retrieve optional components to integrate with\n\n var commandStack = injector.get('commandStack', false);\n var modeling = injector.get('modeling', false);\n var selection = injector.get('selection', false);\n var zoomScroll = injector.get('zoomScroll', false);\n var copyPaste = injector.get('copyPaste', false);\n var canvas = injector.get('canvas', false);\n var rules = injector.get('rules', false);\n var keyboardMove = injector.get('keyboardMove', false);\n var keyboardMoveSelection = injector.get('keyboardMoveSelection', false);\n\n // (2) check components and register actions\n\n if (commandStack) {\n this.register('undo', function() {\n commandStack.undo();\n });\n\n this.register('redo', function() {\n commandStack.redo();\n });\n }\n\n if (copyPaste && selection) {\n this.register('copy', function() {\n var selectedElements = selection.get();\n\n copyPaste.copy(selectedElements);\n });\n }\n\n if (copyPaste) {\n this.register('paste', function() {\n copyPaste.paste();\n });\n }\n\n if (zoomScroll) {\n this.register('stepZoom', function(opts) {\n zoomScroll.stepZoom(opts.value);\n });\n }\n\n if (canvas) {\n this.register('zoom', function(opts) {\n canvas.zoom(opts.value);\n });\n }\n\n if (modeling && selection && rules) {\n this.register('removeSelection', function() {\n\n var selectedElements = selection.get();\n\n if (!selectedElements.length) {\n return;\n }\n\n var allowed = rules.allowed('elements.delete', { elements: selectedElements }),\n removableElements;\n\n if (allowed === false) {\n return;\n }\n else if (isArray(allowed)) {\n removableElements = allowed;\n }\n else {\n removableElements = selectedElements;\n }\n\n if (removableElements.length) {\n modeling.removeElements(removableElements.slice());\n }\n });\n }\n\n if (keyboardMove) {\n this.register('moveCanvas', function(opts) {\n keyboardMove.moveCanvas(opts);\n });\n }\n\n if (keyboardMoveSelection) {\n this.register('moveSelection', function(opts) {\n keyboardMoveSelection.moveSelection(opts.direction, opts.accelerated);\n });\n }\n\n};\n\n\n/**\n * Triggers a registered action\n *\n * @param {string} action\n * @param {Object} opts\n *\n * @return {Unknown} Returns what the registered listener returns\n */\nEditorActions.prototype.trigger = function(action, opts) {\n if (!this._actions[action]) {\n throw error(action, NOT_REGISTERED_ERROR);\n }\n\n return this._actions[action](opts);\n};\n\n\n/**\n * Registers a collections of actions.\n * The key of the object will be the name of the action.\n *\n * @example\n * ´´´\n * var actions = {\n * spaceTool: function() {\n * spaceTool.activateSelection();\n * },\n * lassoTool: function() {\n * lassoTool.activateSelection();\n * }\n * ];\n *\n * editorActions.register(actions);\n *\n * editorActions.isRegistered('spaceTool'); // true\n * ´´´\n *\n * @param {Object} actions\n */\nEditorActions.prototype.register = function(actions, listener) {\n var self = this;\n\n if (typeof actions === 'string') {\n return this._registerAction(actions, listener);\n }\n\n forEach(actions, function(listener, action) {\n self._registerAction(action, listener);\n });\n};\n\n/**\n * Registers a listener to an action key\n *\n * @param {string} action\n * @param {Function} listener\n */\nEditorActions.prototype._registerAction = function(action, listener) {\n if (this.isRegistered(action)) {\n throw error(action, IS_REGISTERED_ERROR);\n }\n\n this._actions[action] = listener;\n};\n\n/**\n * Unregister an existing action\n *\n * @param {string} action\n */\nEditorActions.prototype.unregister = function(action) {\n if (!this.isRegistered(action)) {\n throw error(action, NOT_REGISTERED_ERROR);\n }\n\n this._actions[action] = undefined;\n};\n\n/**\n * Returns the number of actions that are currently registered\n *\n * @return {number}\n */\nEditorActions.prototype.getActions = function() {\n return Object.keys(this._actions);\n};\n\n/**\n * Checks wether the given action is registered\n *\n * @param {string} action\n *\n * @return {boolean}\n */\nEditorActions.prototype.isRegistered = function(action) {\n return !!this._actions[action];\n};\n\n\nfunction error(action, message) {\n return new Error(action + ' ' + message);\n}\n","import EditorActions from './EditorActions';\n\nexport default {\n __init__: [ 'editorActions' ],\n editorActions: [ 'type', EditorActions ]\n};\n","import EditorActions from 'diagram-js/lib/features/editor-actions/EditorActions';\n\n\nexport default class FormEditorActions extends EditorActions {\n constructor(eventBus, injector) {\n super(eventBus, injector);\n\n eventBus.on('form.init', () => {\n this._registerDefaultActions(injector);\n\n eventBus.fire('editorActions.init', {\n editorActions: this\n });\n });\n }\n\n _registerDefaultActions(injector) {\n const commandStack = injector.get('commandStack', false),\n formFieldRegistry = injector.get('formFieldRegistry', false),\n selection = injector.get('selection', false);\n\n if (commandStack) {\n\n // @ts-ignore\n this.register('undo', () => {\n commandStack.undo();\n });\n\n // @ts-ignore\n this.register('redo', () => {\n commandStack.redo();\n });\n }\n\n if (formFieldRegistry && selection) {\n\n // @ts-ignore\n this.register('selectFormField', (options = {}) => {\n const { id } = options;\n\n if (!id) {\n return;\n }\n\n const formField = formFieldRegistry.get(id);\n\n if (formField) {\n selection.set(formField);\n }\n });\n }\n }\n}\n\nFormEditorActions.$inject = [\n 'eventBus',\n 'injector'\n];","import EditorActionsModule from 'diagram-js/lib/features/editor-actions';\n\nimport FormEditorActions from './FormEditorActions';\n\nexport default {\n __depends__: [\n EditorActionsModule\n ],\n editorActions: [ 'type', FormEditorActions ]\n};\n","import { isArray } from 'min-dash';\r\n\r\n/**\r\n * Returns true if event was triggered with any modifier\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function hasModifier(event) {\r\n return (event.ctrlKey || event.metaKey || event.shiftKey || event.altKey);\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isCmd(event) {\r\n\r\n // ensure we don't react to AltGr\r\n // (mapped to CTRL + ALT)\r\n if (event.altKey) {\r\n return false;\r\n }\r\n\r\n return event.ctrlKey || event.metaKey;\r\n}\r\n\r\n/**\r\n * Checks if key pressed is one of provided keys.\r\n *\r\n * @param {string|Array<string>} keys\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isKey(keys, event) {\r\n keys = isArray(keys) ? keys : [ keys ];\r\n\r\n return keys.indexOf(event.key) !== -1 || keys.indexOf(event.keyCode) !== -1;\r\n}\r\n\r\n/**\r\n * @param {KeyboardEvent} event\r\n */\r\nexport function isShift(event) {\r\n return event.shiftKey;\r\n}","import {\n isFunction\n} from 'min-dash';\n\nimport {\n closest as domClosest,\n event as domEvent,\n matches as domMatches\n} from 'min-dom';\n\nimport {\n hasModifier,\n isCmd,\n isKey,\n isShift\n} from './KeyboardUtil';\n\nvar KEYDOWN_EVENT = 'keyboard.keydown',\n KEYUP_EVENT = 'keyboard.keyup';\n\nvar HANDLE_MODIFIER_ATTRIBUTE = 'input-handle-modified-keys';\n\nvar DEFAULT_PRIORITY = 1000;\n\n/**\n * A keyboard abstraction that may be activated and\n * deactivated by users at will, consuming key events\n * and triggering diagram actions.\n *\n * For keys pressed down, keyboard fires `keyboard.keydown` event.\n * The event context contains one field which is `KeyboardEvent` event.\n *\n * The implementation fires the following key events that allow\n * other components to hook into key handling:\n *\n * - keyboard.bind\n * - keyboard.unbind\n * - keyboard.init\n * - keyboard.destroy\n *\n * All events contain one field which is node.\n *\n * A default binding for the keyboard may be specified via the\n * `keyboard.bindTo` configuration option.\n *\n * @param {Config} config\n * @param {EventBus} eventBus\n */\nexport default function Keyboard(config, eventBus) {\n var self = this;\n\n this._config = config || {};\n this._eventBus = eventBus;\n\n this._keydownHandler = this._keydownHandler.bind(this);\n this._keyupHandler = this._keyupHandler.bind(this);\n\n // properly clean dom registrations\n eventBus.on('diagram.destroy', function() {\n self._fire('destroy');\n\n self.unbind();\n });\n\n eventBus.on('diagram.init', function() {\n self._fire('init');\n });\n\n eventBus.on('attach', function() {\n if (config && config.bindTo) {\n self.bind(config.bindTo);\n }\n });\n\n eventBus.on('detach', function() {\n self.unbind();\n });\n}\n\nKeyboard.$inject = [\n 'config.keyboard',\n 'eventBus'\n];\n\nKeyboard.prototype._keydownHandler = function(event) {\n this._keyHandler(event, KEYDOWN_EVENT);\n};\n\nKeyboard.prototype._keyupHandler = function(event) {\n this._keyHandler(event, KEYUP_EVENT);\n};\n\nKeyboard.prototype._keyHandler = function(event, type) {\n var eventBusResult;\n\n if (this._isEventIgnored(event)) {\n return;\n }\n\n var context = {\n keyEvent: event\n };\n\n eventBusResult = this._eventBus.fire(type || KEYDOWN_EVENT, context);\n\n if (eventBusResult) {\n event.preventDefault();\n }\n};\n\nKeyboard.prototype._isEventIgnored = function(event) {\n return isInput(event.target) && this._isModifiedKeyIgnored(event);\n};\n\nKeyboard.prototype._isModifiedKeyIgnored = function(event) {\n if (!isCmd(event)) {\n return true;\n }\n\n var allowedModifiers = this._getAllowedModifiers(event.target);\n return !allowedModifiers.includes(event.key);\n};\n\nKeyboard.prototype._getAllowedModifiers = function(element) {\n var modifierContainer = domClosest(element, '[' + HANDLE_MODIFIER_ATTRIBUTE + ']', true);\n\n if (!modifierContainer || (this._node && !this._node.contains(modifierContainer))) {\n return [];\n }\n\n return modifierContainer.getAttribute(HANDLE_MODIFIER_ATTRIBUTE).split(',');\n};\n\nKeyboard.prototype.bind = function(node) {\n\n // make sure that the keyboard is only bound once to the DOM\n this.unbind();\n\n this._node = node;\n\n // bind key events\n domEvent.bind(node, 'keydown', this._keydownHandler, true);\n domEvent.bind(node, 'keyup', this._keyupHandler, true);\n\n this._fire('bind');\n};\n\nKeyboard.prototype.getBinding = function() {\n return this._node;\n};\n\nKeyboard.prototype.unbind = function() {\n var node = this._node;\n\n if (node) {\n this._fire('unbind');\n\n // unbind key events\n domEvent.unbind(node, 'keydown', this._keydownHandler, true);\n domEvent.unbind(node, 'keyup', this._keyupHandler, true);\n }\n\n this._node = null;\n};\n\nKeyboard.prototype._fire = function(event) {\n this._eventBus.fire('keyboard.' + event, { node: this._node });\n};\n\n/**\n * Add a listener function that is notified with `KeyboardEvent` whenever\n * the keyboard is bound and the user presses a key. If no priority is\n * provided, the default value of 1000 is used.\n *\n * @param {number} [priority]\n * @param {Function} listener\n * @param {string} type\n */\nKeyboard.prototype.addListener = function(priority, listener, type) {\n if (isFunction(priority)) {\n type = listener;\n listener = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n this._eventBus.on(type || KEYDOWN_EVENT, priority, listener);\n};\n\nKeyboard.prototype.removeListener = function(listener, type) {\n this._eventBus.off(type || KEYDOWN_EVENT, listener);\n};\n\nKeyboard.prototype.hasModifier = hasModifier;\nKeyboard.prototype.isCmd = isCmd;\nKeyboard.prototype.isShift = isShift;\nKeyboard.prototype.isKey = isKey;\n\n\n\n// helpers ///////\n\nfunction isInput(target) {\n return target && (domMatches(target, 'input, textarea') || target.contentEditable === 'true');\n}\n","import {\n isCmd,\n isKey,\n isShift\n} from './KeyboardUtil';\n\nvar LOW_PRIORITY = 500;\n\nexport var KEYCODE_C = 67;\nexport var KEYCODE_V = 86;\nexport var KEYCODE_Y = 89;\nexport var KEYCODE_Z = 90;\n\nexport var KEYS_COPY = ['c', 'C', KEYCODE_C ];\nexport var KEYS_PASTE = [ 'v', 'V', KEYCODE_V ];\nexport var KEYS_REDO = [ 'y', 'Y', KEYCODE_Y ];\nexport var KEYS_UNDO = [ 'z', 'Z', KEYCODE_Z ];\n\n\n/**\n * Adds default keyboard bindings.\n *\n * This does not pull in any features will bind only actions that\n * have previously been registered against the editorActions component.\n *\n * @param {EventBus} eventBus\n * @param {Keyboard} keyboard\n */\nexport default function KeyboardBindings(eventBus, keyboard) {\n\n var self = this;\n\n eventBus.on('editorActions.init', LOW_PRIORITY, function(event) {\n\n var editorActions = event.editorActions;\n\n self.registerBindings(keyboard, editorActions);\n });\n}\n\nKeyboardBindings.$inject = [\n 'eventBus',\n 'keyboard'\n];\n\n\n/**\n * Register available keyboard bindings.\n *\n * @param {Keyboard} keyboard\n * @param {EditorActions} editorActions\n */\nKeyboardBindings.prototype.registerBindings = function(keyboard, editorActions) {\n\n /**\n * Add keyboard binding if respective editor action\n * is registered.\n *\n * @param {string} action name\n * @param {Function} fn that implements the key binding\n */\n function addListener(action, fn) {\n\n if (editorActions.isRegistered(action)) {\n keyboard.addListener(fn);\n }\n }\n\n\n // undo\n // (CTRL|CMD) + Z\n addListener('undo', function(context) {\n\n var event = context.keyEvent;\n\n if (isCmd(event) && !isShift(event) && isKey(KEYS_UNDO, event)) {\n editorActions.trigger('undo');\n\n return true;\n }\n });\n\n // redo\n // CTRL + Y\n // CMD + SHIFT + Z\n addListener('redo', function(context) {\n\n var event = context.keyEvent;\n\n if (isCmd(event) && (isKey(KEYS_REDO, event) || (isKey(KEYS_UNDO, event) && isShift(event)))) {\n editorActions.trigger('redo');\n\n return true;\n }\n });\n\n // copy\n // CTRL/CMD + C\n addListener('copy', function(context) {\n\n var event = context.keyEvent;\n\n if (isCmd(event) && isKey(KEYS_COPY, event)) {\n editorActions.trigger('copy');\n\n return true;\n }\n });\n\n // paste\n // CTRL/CMD + V\n addListener('paste', function(context) {\n\n var event = context.keyEvent;\n\n if (isCmd(event) && isKey(KEYS_PASTE, event)) {\n editorActions.trigger('paste');\n\n return true;\n }\n });\n\n // zoom in one step\n // CTRL/CMD + +\n addListener('stepZoom', function(context) {\n\n var event = context.keyEvent;\n\n // quirk: it has to be triggered by `=` as well to work on international keyboard layout\n // cf: https://github.com/bpmn-io/bpmn-js/issues/1362#issuecomment-722989754\n if (isKey([ '+', 'Add', '=' ], event) && isCmd(event)) {\n editorActions.trigger('stepZoom', { value: 1 });\n\n return true;\n }\n });\n\n // zoom out one step\n // CTRL + -\n addListener('stepZoom', function(context) {\n\n var event = context.keyEvent;\n\n if (isKey([ '-', 'Subtract' ], event) && isCmd(event)) {\n editorActions.trigger('stepZoom', { value: -1 });\n\n return true;\n }\n });\n\n // zoom to the default level\n // CTRL + 0\n addListener('zoom', function(context) {\n\n var event = context.keyEvent;\n\n if (isKey('0', event) && isCmd(event)) {\n editorActions.trigger('zoom', { value: 1 });\n\n return true;\n }\n });\n\n // delete selected element\n // DEL\n addListener('removeSelection', function(context) {\n\n var event = context.keyEvent;\n\n if (isKey(['Backspace', 'Delete', 'Del' ], event)) {\n editorActions.trigger('removeSelection');\n\n return true;\n }\n });\n};","import Keyboard from './Keyboard';\nimport KeyboardBindings from './KeyboardBindings';\n\nexport default {\n __init__: [ 'keyboard', 'keyboardBindings' ],\n keyboard: [ 'type', Keyboard ],\n keyboardBindings: [ 'type', KeyboardBindings ]\n};\n","import {\n isCmd,\n isKey,\n isShift\n} from 'diagram-js/lib/features/keyboard/KeyboardUtil';\n\nimport {\n KEYS_REDO,\n KEYS_UNDO\n} from 'diagram-js/lib/features/keyboard/KeyboardBindings';\n\nconst LOW_PRIORITY = 500;\n\nexport default class FormEditorKeyboardBindings {\n constructor(eventBus, keyboard) {\n eventBus.on('editorActions.init', LOW_PRIORITY, (event) => {\n const { editorActions } = event;\n\n this.registerBindings(keyboard, editorActions);\n });\n }\n\n registerBindings(keyboard, editorActions) {\n\n function addListener(action, fn) {\n if (editorActions.isRegistered(action)) {\n keyboard.addListener(fn);\n }\n }\n\n // undo\n // (CTRL|CMD) + Z\n addListener('undo', (context) => {\n const { keyEvent } = context;\n\n if (isCmd(keyEvent) && !isShift(keyEvent) && isKey(KEYS_UNDO, keyEvent)) {\n editorActions.trigger('undo');\n\n return true;\n }\n });\n\n // redo\n // CTRL + Y\n // CMD + SHIFT + Z\n addListener('redo', (context) => {\n const { keyEvent } = context;\n\n if (isCmd(keyEvent) && (isKey(KEYS_REDO, keyEvent) || (isKey(KEYS_UNDO, keyEvent) && isShift(keyEvent)))) {\n editorActions.trigger('redo');\n\n return true;\n }\n });\n\n }\n}\n\nFormEditorKeyboardBindings.$inject = [ 'eventBus', 'keyboard' ];","import KeyboardModule from 'diagram-js/lib/features/keyboard';\n\nimport FormEditorKeyboardBindings from './FormEditorKeyboardBindings';\n\nexport default {\n __depends__: [\n KeyboardModule\n ],\n __init__: [ 'keyboardBindings' ],\n keyboardBindings: [ 'type', FormEditorKeyboardBindings ]\n};","export function arrayAdd(array, index, item) {\n array.splice(index, 0, item);\n\n return array;\n}\n\nexport { mutate as arrayMove } from 'array-move';\n\nexport function arrayRemove(array, index) {\n array.splice(index, 1);\n\n return array;\n}\n\nexport function updatePath(formFieldRegistry, formField, index) {\n const parent = formFieldRegistry.get(formField._parent);\n\n formField._path = [ ...parent._path, 'components', index ];\n\n return formField;\n}","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class AddFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n formField,\n targetFormField,\n targetIndex\n } = context;\n\n const { schema } = this._formEditor._getState();\n\n const targetPath = [ ...targetFormField._path, 'components' ];\n\n formField._parent = targetFormField.id;\n\n // (1) Add new form field\n arrayAdd(get(schema, targetPath), targetIndex, formField);\n\n // (2) Update paths of new form field and its siblings\n get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Add new form field to form field registry\n this._formFieldRegistry.add(formField);\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n\n revert(context) {\n const {\n formField,\n targetFormField,\n targetIndex\n } = context;\n\n const { schema } = this._formEditor._getState();\n\n const targetPath = [ ...targetFormField._path, 'components' ];\n\n // (1) Remove new form field\n arrayRemove(get(schema, targetPath), targetIndex);\n\n // (2) Update paths of new form field and its siblings\n get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Remove new form field from form field registry\n this._formFieldRegistry.remove(formField);\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n}\n\nAddFormFieldHandler.$inject = [ 'formEditor', 'formFieldRegistry' ];","export default class EditFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n formField,\n properties\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const oldProperties = {};\n\n for (let key in properties) {\n oldProperties[ key ] = formField[ key ];\n\n const property = properties[ key ];\n\n if (key === 'id') {\n if (property !== formField.id) {\n this._formFieldRegistry.updateId(formField, property);\n }\n } else {\n formField[ key ] = property;\n }\n }\n\n context.oldProperties = oldProperties;\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n\n return formField;\n }\n\n revert(context) {\n const {\n formField,\n oldProperties\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n for (let key in oldProperties) {\n\n const property = oldProperties[ key ];\n\n if (key === 'id') {\n if (property !== formField.id) {\n this._formFieldRegistry.updateId(formField, property);\n }\n } else {\n formField[ key ] = property;\n }\n }\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n\n return formField;\n }\n\n}\n\nEditFormFieldHandler.$inject = [\n 'formEditor',\n 'formFieldRegistry'\n];","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayMove,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class MoveFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n this.moveFormField(context);\n }\n\n revert(context) {\n let {\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex\n } = context;\n\n this.moveFormField({\n sourceFormField: targetFormField,\n targetFormField: sourceFormField,\n sourceIndex: targetIndex,\n targetIndex: sourceIndex\n }, true);\n }\n\n moveFormField(context, revert) {\n let {\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const sourcePath = [ ...sourceFormField._path, 'components' ];\n\n if (sourceFormField.id === targetFormField.id) {\n\n if (revert) {\n if (sourceIndex > targetIndex) {\n sourceIndex--;\n }\n } else {\n if (sourceIndex < targetIndex) {\n targetIndex--;\n }\n }\n\n // (1) Move form field\n arrayMove(get(schema, sourcePath), sourceIndex, targetIndex);\n\n // (2) Update paths of new form field and its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n } else {\n const formField = get(schema, [ ...sourcePath, sourceIndex ]);\n\n formField._parent = targetFormField.id;\n\n // (1) Remove form field\n arrayRemove(get(schema, sourcePath), sourceIndex);\n\n // (2) Update paths of siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n const targetPath = [ ...targetFormField._path, 'components' ];\n\n // (3) Add form field\n arrayAdd(get(schema, targetPath), targetIndex, formField);\n\n // (4) Update paths of siblings\n get(schema, targetPath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n }\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n}\n\nMoveFormFieldHandler.$inject = [ 'formEditor', 'formFieldRegistry' ];","import { get } from 'min-dash';\n\nimport {\n arrayAdd,\n arrayRemove,\n updatePath\n} from './Util';\n\nexport default class RemoveFormFieldHandler {\n\n /**\n * @constructor\n * @param { import('../../../FormEditor').default } formEditor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formEditor, formFieldRegistry) {\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n sourceFormField,\n sourceIndex\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const sourcePath = [ ...sourceFormField._path, 'components' ];\n\n const formField = context.formField = get(schema, [ ...sourcePath, sourceIndex ]);\n\n // (1) Remove form field\n arrayRemove(get(schema, sourcePath), sourceIndex);\n\n // (2) Update paths of its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Remove form field from form field registry\n this._formFieldRegistry.remove(formField);\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n\n revert(context) {\n const {\n formField,\n sourceFormField,\n sourceIndex\n } = context;\n\n let { schema } = this._formEditor._getState();\n\n const sourcePath = [ ...sourceFormField._path, 'components' ];\n\n // (1) Add form field\n arrayAdd(get(schema, sourcePath), sourceIndex, formField);\n\n // (2) Update paths of its siblings\n get(schema, sourcePath).forEach((formField, index) => updatePath(this._formFieldRegistry, formField, index));\n\n // (3) Add form field to form field registry\n this._formFieldRegistry.add(formField);\n\n // TODO: Create updater/change support that automatically updates paths and schema on command execution\n this._formEditor._setState({ schema });\n }\n}\n\nRemoveFormFieldHandler.$inject = [ 'formEditor', 'formFieldRegistry' ];","export default class UpdateIdClaimHandler {\n\n /**\n * @constructor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formFieldRegistry) {\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n claiming,\n formField,\n id\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._ids.claim(id, formField);\n } else {\n this._formFieldRegistry._ids.unclaim(id);\n }\n }\n\n revert(context) {\n const {\n claiming,\n formField,\n id\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._ids.unclaim(id);\n } else {\n this._formFieldRegistry._ids.claim(id, formField);\n }\n }\n}\n\nUpdateIdClaimHandler.$inject = [ 'formFieldRegistry' ];","export default class UpdateKeyClaimHandler {\n\n /**\n * @constructor\n * @param { import('../../../core/FormFieldRegistry').default } formFieldRegistry\n */\n constructor(formFieldRegistry) {\n this._formFieldRegistry = formFieldRegistry;\n }\n\n execute(context) {\n const {\n claiming,\n formField,\n key\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._keys.claim(key, formField);\n } else {\n this._formFieldRegistry._keys.unclaim(key);\n }\n }\n\n revert(context) {\n const {\n claiming,\n formField,\n key\n } = context;\n\n if (claiming) {\n this._formFieldRegistry._keys.unclaim(key);\n } else {\n this._formFieldRegistry._keys.claim(key, formField);\n }\n }\n}\n\nUpdateKeyClaimHandler.$inject = [ 'formFieldRegistry' ];","import AddFormFieldHandler from './cmd/AddFormFieldHandler';\nimport EditFormFieldHandler from './cmd/EditFormFieldHandler';\nimport MoveFormFieldHandler from './cmd/MoveFormFieldHandler';\nimport RemoveFormFieldHandler from './cmd/RemoveFormFieldHandler';\nimport UpdateIdClaimHandler from './cmd/UpdateIdClaimHandler';\nimport UpdateKeyClaimHandler from './cmd/UpdateKeyClaimHandler';\n\nimport { isObject } from 'min-dash';\n\n\nexport default class Modeling {\n constructor(commandStack, eventBus, formEditor, formFieldRegistry, fieldFactory) {\n this._commandStack = commandStack;\n this._formEditor = formEditor;\n this._formFieldRegistry = formFieldRegistry;\n this._fieldFactory = fieldFactory;\n\n eventBus.on('form.init', () => {\n this.registerHandlers();\n });\n }\n\n registerHandlers() {\n Object.entries(this.getHandlers()).forEach(([ id, handler ]) => {\n this._commandStack.registerHandler(id, handler);\n });\n }\n\n getHandlers() {\n return {\n 'formField.add': AddFormFieldHandler,\n 'formField.edit': EditFormFieldHandler,\n 'formField.move': MoveFormFieldHandler,\n 'formField.remove': RemoveFormFieldHandler,\n 'id.updateClaim': UpdateIdClaimHandler,\n 'key.updateClaim': UpdateKeyClaimHandler\n };\n }\n\n addFormField(attrs, targetFormField, targetIndex) {\n\n const formField = this._fieldFactory.create(attrs);\n\n const context = {\n formField,\n targetFormField,\n targetIndex\n };\n\n this._commandStack.execute('formField.add', context);\n\n return formField;\n }\n\n editFormField(formField, properties, value) {\n if (!isObject(properties)) {\n properties = {\n [ properties ]: value\n };\n }\n\n const context = {\n formField,\n properties\n };\n\n this._commandStack.execute('formField.edit', context);\n }\n\n moveFormField(formField, sourceFormField, targetFormField, sourceIndex, targetIndex) {\n const context = {\n formField,\n sourceFormField,\n targetFormField,\n sourceIndex,\n targetIndex\n };\n\n this._commandStack.execute('formField.move', context);\n }\n\n removeFormField(formField, sourceFormField, sourceIndex) {\n const context = {\n formField,\n sourceFormField,\n sourceIndex\n };\n\n this._commandStack.execute('formField.remove', context);\n }\n\n claimId(formField, id) {\n const context = {\n formField,\n id,\n claiming: true\n };\n\n this._commandStack.execute('id.updateClaim', context);\n }\n\n unclaimId(formField, id) {\n const context = {\n formField,\n id,\n claiming: false\n };\n\n this._commandStack.execute('id.updateClaim', context);\n }\n\n claimKey(formField, key) {\n const context = {\n formField,\n key,\n claiming: true\n };\n\n this._commandStack.execute('key.updateClaim', context);\n }\n\n unclaimKey(formField, key) {\n const context = {\n formField,\n key,\n claiming: false\n };\n\n this._commandStack.execute('key.updateClaim', context);\n }\n}\n\nModeling.$inject = [\n 'commandStack',\n 'eventBus',\n 'formEditor',\n 'formFieldRegistry',\n 'fieldFactory'\n];","import {\n forEach,\n isFunction,\n isArray,\n isNumber,\n isObject\n} from 'min-dash';\n\n\nvar DEFAULT_PRIORITY = 1000;\n\n/**\n * A utility that can be used to plug-in into the command execution for\n * extension and/or validation.\n *\n * @param {EventBus} eventBus\n *\n * @example\n *\n * import inherits from 'inherits';\n *\n * import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n *\n * function CommandLogger(eventBus) {\n * CommandInterceptor.call(this, eventBus);\n *\n * this.preExecute(function(event) {\n * console.log('command pre-execute', event);\n * });\n * }\n *\n * inherits(CommandLogger, CommandInterceptor);\n *\n */\nexport default function CommandInterceptor(eventBus) {\n this._eventBus = eventBus;\n}\n\nCommandInterceptor.$inject = [ 'eventBus' ];\n\nfunction unwrapEvent(fn, that) {\n return function(event) {\n return fn.call(that || null, event.context, event.command, event);\n };\n}\n\n/**\n * Register an interceptor for a command execution\n *\n * @param {string|Array<string>} [events] list of commands to register on\n * @param {string} [hook] command hook, i.e. preExecute, executed to listen on\n * @param {number} [priority] the priority on which to hook into the execution\n * @param {Function} handlerFn interceptor to be invoked with (event)\n * @param {boolean} unwrap if true, unwrap the event and pass (context, command, event) to the\n * listener instead\n * @param {Object} [that] Pass context (`this`) to the handler function\n */\nCommandInterceptor.prototype.on = function(events, hook, priority, handlerFn, unwrap, that) {\n\n if (isFunction(hook) || isNumber(hook)) {\n that = unwrap;\n unwrap = handlerFn;\n handlerFn = priority;\n priority = hook;\n hook = null;\n }\n\n if (isFunction(priority)) {\n that = unwrap;\n unwrap = handlerFn;\n handlerFn = priority;\n priority = DEFAULT_PRIORITY;\n }\n\n if (isObject(unwrap)) {\n that = unwrap;\n unwrap = false;\n }\n\n if (!isFunction(handlerFn)) {\n throw new Error('handlerFn must be a function');\n }\n\n if (!isArray(events)) {\n events = [ events ];\n }\n\n var eventBus = this._eventBus;\n\n forEach(events, function(event) {\n\n // concat commandStack(.event)?(.hook)?\n var fullEvent = [ 'commandStack', event, hook ].filter(function(e) { return e; }).join('.');\n\n eventBus.on(fullEvent, priority, unwrap ? unwrapEvent(handlerFn, that) : handlerFn, that);\n });\n};\n\n\nvar hooks = [\n 'canExecute',\n 'preExecute',\n 'preExecuted',\n 'execute',\n 'executed',\n 'postExecute',\n 'postExecuted',\n 'revert',\n 'reverted'\n];\n\n/*\n * Install hook shortcuts\n *\n * This will generate the CommandInterceptor#(preExecute|...|reverted) methods\n * which will in term forward to CommandInterceptor#on.\n */\nforEach(hooks, function(hook) {\n\n /**\n * {canExecute|preExecute|preExecuted|execute|executed|postExecute|postExecuted|revert|reverted}\n *\n * A named hook for plugging into the command execution\n *\n * @param {string|Array<string>} [events] list of commands to register on\n * @param {number} [priority] the priority on which to hook into the execution\n * @param {Function} handlerFn interceptor to be invoked with (event)\n * @param {boolean} [unwrap=false] if true, unwrap the event and pass (context, command, event) to the\n * listener instead\n * @param {Object} [that] Pass context (`this`) to the handler function\n */\n CommandInterceptor.prototype[hook] = function(events, priority, handlerFn, unwrap, that) {\n\n if (isFunction(events) || isNumber(events)) {\n that = unwrap;\n unwrap = handlerFn;\n handlerFn = priority;\n priority = events;\n events = null;\n }\n\n this.on(events, hook, priority, handlerFn, unwrap, that);\n };\n});\n","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default class IdBehavior extends CommandInterceptor {\n constructor(eventBus, modeling) {\n super(eventBus);\n\n // @ts-ignore-next-line\n this.preExecute('formField.remove', function(context) {\n const { formField } = context;\n\n const { id } = formField;\n\n modeling.unclaimId(formField, id);\n }, true);\n\n // @ts-ignore-next-line\n this.preExecute('formField.edit', function(context) {\n const {\n formField,\n properties\n } = context;\n\n if ('id' in properties) {\n modeling.unclaimId(formField, formField.id);\n\n modeling.claimId(formField, properties.id);\n }\n }, true);\n }\n}\n\nIdBehavior.$inject = [ 'eventBus', 'modeling' ];","import CommandInterceptor from 'diagram-js/lib/command/CommandInterceptor';\n\nexport default class KeyBehavior extends CommandInterceptor {\n constructor(eventBus, modeling) {\n super(eventBus);\n\n // @ts-ignore-next-line\n this.preExecute('formField.remove', function(context) {\n const { formField } = context;\n\n const { key } = formField;\n\n if (key) {\n modeling.unclaimKey(formField, key);\n }\n }, true);\n\n // @ts-ignore-next-line\n this.preExecute('formField.edit', function(context) {\n const {\n formField,\n properties\n } = context;\n\n if ('key' in properties) {\n modeling.unclaimKey(formField, formField.key);\n\n modeling.claimKey(formField, properties.key);\n }\n }, true);\n }\n}\n\nKeyBehavior.$inject = [ 'eventBus', 'modeling' ];","import IdBehavior from './IdBehavior';\nimport KeyBehavior from './KeyBehavior';\n\nexport default {\n __init__: [\n 'idBehavior',\n 'keyBehavior'\n ],\n idBehavior: [ 'type', IdBehavior ],\n keyBehavior: [ 'type', KeyBehavior ]\n};\n","import {\n uniqueBy,\n isArray\n} from 'min-dash';\n\n\n/**\n * A service that offers un- and redoable execution of commands.\n *\n * The command stack is responsible for executing modeling actions\n * in a un- and redoable manner. To do this it delegates the actual\n * command execution to {@link CommandHandler}s.\n *\n * Command handlers provide {@link CommandHandler#execute(ctx)} and\n * {@link CommandHandler#revert(ctx)} methods to un- and redo a command\n * identified by a command context.\n *\n *\n * ## Life-Cycle events\n *\n * In the process the command stack fires a number of life-cycle events\n * that other components to participate in the command execution.\n *\n * * preExecute\n * * preExecuted\n * * execute\n * * executed\n * * postExecute\n * * postExecuted\n * * revert\n * * reverted\n *\n * A special event is used for validating, whether a command can be\n * performed prior to its execution.\n *\n * * canExecute\n *\n * Each of the events is fired as `commandStack.{eventName}` and\n * `commandStack.{commandName}.{eventName}`, respectively. This gives\n * components fine grained control on where to hook into.\n *\n * The event object fired transports `command`, the name of the\n * command and `context`, the command context.\n *\n *\n * ## Creating Command Handlers\n *\n * Command handlers should provide the {@link CommandHandler#execute(ctx)}\n * and {@link CommandHandler#revert(ctx)} methods to implement\n * redoing and undoing of a command.\n *\n * A command handler _must_ ensure undo is performed properly in order\n * not to break the undo chain. It must also return the shapes that\n * got changed during the `execute` and `revert` operations.\n *\n * Command handlers may execute other modeling operations (and thus\n * commands) in their `preExecute` and `postExecute` phases. The command\n * stack will properly group all commands together into a logical unit\n * that may be re- and undone atomically.\n *\n * Command handlers must not execute other commands from within their\n * core implementation (`execute`, `revert`).\n *\n *\n * ## Change Tracking\n *\n * During the execution of the CommandStack it will keep track of all\n * elements that have been touched during the command's execution.\n *\n * At the end of the CommandStack execution it will notify interested\n * components via an 'elements.changed' event with all the dirty\n * elements.\n *\n * The event can be picked up by components that are interested in the fact\n * that elements have been changed. One use case for this is updating\n * their graphical representation after moving / resizing or deletion.\n *\n * @see CommandHandler\n *\n * @param {EventBus} eventBus\n * @param {Injector} injector\n */\nexport default function CommandStack(eventBus, injector) {\n\n /**\n * A map of all registered command handlers.\n *\n * @type {Object}\n */\n this._handlerMap = {};\n\n /**\n * A stack containing all re/undoable actions on the diagram\n *\n * @type {Array<Object>}\n */\n this._stack = [];\n\n /**\n * The current index on the stack\n *\n * @type {number}\n */\n this._stackIdx = -1;\n\n /**\n * Current active commandStack execution\n *\n * @type {Object}\n * @property {Object[]} actions\n * @property {Object[]} dirty\n * @property { 'undo' | 'redo' | 'clear' | 'execute' | null } trigger the cause of the current excecution\n */\n this._currentExecution = {\n actions: [],\n dirty: [],\n trigger: null\n };\n\n\n this._injector = injector;\n this._eventBus = eventBus;\n\n this._uid = 1;\n\n eventBus.on([\n 'diagram.destroy',\n 'diagram.clear'\n ], function() {\n this.clear(false);\n }, this);\n}\n\nCommandStack.$inject = [ 'eventBus', 'injector' ];\n\n\n/**\n * Execute a command\n *\n * @param {string} command the command to execute\n * @param {Object} context the environment to execute the command in\n */\nCommandStack.prototype.execute = function(command, context) {\n if (!command) {\n throw new Error('command required');\n }\n\n this._currentExecution.trigger = 'execute';\n\n var action = { command: command, context: context };\n\n this._pushAction(action);\n this._internalExecute(action);\n this._popAction(action);\n};\n\n\n/**\n * Ask whether a given command can be executed.\n *\n * Implementors may hook into the mechanism on two ways:\n *\n * * in event listeners:\n *\n * Users may prevent the execution via an event listener.\n * It must prevent the default action for `commandStack.(<command>.)canExecute` events.\n *\n * * in command handlers:\n *\n * If the method {@link CommandHandler#canExecute} is implemented in a handler\n * it will be called to figure out whether the execution is allowed.\n *\n * @param {string} command the command to execute\n * @param {Object} context the environment to execute the command in\n *\n * @return {boolean} true if the command can be executed\n */\nCommandStack.prototype.canExecute = function(command, context) {\n\n var action = { command: command, context: context };\n\n var handler = this._getHandler(command);\n\n var result = this._fire(command, 'canExecute', action);\n\n // handler#canExecute will only be called if no listener\n // decided on a result already\n if (result === undefined) {\n if (!handler) {\n return false;\n }\n\n if (handler.canExecute) {\n result = handler.canExecute(context);\n }\n }\n\n return result;\n};\n\n\n/**\n * Clear the command stack, erasing all undo / redo history\n */\nCommandStack.prototype.clear = function(emit) {\n this._stack.length = 0;\n this._stackIdx = -1;\n\n if (emit !== false) {\n this._fire('changed', { trigger: 'clear' });\n }\n};\n\n\n/**\n * Undo last command(s)\n */\nCommandStack.prototype.undo = function() {\n var action = this._getUndoAction(),\n next;\n\n if (action) {\n this._currentExecution.trigger = 'undo';\n\n this._pushAction(action);\n\n while (action) {\n this._internalUndo(action);\n next = this._getUndoAction();\n\n if (!next || next.id !== action.id) {\n break;\n }\n\n action = next;\n }\n\n this._popAction();\n }\n};\n\n\n/**\n * Redo last command(s)\n */\nCommandStack.prototype.redo = function() {\n var action = this._getRedoAction(),\n next;\n\n if (action) {\n this._currentExecution.trigger = 'redo';\n\n this._pushAction(action);\n\n while (action) {\n this._internalExecute(action, true);\n next = this._getRedoAction();\n\n if (!next || next.id !== action.id) {\n break;\n }\n\n action = next;\n }\n\n this._popAction();\n }\n};\n\n\n/**\n * Register a handler instance with the command stack\n *\n * @param {string} command\n * @param {CommandHandler} handler\n */\nCommandStack.prototype.register = function(command, handler) {\n this._setHandler(command, handler);\n};\n\n\n/**\n * Register a handler type with the command stack\n * by instantiating it and injecting its dependencies.\n *\n * @param {string} command\n * @param {Function} a constructor for a {@link CommandHandler}\n */\nCommandStack.prototype.registerHandler = function(command, handlerCls) {\n\n if (!command || !handlerCls) {\n throw new Error('command and handlerCls must be defined');\n }\n\n var handler = this._injector.instantiate(handlerCls);\n this.register(command, handler);\n};\n\nCommandStack.prototype.canUndo = function() {\n return !!this._getUndoAction();\n};\n\nCommandStack.prototype.canRedo = function() {\n return !!this._getRedoAction();\n};\n\n// stack access //////////////////////\n\nCommandStack.prototype._getRedoAction = function() {\n return this._stack[this._stackIdx + 1];\n};\n\n\nCommandStack.prototype._getUndoAction = function() {\n return this._stack[this._stackIdx];\n};\n\n\n// internal functionality //////////////////////\n\nCommandStack.prototype._internalUndo = function(action) {\n var self = this;\n\n var command = action.command,\n context = action.context;\n\n var handler = this._getHandler(command);\n\n // guard against illegal nested command stack invocations\n this._atomicDo(function() {\n self._fire(command, 'revert', action);\n\n if (handler.revert) {\n self._markDirty(handler.revert(context));\n }\n\n self._revertedAction(action);\n\n self._fire(command, 'reverted', action);\n });\n};\n\n\nCommandStack.prototype._fire = function(command, qualifier, event) {\n if (arguments.length < 3) {\n event = qualifier;\n qualifier = null;\n }\n\n var names = qualifier ? [ command + '.' + qualifier, qualifier ] : [ command ],\n i, name, result;\n\n event = this._eventBus.createEvent(event);\n\n for (i = 0; (name = names[i]); i++) {\n result = this._eventBus.fire('commandStack.' + name, event);\n\n if (event.cancelBubble) {\n break;\n }\n }\n\n return result;\n};\n\nCommandStack.prototype._createId = function() {\n return this._uid++;\n};\n\nCommandStack.prototype._atomicDo = function(fn) {\n\n var execution = this._currentExecution;\n\n execution.atomic = true;\n\n try {\n fn();\n } finally {\n execution.atomic = false;\n }\n};\n\nCommandStack.prototype._internalExecute = function(action, redo) {\n var self = this;\n\n var command = action.command,\n context = action.context;\n\n var handler = this._getHandler(command);\n\n if (!handler) {\n throw new Error('no command handler registered for <' + command + '>');\n }\n\n this._pushAction(action);\n\n if (!redo) {\n this._fire(command, 'preExecute', action);\n\n if (handler.preExecute) {\n handler.preExecute(context);\n }\n\n this._fire(command, 'preExecuted', action);\n }\n\n // guard against illegal nested command stack invocations\n this._atomicDo(function() {\n\n self._fire(command, 'execute', action);\n\n if (handler.execute) {\n\n // actual execute + mark return results as dirty\n self._markDirty(handler.execute(context));\n }\n\n // log to stack\n self._executedAction(action, redo);\n\n self._fire(command, 'executed', action);\n });\n\n if (!redo) {\n this._fire(command, 'postExecute', action);\n\n if (handler.postExecute) {\n handler.postExecute(context);\n }\n\n this._fire(command, 'postExecuted', action);\n }\n\n this._popAction(action);\n};\n\n\nCommandStack.prototype._pushAction = function(action) {\n\n var execution = this._currentExecution,\n actions = execution.actions;\n\n var baseAction = actions[0];\n\n if (execution.atomic) {\n throw new Error('illegal invocation in <execute> or <revert> phase (action: ' + action.command + ')');\n }\n\n if (!action.id) {\n action.id = (baseAction && baseAction.id) || this._createId();\n }\n\n actions.push(action);\n};\n\n\nCommandStack.prototype._popAction = function() {\n var execution = this._currentExecution,\n trigger = execution.trigger,\n actions = execution.actions,\n dirty = execution.dirty;\n\n actions.pop();\n\n if (!actions.length) {\n this._eventBus.fire('elements.changed', { elements: uniqueBy('id', dirty.reverse()) });\n\n dirty.length = 0;\n\n this._fire('changed', { trigger: trigger });\n\n execution.trigger = null;\n }\n};\n\n\nCommandStack.prototype._markDirty = function(elements) {\n var execution = this._currentExecution;\n\n if (!elements) {\n return;\n }\n\n elements = isArray(elements) ? elements : [ elements ];\n\n execution.dirty = execution.dirty.concat(elements);\n};\n\n\nCommandStack.prototype._executedAction = function(action, redo) {\n var stackIdx = ++this._stackIdx;\n\n if (!redo) {\n this._stack.splice(stackIdx, this._stack.length, action);\n }\n};\n\n\nCommandStack.prototype._revertedAction = function(action) {\n this._stackIdx--;\n};\n\n\nCommandStack.prototype._getHandler = function(command) {\n return this._handlerMap[command];\n};\n\nCommandStack.prototype._setHandler = function(command, handler) {\n if (!command || !handler) {\n throw new Error('command and handler required');\n }\n\n if (this._handlerMap[command]) {\n throw new Error('overriding handler for command <' + command + '>');\n }\n\n this._handlerMap[command] = handler;\n};\n","import CommandStack from './CommandStack';\n\nexport default {\n commandStack: [ 'type', CommandStack ]\n};\n","import Modeling from './Modeling';\n\nimport behaviorModule from './behavior';\nimport commandModule from 'diagram-js/lib/command';\n\nexport default {\n __depends__: [\n behaviorModule,\n commandModule\n ],\n __init__: [ 'modeling' ],\n modeling: [ 'type', Modeling ]\n};\n","export default class Selection {\n constructor(eventBus) {\n this._eventBus = eventBus;\n this._selection = null;\n }\n\n get() {\n return this._selection;\n }\n\n set(selection) {\n if (this._selection === selection) {\n return;\n }\n\n this._selection = selection;\n\n this._eventBus.fire('selection.changed', {\n selection: this._selection\n });\n }\n\n toggle(selection) {\n const newSelection = this._selection === selection ? null : selection;\n\n this.set(newSelection);\n }\n\n clear() {\n this.set(null);\n }\n\n isSelected(formField) {\n return this._selection === formField;\n }\n}\n\nSelection.$inject = [ 'eventBus' ];","export default class SelectionBehavior {\n constructor(eventBus, selection) {\n eventBus.on([\n 'commandStack.formField.add.postExecuted',\n 'commandStack.formField.move.postExecuted'\n ], ({ context }) => {\n const { formField } = context;\n\n selection.set(formField);\n });\n\n eventBus.on('commandStack.formField.remove.postExecuted', ({ context }) => {\n const {\n sourceFormField,\n sourceIndex\n } = context;\n\n const formField = sourceFormField.components[ sourceIndex ] || sourceFormField.components[ sourceIndex - 1 ];\n\n if (formField) {\n selection.set(formField);\n } else {\n selection.clear();\n }\n });\n\n eventBus.on('formField.remove', ({ formField }) => {\n if (selection.isSelected(formField)) {\n selection.clear();\n }\n });\n }\n}\n\nSelectionBehavior.$inject = [ 'eventBus', 'selection' ];","import Selection from './Selection';\nimport SelectionBehavior from './SelectionBehavior';\n\nexport default {\n __init__: [ 'selection', 'selectionBehavior' ],\n selection: [ 'type', Selection ],\n selectionBehavior: [ 'type', SelectionBehavior ]\n};","import Ids from 'ids';\n\nimport {\n isString,\n set\n} from 'min-dash';\n\nimport {\n createInjector,\n clone,\n createFormContainer,\n schemaVersion\n} from '@bpmn-io/form-js-viewer';\n\nimport core from './core';\n\nimport EditorActionsModule from './features/editor-actions';\nimport KeyboardModule from './features/keyboard';\nimport ModelingModule from './features/modeling';\nimport SelectionModule from './features/selection';\n\nconst ids = new Ids([ 32, 36, 1 ]);\n\n/**\n * @typedef { import('./types').Injector } Injector\n * @typedef { import('./types').Module } Module\n * @typedef { import('./types').Schema } Schema\n *\n * @typedef { import('./types').FormEditorOptions } FormEditorOptions\n * @typedef { import('./types').FormEditorProperties } FormEditorProperties\n *\n * @typedef { {\n * properties: FormEditorProperties,\n * schema: Schema\n * } } State\n */\n\n/**\n * The form editor.\n */\nexport default class FormEditor {\n\n /**\n * @constructor\n * @param {FormEditorOptions} options\n */\n constructor(options = {}) {\n\n /**\n * @public\n * @type {String}\n */\n this._id = ids.next();\n\n /**\n * @private\n * @type {Element}\n */\n this._container = createFormContainer();\n\n this._container.setAttribute('input-handle-modified-keys', 'z,y');\n\n const {\n container,\n exporter,\n injector = this._createInjector(options, this._container),\n properties = {}\n } = options;\n\n /**\n * @private\n * @type {any}\n */\n this.exporter = exporter;\n\n /**\n * @private\n * @type {State}\n */\n this._state = {\n properties,\n schema: null\n };\n\n this.get = injector.get;\n\n this.invoke = injector.invoke;\n\n this.get('eventBus').fire('form.init');\n\n if (container) {\n this.attachTo(container);\n }\n }\n\n clear() {\n\n // clear form services\n this._emit('diagram.clear');\n\n // clear diagram services (e.g. EventBus)\n this._emit('form.clear');\n }\n\n destroy() {\n\n // destroy form services\n this.get('eventBus').fire('form.destroy');\n\n // destroy diagram services (e.g. EventBus)\n this.get('eventBus').fire('diagram.destroy');\n\n this._detach(false);\n }\n\n /**\n * @param {Schema} schema\n *\n * @return {Promise<{ warnings: Array<any> }>}\n */\n importSchema(schema) {\n return new Promise((resolve, reject) => {\n try {\n this.clear();\n\n const {\n schema: importedSchema,\n warnings\n } = this.get('importer').importSchema(schema);\n\n this._setState({\n schema: importedSchema\n });\n\n this._emit('import.done', { warnings });\n\n return resolve({ warnings });\n } catch (error) {\n this._emit('import.done', {\n error: error,\n warnings: error.warnings || []\n });\n\n return reject(error);\n }\n });\n }\n\n /**\n * @returns {Schema}\n */\n saveSchema() {\n return this.getSchema();\n }\n\n /**\n * @returns {Schema}\n */\n getSchema() {\n const { schema } = this._getState();\n\n return exportSchema(\n schema,\n this.exporter,\n schemaVersion\n );\n }\n\n /**\n * @param {Element|string} parentNode\n */\n attachTo(parentNode) {\n if (!parentNode) {\n throw new Error('parentNode required');\n }\n\n this.detach();\n\n if (isString(parentNode)) {\n parentNode = document.querySelector(parentNode);\n }\n\n const container = this._container;\n\n parentNode.appendChild(container);\n\n this._emit('attach');\n }\n\n detach() {\n this._detach();\n }\n\n /**\n * @internal\n *\n * @param {boolean} [emit]\n */\n _detach(emit = true) {\n const container = this._container,\n parentNode = container.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n if (emit) {\n this._emit('detach');\n }\n\n parentNode.removeChild(container);\n }\n\n /**\n * @param {any} property\n * @param {any} value\n */\n setProperty(property, value) {\n const properties = set(this._getState().properties, [ property ], value);\n\n this._setState({ properties });\n }\n\n /**\n * @param {string} type\n * @param {number} priority\n * @param {Function} handler\n */\n on(type, priority, handler) {\n this.get('eventBus').on(type, priority, handler);\n }\n\n /**\n * @param {string} type\n * @param {Function} handler\n */\n off(type, handler) {\n this.get('eventBus').off(type, handler);\n }\n\n /**\n * @internal\n *\n * @param {FormEditorOptions} options\n * @param {Element} container\n *\n * @returns {Injector}\n */\n _createInjector(options, container) {\n const {\n additionalModules = [],\n modules = this._getModules(),\n renderer = {}\n } = options;\n\n const config = {\n ...options,\n renderer: {\n ...renderer,\n container\n }\n };\n\n return createInjector([\n { config: [ 'value', config ] },\n { formEditor: [ 'value', this ] },\n core,\n ...modules,\n ...additionalModules\n ]);\n }\n\n /**\n * @internal\n */\n _emit(type, data) {\n this.get('eventBus').fire(type, data);\n }\n\n /**\n * @internal\n */\n _getState() {\n return this._state;\n }\n\n /**\n * @internal\n */\n _setState(state) {\n this._state = {\n ...this._state,\n ...state\n };\n\n this._emit('changed', this._getState());\n }\n\n /**\n * @internal\n */\n _getModules() {\n return [\n ModelingModule,\n EditorActionsModule,\n KeyboardModule,\n SelectionModule\n ];\n }\n\n}\n\n// helpers //////////\n\nexport function exportSchema(schema, exporter, schemaVersion) {\n\n const exportDetails = exporter ? {\n exporter\n } : {};\n\n const cleanedSchema = clone(schema, (name, value) => {\n if ([ '_parent', '_path' ].includes(name)) {\n return undefined;\n }\n\n return value;\n });\n\n return {\n ...cleanedSchema,\n ...exportDetails,\n schemaVersion\n };\n}","import FormEditor from './FormEditor';\r\n\r\nimport { schemaVersion } from '@bpmn-io/form-js-viewer';\r\n\r\nexport {\r\n FormEditor,\r\n schemaVersion\r\n};\r\n\r\n/**\r\n * @typedef { import('./types').CreateFormEditorOptions } CreateFormEditorOptions\r\n */\r\n\r\n/**\r\n * Create a form editor.\r\n *\r\n * @param {CreateFormEditorOptions} options\r\n *\r\n * @return {Promise<FormEditor>}\r\n */\r\nexport function createFormEditor(options) {\r\n const {\r\n schema,\r\n ...rest\r\n } = options;\r\n\r\n const formEditor = new FormEditor(rest);\r\n\r\n return formEditor.importSchema(schema).then(() => {\r\n return formEditor;\r\n });\r\n}"],"names":["FN_REF","DEFAULT_PRIORITY","slice","Array","prototype","EventBus","_listeners","on","_destroy","events","priority","callback","that","isArray","isFunction","isNumber","Error","actualCallback","bind","self","forEach","e","_addListener","next","once","event","wrappedCallback","__isTomb","result","apply","arguments","off","_removeListener","createEvent","data","InternalEvent","init","fire","type","firstListener","returnValue","args","call","originalType","_invokeListeners","undefined","defaultPrevented","handleError","error","listener","cancelBubble","_invokeListener","invokeFunction","stopPropagation","preventDefault","console","newListener","_getListeners","previousListener","_setListeners","name","nextListener","listenerCallback","assign","fn","DebounceFactory","config","timeout","debounce","$inject","FieldFactory","constructor","formFieldRegistry","formFields","_formFieldRegistry","_formFields","create","attrs","applyDefaults","id","key","fieldDefinition","get","_ids","assigned","_keys","labelAttrs","label","field","_ensureId","keyed","_ensureKey","claim","prefix","nextPrefixed","FormFieldRegistry","BaseFieldRegistry","updateId","formField","newId","_validateId","_eventBus","remove","add","component","components","_parent","Importer","fieldFactory","_fieldFactory","importSchema","schema","warnings","importedSchema","importFormField","clone","err","fieldAttrs","parentId","index","parent","path","_path","importFormFields","map","importer","DragAndDropContext","createContext","drake","getService","strict","FormEditorContext","useContext","_extends","iconsByType","button","ButtonIcon","checkbox","CheckboxIcon","columns","ColumnsIcon","number","NumberIcon","radio","RadioIcon","select","SelectIcon","text","TextIcon","textfield","TextfieldIcon","default","FormIcon","types","Palette","props","_jsxs","_jsx","Icon","arrayAdd","array","item","copy","splice","arrayRemove","prefixId","textToLabel","length","substring","INPUTS","CheckboxInput","onChange","value","handleChange","target","checked","usePrevious","ref","useRef","useEffect","current","useDebounce","dependencies","useService","useMemo","flush","NumberInput","max","min","onInput","_onInput","validity","valid","parseInt","Select","options","option","Textarea","rows","TextInput","validate","prevValue","cachedValue","setCachedValue","useState","setError","classes","push","join","CheckboxInputEntry","editField","NumberInputEntry","SelectEntry","description","TextareaEntry","TextInputEntry","CollapsibleEntry","children","removeEntry","collapsed","setCollapsed","toggleCollapsed","Group","hasEntries","open","setOpen","toggleOpen","addEntry","ActionEntry","ColumnsEntry","Default","DescriptionEntry","DefaultValueEntry","defaultValue","values","parseStringToBoolean","parseBooleanToString","DisabledEntry","IdEntry","isUndefined","validateId","SPACE_REGEX","QNAME_REGEX","ID_REGEX","idValue","containsSpace","test","KeyEntry","LabelEntry","TextEntry","ValueEntry","set","GeneralGroup","entries","includes","ValidationGroup","ValuesGroup","entry","labelsByType","getGroups","groups","PropertiesPanel","eventBus","onFocus","onBlur","ContextPad","Empty","Element","formEditor","modeling","selection","scrollIntoView","elementBounds","getBoundingClientRect","containerBounds","_container","top","bottom","onClick","toggle","class","split","isSelected","onRemove","parentField","getFormFieldIndex","removeFormField","Children","FormEditor","injector","_getState","selectedFormField","setSelection","handleSelectionChanged","setDrake","dragAndDropContext","createDragulaInstance","dragulaInstance","dragula","isContainer","el","classList","contains","accepts","slideFactorX","slideFactorY","source","sibling","targetFormField","dataset","siblingFormField","targetIndex","fieldType","addFormField","sourceFormField","sourceIndex","moveFormField","onDetach","destroy","onAttach","formRenderContext","formContext","Map","errors","properties","readOnly","formId","_id","onSubmit","useCallback","onReset","editFormField","fieldFormIndex","CreatePreview","handleCloned","original","innerHTML","render","Renderer","renderConfig","container","compact","App","state","setState","formEditorContext","newState","__init__","FormFields","renderer","__depends__","importModule","renderModule","NOT_REGISTERED_ERROR","IS_REGISTERED_ERROR","EditorActions","_actions","_registerDefaultActions","editorActions","commandStack","zoomScroll","copyPaste","canvas","rules","keyboardMove","keyboardMoveSelection","register","undo","redo","selectedElements","paste","opts","stepZoom","zoom","allowed","elements","removableElements","removeElements","moveCanvas","moveSelection","direction","accelerated","trigger","action","actions","_registerAction","isRegistered","unregister","getActions","Object","keys","message","FormEditorActions","EditorActionsModule","hasModifier","ctrlKey","metaKey","shiftKey","altKey","isCmd","isKey","indexOf","keyCode","isShift","KEYDOWN_EVENT","KEYUP_EVENT","HANDLE_MODIFIER_ATTRIBUTE","Keyboard","_config","_keydownHandler","_keyupHandler","_fire","unbind","bindTo","_keyHandler","eventBusResult","_isEventIgnored","context","keyEvent","isInput","_isModifiedKeyIgnored","allowedModifiers","_getAllowedModifiers","element","modifierContainer","domClosest","_node","getAttribute","node","domEvent","getBinding","addListener","removeListener","domMatches","contentEditable","LOW_PRIORITY","KEYCODE_C","KEYCODE_V","KEYCODE_Y","KEYCODE_Z","KEYS_COPY","KEYS_PASTE","KEYS_REDO","KEYS_UNDO","KeyboardBindings","keyboard","registerBindings","keyboardBindings","FormEditorKeyboardBindings","KeyboardModule","updatePath","AddFormFieldHandler","_formEditor","execute","targetPath","_setState","revert","EditFormFieldHandler","oldProperties","property","MoveFormFieldHandler","sourcePath","arrayMove","RemoveFormFieldHandler","UpdateIdClaimHandler","claiming","unclaim","UpdateKeyClaimHandler","Modeling","_commandStack","registerHandlers","getHandlers","handler","registerHandler","isObject","claimId","unclaimId","claimKey","unclaimKey","CommandInterceptor","unwrapEvent","command","hook","handlerFn","unwrap","fullEvent","filter","hooks","IdBehavior","preExecute","KeyBehavior","idBehavior","keyBehavior","CommandStack","_handlerMap","_stack","_stackIdx","_currentExecution","dirty","_injector","_uid","clear","_pushAction","_internalExecute","_popAction","canExecute","_getHandler","emit","_getUndoAction","_internalUndo","_getRedoAction","_setHandler","handlerCls","instantiate","canUndo","canRedo","_atomicDo","_markDirty","_revertedAction","qualifier","names","i","_createId","execution","atomic","_executedAction","postExecute","baseAction","pop","uniqueBy","reverse","concat","stackIdx","behaviorModule","commandModule","Selection","_selection","newSelection","SelectionBehavior","selectionBehavior","ids","Ids","createFormContainer","setAttribute","exporter","_createInjector","_state","invoke","attachTo","_emit","_detach","Promise","resolve","reject","saveSchema","getSchema","exportSchema","schemaVersion","parentNode","detach","isString","document","querySelector","appendChild","removeChild","setProperty","additionalModules","modules","_getModules","createInjector","core","ModelingModule","SelectionModule","exportDetails","cleanedSchema","createFormEditor","rest","then"],"mappings":";;;;;;;;;;;;AAQA,IAAIA,MAAM,GAAG,MAAb;AAEA,IAAIC,kBAAgB,GAAG,IAAvB;AAEA,IAAIC,KAAK,GAAGC,KAAK,CAACC,SAAN,CAAgBF,KAA5B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASG,QAAT,GAAoB;AACjC,OAAKC,UAAL,GAAkB,EAAlB,CADiC;AAIjC;;AACA,OAAKC,EAAL,CAAQ,iBAAR,EAA2B,CAA3B,EAA8B,KAAKC,QAAnC,EAA6C,IAA7C;AACD;AAGD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAH,QAAQ,CAACD,SAAT,CAAmBG,EAAnB,GAAwB,UAASE,MAAT,EAAiBC,QAAjB,EAA2BC,QAA3B,EAAqCC,IAArC,EAA2C;AAEjEH,EAAAA,MAAM,GAAGI,OAAO,CAACJ,MAAD,CAAP,GAAkBA,MAAlB,GAA2B,CAAEA,MAAF,CAApC;;AAEA,MAAIK,UAAU,CAACJ,QAAD,CAAd,EAA0B;AACxBE,IAAAA,IAAI,GAAGD,QAAP;AACAA,IAAAA,QAAQ,GAAGD,QAAX;AACAA,IAAAA,QAAQ,GAAGT,kBAAX;AACD;;AAED,MAAI,CAACc,QAAQ,CAACL,QAAD,CAAb,EAAyB;AACvB,UAAM,IAAIM,KAAJ,CAAU,2BAAV,CAAN;AACD;;AAED,MAAIC,cAAc,GAAGN,QAArB;;AAEA,MAAIC,IAAJ,EAAU;AACRK,IAAAA,cAAc,GAAGC,IAAI,CAACP,QAAD,EAAWC,IAAX,CAArB,CADQ;AAIR;AACA;;AACAK,IAAAA,cAAc,CAACjB,MAAD,CAAd,GAAyBW,QAAQ,CAACX,MAAD,CAAR,IAAoBW,QAA7C;AACD;;AAED,MAAIQ,IAAI,GAAG,IAAX;AAEAV,EAAAA,MAAM,CAACW,OAAP,CAAe,UAASC,CAAT,EAAY;AACzBF,IAAAA,IAAI,CAACG,YAAL,CAAkBD,CAAlB,EAAqB;AACnBX,MAAAA,QAAQ,EAAEA,QADS;AAEnBC,MAAAA,QAAQ,EAAEM,cAFS;AAGnBM,MAAAA,IAAI,EAAE;AAHa,KAArB;AAKD,GAND;AAOD,CAlCD;AAqCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAlB,QAAQ,CAACD,SAAT,CAAmBoB,IAAnB,GAA0B,UAASC,KAAT,EAAgBf,QAAhB,EAA0BC,QAA1B,EAAoCC,IAApC,EAA0C;AAClE,MAAIO,IAAI,GAAG,IAAX;;AAEA,MAAIL,UAAU,CAACJ,QAAD,CAAd,EAA0B;AACxBE,IAAAA,IAAI,GAAGD,QAAP;AACAA,IAAAA,QAAQ,GAAGD,QAAX;AACAA,IAAAA,QAAQ,GAAGT,kBAAX;AACD;;AAED,MAAI,CAACc,QAAQ,CAACL,QAAD,CAAb,EAAyB;AACvB,UAAM,IAAIM,KAAJ,CAAU,2BAAV,CAAN;AACD;;AAED,WAASU,eAAT,GAA2B;AACzBA,IAAAA,eAAe,CAACC,QAAhB,GAA2B,IAA3B;AAEA,QAAIC,MAAM,GAAGjB,QAAQ,CAACkB,KAAT,CAAejB,IAAf,EAAqBkB,SAArB,CAAb;AAEAX,IAAAA,IAAI,CAACY,GAAL,CAASN,KAAT,EAAgBC,eAAhB;AAEA,WAAOE,MAAP;AACD,GArBiE;AAwBlE;AACA;;;AACAF,EAAAA,eAAe,CAAC1B,MAAD,CAAf,GAA0BW,QAA1B;AAEA,OAAKJ,EAAL,CAAQkB,KAAR,EAAef,QAAf,EAAyBgB,eAAzB;AACD,CA7BD;AAgCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACArB,QAAQ,CAACD,SAAT,CAAmB2B,GAAnB,GAAyB,UAAStB,MAAT,EAAiBE,QAAjB,EAA2B;AAElDF,EAAAA,MAAM,GAAGI,OAAO,CAACJ,MAAD,CAAP,GAAkBA,MAAlB,GAA2B,CAAEA,MAAF,CAApC;AAEA,MAAIU,IAAI,GAAG,IAAX;AAEAV,EAAAA,MAAM,CAACW,OAAP,CAAe,UAASK,KAAT,EAAgB;AAC7BN,IAAAA,IAAI,CAACa,eAAL,CAAqBP,KAArB,EAA4Bd,QAA5B;AACD,GAFD;AAID,CAVD;AAaA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAN,QAAQ,CAACD,SAAT,CAAmB6B,WAAnB,GAAiC,UAASC,IAAT,EAAe;AAC9C,MAAIT,KAAK,GAAG,IAAIU,aAAJ,EAAZ;AAEAV,EAAAA,KAAK,CAACW,IAAN,CAAWF,IAAX;AAEA,SAAOT,KAAP;AACD,CAND;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACApB,QAAQ,CAACD,SAAT,CAAmBiC,IAAnB,GAA0B,UAASC,IAAT,EAAeJ,IAAf,EAAqB;AAC7C,MAAIT,KAAJ,EACIc,aADJ,EAEIC,WAFJ,EAGIC,IAHJ;AAKAA,EAAAA,IAAI,GAAGvC,KAAK,CAACwC,IAAN,CAAWZ,SAAX,CAAP;;AAEA,MAAI,OAAOQ,IAAP,KAAgB,QAApB,EAA8B;AAC5BJ,IAAAA,IAAI,GAAGI,IAAP;AACAA,IAAAA,IAAI,GAAGJ,IAAI,CAACI,IAAZ;AACD;;AAED,MAAI,CAACA,IAAL,EAAW;AACT,UAAM,IAAItB,KAAJ,CAAU,yBAAV,CAAN;AACD;;AAEDuB,EAAAA,aAAa,GAAG,KAAKjC,UAAL,CAAgBgC,IAAhB,CAAhB;;AAEA,MAAI,CAACC,aAAL,EAAoB;AAClB;AACD,GArB4C;AAwB7C;;;AACA,MAAIL,IAAI,YAAYC,aAApB,EAAmC;AAEjC;AACAV,IAAAA,KAAK,GAAGS,IAAR;AACD,GAJD,MAIO;AACLT,IAAAA,KAAK,GAAG,KAAKQ,WAAL,CAAiBC,IAAjB,CAAR;AACD,GA/B4C;;;AAkC7CO,EAAAA,IAAI,CAAC,CAAD,CAAJ,GAAUhB,KAAV,CAlC6C;;AAqC7C,MAAIkB,YAAY,GAAGlB,KAAK,CAACa,IAAzB,CArC6C;;AAwC7C,MAAIA,IAAI,KAAKK,YAAb,EAA2B;AACzBlB,IAAAA,KAAK,CAACa,IAAN,GAAaA,IAAb;AACD;;AAED,MAAI;AACFE,IAAAA,WAAW,GAAG,KAAKI,gBAAL,CAAsBnB,KAAtB,EAA6BgB,IAA7B,EAAmCF,aAAnC,CAAd;AACD,GAFD,SAEU;AAER;AACA,QAAID,IAAI,KAAKK,YAAb,EAA2B;AACzBlB,MAAAA,KAAK,CAACa,IAAN,GAAaK,YAAb;AACD;AACF,GApD4C;AAuD7C;;;AACA,MAAIH,WAAW,KAAKK,SAAhB,IAA6BpB,KAAK,CAACqB,gBAAvC,EAAyD;AACvDN,IAAAA,WAAW,GAAG,KAAd;AACD;;AAED,SAAOA,WAAP;AACD,CA7DD;;AAgEAnC,QAAQ,CAACD,SAAT,CAAmB2C,WAAnB,GAAiC,UAASC,KAAT,EAAgB;AAC/C,SAAO,KAAKX,IAAL,CAAU,OAAV,EAAmB;AAAEW,IAAAA,KAAK,EAAEA;AAAT,GAAnB,MAAyC,KAAhD;AACD,CAFD;;AAKA3C,QAAQ,CAACD,SAAT,CAAmBI,QAAnB,GAA8B,YAAW;AACvC,OAAKF,UAAL,GAAkB,EAAlB;AACD,CAFD;;AAIAD,QAAQ,CAACD,SAAT,CAAmBwC,gBAAnB,GAAsC,UAASnB,KAAT,EAAgBgB,IAAhB,EAAsBQ,QAAtB,EAAgC;AAEpE,MAAIT,WAAJ;;AAEA,SAAOS,QAAP,EAAiB;AAEf;AACA,QAAIxB,KAAK,CAACyB,YAAV,EAAwB;AACtB;AACD;;AAEDV,IAAAA,WAAW,GAAG,KAAKW,eAAL,CAAqB1B,KAArB,EAA4BgB,IAA5B,EAAkCQ,QAAlC,CAAd;AAEAA,IAAAA,QAAQ,GAAGA,QAAQ,CAAC1B,IAApB;AACD;;AAED,SAAOiB,WAAP;AACD,CAjBD;;AAmBAnC,QAAQ,CAACD,SAAT,CAAmB+C,eAAnB,GAAqC,UAAS1B,KAAT,EAAgBgB,IAAhB,EAAsBQ,QAAtB,EAAgC;AAEnE,MAAIT,WAAJ;;AAEA,MAAIS,QAAQ,CAACtC,QAAT,CAAkBgB,QAAtB,EAAgC;AAC9B,WAAOa,WAAP;AACD;;AAED,MAAI;AAEF;AACAA,IAAAA,WAAW,GAAGY,cAAc,CAACH,QAAQ,CAACtC,QAAV,EAAoB8B,IAApB,CAA5B,CAHE;;AAMF,QAAID,WAAW,KAAKK,SAApB,EAA+B;AAC7BpB,MAAAA,KAAK,CAACe,WAAN,GAAoBA,WAApB;AACAf,MAAAA,KAAK,CAAC4B,eAAN;AACD,KATC;;;AAYF,QAAIb,WAAW,KAAK,KAApB,EAA2B;AACzBf,MAAAA,KAAK,CAAC6B,cAAN;AACD;AACF,GAfD,CAeE,OAAON,KAAP,EAAc;AACd,QAAI,CAAC,KAAKD,WAAL,CAAiBC,KAAjB,CAAL,EAA8B;AAC5BO,MAAAA,OAAO,CAACP,KAAR,CAAc,mCAAd,EAAmDA,KAAnD;AAEA,YAAMA,KAAN;AACD;AACF;;AAED,SAAOR,WAAP;AACD,CAhCD;AAkCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAnC,QAAQ,CAACD,SAAT,CAAmBkB,YAAnB,GAAkC,UAASG,KAAT,EAAgB+B,WAAhB,EAA6B;AAE7D,MAAIP,QAAQ,GAAG,KAAKQ,aAAL,CAAmBhC,KAAnB,CAAf;AAAA,MACIiC,gBADJ,CAF6D;;;AAM7D,MAAI,CAACT,QAAL,EAAe;AACb,SAAKU,aAAL,CAAmBlC,KAAnB,EAA0B+B,WAA1B;;AAEA;AACD,GAV4D;AAa7D;;;AACA,SAAOP,QAAP,EAAiB;AAEf,QAAIA,QAAQ,CAACvC,QAAT,GAAoB8C,WAAW,CAAC9C,QAApC,EAA8C;AAE5C8C,MAAAA,WAAW,CAACjC,IAAZ,GAAmB0B,QAAnB;;AAEA,UAAIS,gBAAJ,EAAsB;AACpBA,QAAAA,gBAAgB,CAACnC,IAAjB,GAAwBiC,WAAxB;AACD,OAFD,MAEO;AACL,aAAKG,aAAL,CAAmBlC,KAAnB,EAA0B+B,WAA1B;AACD;;AAED;AACD;;AAEDE,IAAAA,gBAAgB,GAAGT,QAAnB;AACAA,IAAAA,QAAQ,GAAGA,QAAQ,CAAC1B,IAApB;AACD,GA/B4D;;;AAkC7DmC,EAAAA,gBAAgB,CAACnC,IAAjB,GAAwBiC,WAAxB;AACD,CAnCD;;AAsCAnD,QAAQ,CAACD,SAAT,CAAmBqD,aAAnB,GAAmC,UAASG,IAAT,EAAe;AAChD,SAAO,KAAKtD,UAAL,CAAgBsD,IAAhB,CAAP;AACD,CAFD;;AAIAvD,QAAQ,CAACD,SAAT,CAAmBuD,aAAnB,GAAmC,UAASC,IAAT,EAAeX,QAAf,EAAyB;AAC1D,OAAK3C,UAAL,CAAgBsD,IAAhB,IAAwBX,QAAxB;AACD,CAFD;;AAIA5C,QAAQ,CAACD,SAAT,CAAmB4B,eAAnB,GAAqC,UAASP,KAAT,EAAgBd,QAAhB,EAA0B;AAE7D,MAAIsC,QAAQ,GAAG,KAAKQ,aAAL,CAAmBhC,KAAnB,CAAf;AAAA,MACIoC,YADJ;AAAA,MAEIH,gBAFJ;AAAA,MAGII,gBAHJ;;AAKA,MAAI,CAACnD,QAAL,EAAe;AAEb;AACA,SAAKgD,aAAL,CAAmBlC,KAAnB,EAA0B,IAA1B;;AAEA;AACD;;AAED,SAAOwB,QAAP,EAAiB;AAEfY,IAAAA,YAAY,GAAGZ,QAAQ,CAAC1B,IAAxB;AAEAuC,IAAAA,gBAAgB,GAAGb,QAAQ,CAACtC,QAA5B;;AAEA,QAAImD,gBAAgB,KAAKnD,QAArB,IAAiCmD,gBAAgB,CAAC9D,MAAD,CAAhB,KAA6BW,QAAlE,EAA4E;AAC1E,UAAI+C,gBAAJ,EAAsB;AACpBA,QAAAA,gBAAgB,CAACnC,IAAjB,GAAwBsC,YAAxB;AACD,OAFD,MAEO;AAEL;AACA,aAAKF,aAAL,CAAmBlC,KAAnB,EAA0BoC,YAA1B;AACD;AACF;;AAEDH,IAAAA,gBAAgB,GAAGT,QAAnB;AACAA,IAAAA,QAAQ,GAAGY,YAAX;AACD;AACF,CAlCD;AAoCA;AACA;AACA;;;AACA,SAAS1B,aAAT,GAAyB;;AAEzBA,aAAa,CAAC/B,SAAd,CAAwBiD,eAAxB,GAA0C,YAAW;AACnD,OAAKH,YAAL,GAAoB,IAApB;AACD,CAFD;;AAIAf,aAAa,CAAC/B,SAAd,CAAwBkD,cAAxB,GAAyC,YAAW;AAClD,OAAKR,gBAAL,GAAwB,IAAxB;AACD,CAFD;;AAIAX,aAAa,CAAC/B,SAAd,CAAwBgC,IAAxB,GAA+B,UAASF,IAAT,EAAe;AAC5C6B,EAAAA,MAAM,CAAC,IAAD,EAAO7B,IAAI,IAAI,EAAf,CAAN;AACD,CAFD;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASkB,cAAT,CAAwBY,EAAxB,EAA4BvB,IAA5B,EAAkC;AAChC,SAAOuB,EAAE,CAACnC,KAAH,CAAS,IAAT,EAAeY,IAAf,CAAP;AACD;;ACrgBD;AACA;AACA;AACA;AACA;;AACe,SAASwB,eAAT,CAAyBC,MAAM,GAAC,IAAhC,EAAsC;AAEnD,QAAMC,OAAO,GAAG,OAAOD,MAAP,KAAkB,QAAlB,GAA6BA,MAA7B,GAAsCA,MAAM,GAAG,GAAH,GAAS,CAArE;;AAEA,MAAIC,OAAJ,EAAa;AACX,WAAOH,EAAE,IAAII,QAAQ,CAACJ,EAAD,EAAKG,OAAL,CAArB;AACD,GAFD,MAEO;AACL,WAAOH,EAAE,IAAIA,EAAb;AACD;AACF;AAEDC,eAAe,CAACI,OAAhB,GAA0B,CAAE,iBAAF,CAA1B;;AClBe,MAAMC,YAAN,CAAmB;AAEhC;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,WAAW,CAACC,iBAAD,EAAoBC,UAApB,EAAgC;AACzC,SAAKC,kBAAL,GAA0BF,iBAA1B;AACA,SAAKG,WAAL,GAAmBF,UAAnB;AACD;;AAEDG,EAAAA,MAAM,CAACC,KAAD,EAAQC,aAAa,GAAG,IAAxB,EAA8B;AAElC,UAAM;AACJC,MAAAA,EADI;AAEJC,MAAAA,GAFI;AAGJ1C,MAAAA;AAHI,QAIFuC,KAJJ;;AAMA,UAAMI,eAAe,GAAG,KAAKN,WAAL,CAAiBO,GAAjB,CAAqB5C,IAArB,CAAxB;;AAEA,QAAI,CAAC2C,eAAL,EAAsB;AACpB,YAAM,IAAIjE,KAAJ,CAAW,uBAAuBsB,IAAM,iBAAxC,CAAN;AACD;;AAED,QAAIyC,EAAE,IAAI,KAAKL,kBAAL,CAAwBS,IAAxB,CAA6BC,QAA7B,CAAsCL,EAAtC,CAAV,EAAqD;AACnD,YAAM,IAAI/D,KAAJ,CAAW,OAAO+D,EAAI,oBAAtB,CAAN;AACD;;AAED,QAAIC,GAAG,IAAI,KAAKN,kBAAL,CAAwBW,KAAxB,CAA8BD,QAA9B,CAAuCJ,GAAvC,CAAX,EAAwD;AACtD,YAAM,IAAIhE,KAAJ,CAAW,QAAQgE,GAAK,oBAAxB,CAAN;AACD;;AAED,UAAMM,UAAU,GAAGR,aAAa,IAAIG,eAAe,CAACM,KAAjC,GAAyC;AAC1DA,MAAAA,KAAK,EAAEN,eAAe,CAACM;AADmC,KAAzC,GAEf,EAFJ;AAIA,UAAMC,KAAK,GAAGP,eAAe,CAACL,MAAhB,CAAuB,EACnC,GAAGU,UADgC;AAEnC,SAAGT;AAFgC,KAAvB,CAAd;;AAKA,SAAKY,SAAL,CAAeD,KAAf;;AAEA,QAAIP,eAAe,CAACS,KAApB,EAA2B;AACzB,WAAKC,UAAL,CAAgBH,KAAhB,EAAuBV,aAAvB;AACD;;AAED,WAAOU,KAAP;AACD;;AAEDC,EAAAA,SAAS,CAACD,KAAD,EAAQ;AAEf,QAAIA,KAAK,CAACT,EAAV,EAAc;AACZ,WAAKL,kBAAL,CAAwBS,IAAxB,CAA6BS,KAA7B,CAAmCJ,KAAK,CAACT,EAAzC,EAA6CS,KAA7C;;AAEA;AACD;;AAED,QAAIK,MAAM,GAAG,OAAb;;AAEA,QAAIL,KAAK,CAAClD,IAAN,KAAe,SAAnB,EAA8B;AAC5BuD,MAAAA,MAAM,GAAG,MAAT;AACD;;AAEDL,IAAAA,KAAK,CAACT,EAAN,GAAW,KAAKL,kBAAL,CAAwBS,IAAxB,CAA6BW,YAA7B,CAA2C,GAAED,MAAO,GAApD,EAAwDL,KAAxD,CAAX;AACD;;AAEDG,EAAAA,UAAU,CAACH,KAAD,EAAQV,aAAR,EAAuB;AAE/B,QAAIU,KAAK,CAACR,GAAV,EAAe;AACb,WAAKN,kBAAL,CAAwBW,KAAxB,CAA8BO,KAA9B,CAAoCJ,KAAK,CAACR,GAA1C,EAA+CQ,KAA/C;;AAEA;AACD;;AAED,QAAIV,aAAJ,EAAmB;AACjB,UAAIe,MAAM,GAAG,OAAb;AAEAL,MAAAA,KAAK,CAACR,GAAN,GAAY,KAAKN,kBAAL,CAAwBW,KAAxB,CAA8BS,YAA9B,CAA4C,GAAED,MAAO,GAArD,EAAyDL,KAAzD,CAAZ;AACD;AACF;;AAnF+B;AAuFlClB,YAAY,CAACD,OAAb,GAAuB,CACrB,mBADqB,EAErB,YAFqB,CAAvB;;AClFe,MAAM0B,iBAAN,SAAgCC,mBAAhC,CAAkD;AAE/D;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,QAAQ,CAACC,SAAD,EAAYC,KAAZ,EAAmB;AAEzB,SAAKC,WAAL,CAAiBD,KAAjB;;AAEA,SAAKE,SAAL,CAAehE,IAAf,CAAoB,oBAApB,EAA0C;AACxC6D,MAAAA,SADwC;AAExCC,MAAAA,KAAK,EAAEA;AAFiC,KAA1C;;AAKA,SAAKG,MAAL,CAAYJ,SAAZ;AAEAA,IAAAA,SAAS,CAACnB,EAAV,GAAeoB,KAAf;AAEA,SAAKI,GAAL,CAASL,SAAT,EAbyB;AAgBzB;;AACA,QAAI,gBAAgBA,SAApB,EAA+B;AAC7B,WAAK,MAAMM,SAAX,IAAwBN,SAAS,CAACO,UAAlC,EAA8C;AAC5CD,QAAAA,SAAS,CAACE,OAAV,GAAoBP,KAApB;AACD;AACF;AAEF;AAGD;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACEC,EAAAA,WAAW,CAACrB,EAAD,EAAK;AACd,QAAI,CAACA,EAAL,EAAS;AACP,YAAM,IAAI/D,KAAJ,CAAU,2BAAV,CAAN;AACD;;AAED,QAAI,KAAKkE,GAAL,CAASH,EAAT,CAAJ,EAAkB;AAChB,YAAM,IAAI/D,KAAJ,CAAU,uBAAuB+D,EAAvB,GAA4B,gBAAtC,CAAN;AACD;AACF;;AAlD8D;;ACFlD,MAAM4B,QAAN,CAAe;AAE5B;AACF;AACA;AACA;AACA;AACEpC,EAAAA,WAAW,CAACC,iBAAD,EAAoBoC,YAApB,EAAkC;AAC3C,SAAKlC,kBAAL,GAA0BF,iBAA1B;AACA,SAAKqC,aAAL,GAAqBD,YAArB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACEE,EAAAA,YAAY,CAACC,MAAD,EAAS;AAEnB;AACA,UAAMC,QAAQ,GAAG,EAAjB;;AAEA,QAAI;AACF,YAAMC,cAAc,GAAG,KAAKC,eAAL,CAAqBC,KAAK,CAACJ,MAAD,CAA1B,CAAvB;AAEA,aAAO;AACLA,QAAAA,MAAM,EAAEE,cADH;AAELD,QAAAA;AAFK,OAAP;AAID,KAPD,CAOE,OAAOI,GAAP,EAAY;AACZA,MAAAA,GAAG,CAACJ,QAAJ,GAAeA,QAAf;AAEA,YAAMI,GAAN;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;AACEF,EAAAA,eAAe,CAACG,UAAD,EAAaC,QAAb,EAAuBC,KAAvB,EAA8B;AAC3C,UAAM;AACJd,MAAAA,UADI;AAEJ1B,MAAAA,EAFI;AAGJC,MAAAA;AAHI,QAIFqC,UAJJ;AAMA,QAAIG,MAAJ,EAAYC,IAAZ;;AAEA,QAAIH,QAAJ,EAAc;AACZE,MAAAA,MAAM,GAAG,KAAK9C,kBAAL,CAAwBQ,GAAxB,CAA4BoC,QAA5B,CAAT;AACD,KAX0C;;;AAc3C,QAAIvC,EAAE,IAAI,KAAKL,kBAAL,CAAwBS,IAAxB,CAA6BC,QAA7B,CAAsCL,EAAtC,CAAV,EAAqD;AACnD,YAAM,IAAI/D,KAAJ,CAAW,uBAAuB+D,EAAI,kBAAtC,CAAN;AACD,KAhB0C;;;AAmB3C,QAAIC,GAAG,IAAI,KAAKN,kBAAL,CAAwBW,KAAxB,CAA8BD,QAA9B,CAAuCJ,GAAvC,CAAX,EAAwD;AACtD,YAAM,IAAIhE,KAAJ,CAAW,wBAAwBgE,GAAK,kBAAxC,CAAN;AACD,KArB0C;;;AAwB3CyC,IAAAA,IAAI,GAAGD,MAAM,GAAG,CAAE,GAAGA,MAAM,CAACE,KAAZ,EAAmB,YAAnB,EAAiCH,KAAjC,CAAH,GAA8C,EAA3D;;AAEA,UAAM/B,KAAK,GAAG,KAAKqB,aAAL,CAAmBjC,MAAnB,CAA0B,EACtC,GAAGyC,UADmC;AAEtCK,MAAAA,KAAK,EAAED,IAF+B;AAGtCf,MAAAA,OAAO,EAAEc,MAAM,IAAIA,MAAM,CAACzC;AAHY,KAA1B,EAIX,KAJW,CAAd;;AAMA,SAAKL,kBAAL,CAAwB6B,GAAxB,CAA4Bf,KAA5B;;AAEA,QAAIiB,UAAJ,EAAgB;AACdjB,MAAAA,KAAK,CAACiB,UAAN,GAAmB,KAAKkB,gBAAL,CAAsBlB,UAAtB,EAAkCjB,KAAK,CAACT,EAAxC,CAAnB;AACD;;AAED,WAAOS,KAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;AACEmC,EAAAA,gBAAgB,CAAClB,UAAD,EAAaa,QAAb,EAAuB;AACrC,WAAOb,UAAU,CAACmB,GAAX,CAAe,CAACpB,SAAD,EAAYe,KAAZ,KAAsB;AAC1C,aAAO,KAAKL,eAAL,CAAqBV,SAArB,EAAgCc,QAAhC,EAA0CC,KAA1C,CAAP;AACD,KAFM,CAAP;AAGD;;AAzG2B;AA6G9BZ,QAAQ,CAACtC,OAAT,GAAmB,CAAE,mBAAF,EAAuB,cAAvB,CAAnB;;AC9GA,mBAAe;AACbwD,EAAAA,QAAQ,EAAE,CAAE,MAAF,EAAUlB,QAAV;AADG,CAAf;;ACAA,MAAMmB,kBAAkB,GAAGC,aAAa,CAAC;AACvCC,EAAAA,KAAK,EAAE;AADgC,CAAD,CAAxC;;ACAA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASC,UAAT,CAAoB3F,IAApB,EAA0B4F,MAA1B,EAAkC;;AAElC,MAAMC,iBAAiB,GAAGJ,aAAa,CAAC;AACtCE,EAAAA;AADsC,CAAD,CAAvC;;ACHe,qBAAS3F,IAAT,EAAe4F,MAAf,EAAuB;AACpC,QAAM;AACJD,IAAAA;AADI,MAEFG,UAAU,CAACD,iBAAD,CAFd;AAIA,SAAOF,UAAU,CAAC3F,IAAD,EAAO4F,MAAP,CAAjB;AACD;;ACbD,SAASG,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,iBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,CAAC,EAAE,kGAAkG;AACvG,CAAC,CAAC,CAAC;;ACbH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,mBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,CAAC,EAAE,2HAA2H;AAChI,CAAC,CAAC,CAAC;;ACZH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,eAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,CAAC,EAAE,IAAI;AACT,EAAE,CAAC,EAAE,IAAI;AACT,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,EAAE,EAAE,GAAG;AACT,CAAC,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,EAAE,CAAC,EAAE,IAAI;AACT,EAAE,CAAC,EAAE,IAAI;AACT,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,EAAE,EAAE,GAAG;AACT,CAAC,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AAC7C,EAAE,CAAC,EAAE,IAAI;AACT,EAAE,CAAC,EAAE,IAAI;AACT,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,GAAG;AACb,EAAE,EAAE,EAAE,GAAG;AACT,CAAC,CAAC,CAAC;;AC5BH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,kBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,CAAC,EAAE,6TAA6T;AAClU,CAAC,CAAC,CAAC;;ACbH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,iBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,CAAC,EAAE,wLAAwL;AAC7L,CAAC,CAAC,CAAC;;ACbH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,gBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,CAAC,EAAE,4LAA4L;AACjM,CAAC,CAAC,CAAC;;ACZH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,iBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,CAAC,EAAE,8JAA8J;AACnK,CAAC,CAAC,CAAC;;ACbH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,eAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,CAAC,EAAE,s8BAAs8B;AAC38B,CAAC,CAAC,CAAC;;ACZH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,oBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,CAAC,EAAE,0JAA0J;AAC/J,CAAC,CAAC,CAAC;;ACHI,MAAMC,WAAW,GAAG;AACzBC,EAAAA,MAAM,EAAEC,UADiB;AAEzBC,EAAAA,QAAQ,EAAEC,YAFe;AAGzBC,EAAAA,OAAO,EAAEC,WAHgB;AAIzBC,EAAAA,MAAM,EAAEC,UAJiB;AAKzBC,EAAAA,KAAK,EAAEC,SALkB;AAMzBC,EAAAA,MAAM,EAAEC,UANiB;AAOzBC,EAAAA,IAAI,EAAEC,QAPmB;AAQzBC,EAAAA,SAAS,EAAEC,aARc;AASzBC,EAAAA,OAAO,EAAEC;AATgB,CAApB;;ACRP,MAAMC,KAAK,GAAG,CACZ;AACElE,EAAAA,KAAK,EAAE,YADT;AAEEjD,EAAAA,IAAI,EAAE;AAFR,CADY,EAKZ;AACEiD,EAAAA,KAAK,EAAE,QADT;AAEEjD,EAAAA,IAAI,EAAE;AAFR,CALY,EASZ;AACEiD,EAAAA,KAAK,EAAE,UADT;AAEEjD,EAAAA,IAAI,EAAE;AAFR,CATY,EAaZ;AACEiD,EAAAA,KAAK,EAAE,OADT;AAEEjD,EAAAA,IAAI,EAAE;AAFR,CAbY,EAiBZ;AACEiD,EAAAA,KAAK,EAAE,QADT;AAEEjD,EAAAA,IAAI,EAAE;AAFR,CAjBY,EAqBZ;AACEiD,EAAAA,KAAK,EAAE,MADT;AAEEjD,EAAAA,IAAI,EAAE;AAFR,CArBY,EAyBZ;AACEiD,EAAAA,KAAK,EAAE,QADT;AAEEjD,EAAAA,IAAI,EAAE;AAFR,CAzBY,CAAd;AAgCe,SAASoH,OAAT,CAAiBC,KAAjB,EAAwB;AACrC,SAAOC;AAAK,IAAA,KAAK,EAAC,aAAX;AAAA,eACLA;AAAK,MAAA,KAAK,EAAC,oBAAX;AAAgC,MAAA,KAAK,EAAC,uBAAtC;AAAA,iBACEC;AAAM,QAAA,KAAK,EAAC,kBAAZ;AAAA;AAAA,QADF;AAAA,MADK,EAILA;AAAK,MAAA,KAAK,EAAC,mDAAX;AAAA,gBAEIJ,KAAK,CAAC7B,GAAN,CAAU,CAAC;AAAErC,QAAAA,KAAF;AAASjD,QAAAA;AAAT,OAAD,KAAqB;AAC7B,cAAMwH,IAAI,GAAGxB,WAAW,CAAEhG,IAAF,CAAxB;AAEA,eACEsH;AACE,UAAA,KAAK,EAAC,6CADR;AAEE,6BAAkBtH,IAFpB;AAGE,UAAA,KAAK,EAAI,YAAYiD,KAAO,UAH9B;AAAA,qBAMIuE,IAAI,GAAGD,IAAC,IAAD;AAAM,YAAA,KAAK,EAAC,wBAAZ;AAAqC,YAAA,KAAK,EAAC,IAA3C;AAAgD,YAAA,MAAM,EAAC,IAAvD;AAA4D,YAAA,OAAO,EAAC;AAApE,YAAH,GAAwF,IANhG,EAQEA;AAAM,YAAA,KAAK,EAAC,yCAAZ;AAAA,sBAAwDtE;AAAxD,YARF;AAAA,UADF;AAYD,OAfD;AAFJ,MAJK;AAAA,IAAP;AAyBD;;AC5DM,SAASwE,UAAT,CAAkBC,KAAlB,EAAyBzC,KAAzB,EAAgC0C,IAAhC,EAAsC;AAC3C,QAAMC,IAAI,GAAG,CAAE,GAAGF,KAAL,CAAb;AAEAE,EAAAA,IAAI,CAACC,MAAL,CAAY5C,KAAZ,EAAmB,CAAnB,EAAsB0C,IAAtB;AAEA,SAAOC,IAAP;AACD;AAEM,SAASE,aAAT,CAAqBJ,KAArB,EAA4BzC,KAA5B,EAAmC;AACxC,QAAM2C,IAAI,GAAG,CAAE,GAAGF,KAAL,CAAb;AAEAE,EAAAA,IAAI,CAACC,MAAL,CAAY5C,KAAZ,EAAmB,CAAnB;AAEA,SAAO2C,IAAP;AACD;AAEM,SAASG,QAAT,CAAkBtF,EAAlB,EAAsB;AAC3B,SAAQ,wBAAwBA,EAAI,EAApC;AACD;AAEM,SAAS1B,eAAT,CAAyBJ,QAAzB,EAAmC;AACxC,SAAQxB,KAAD,IAAW;AAChBA,IAAAA,KAAK,CAAC4B,eAAN;AAEAJ,IAAAA,QAAQ,CAACxB,KAAD,CAAR;AACD,GAJD;AAKD;AAEM,SAAS6I,WAAT,CAAqBnB,IAAI,GAAG,KAA5B,EAAmC;AACxC,MAAIA,IAAI,CAACoB,MAAL,GAAc,EAAlB,EAAsB;AACpB,WAAQ,GAAGpB,IAAI,CAACqB,SAAL,CAAe,CAAf,EAAkB,EAAlB,CAAuB,KAAlC;AACD;;AAED,SAAOrB,IAAP;AACD;AAEM,MAAMsB,MAAM,GAAG,CACpB,UADoB,EAEpB,QAFoB,EAGpB,OAHoB,EAIpB,QAJoB,EAKpB,WALoB,CAAf;;AClCQ,SAASC,aAAT,CAAuBf,KAAvB,EAA8B;AAC3C,QAAM;AACJ5E,IAAAA,EADI;AAEJQ,IAAAA,KAFI;AAGJoF,IAAAA,QAHI;AAIJC,IAAAA,KAAK,GAAG;AAJJ,MAKFjB,KALJ;;AAOA,QAAMkB,YAAY,GAAG,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAAgB;AACnCH,IAAAA,QAAQ,CAACG,MAAM,CAACC,OAAR,CAAR;AACD,GAFD;;AAIA,SACEnB;AAAK,IAAA,KAAK,EAAC,+BAAX;AAAA,eACEC;AAAO,MAAA,GAAG,EAAGQ,QAAQ,CAACtF,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,gBAAiEQ;AAAjE,MADF,EAEEsE;AACE,MAAA,EAAE,EAAGQ,QAAQ,CAACtF,EAAD,CADf;AAEE,MAAA,IAAI,EAAC,UAFP;AAGE,MAAA,KAAK,EAAC,4BAHR;AAIE,MAAA,QAAQ,EAAG8F,YAJb;AAKE,MAAA,OAAO,EAAGD;AALZ,MAFF;AAAA,IADF;AAWD;;ACnBc,SAASI,WAAT,CAAqBJ,KAArB,EAA4B;AACzC,QAAMK,GAAG,GAAGC,MAAM,EAAlB;AAEAC,EAAAA,SAAS,CAAC,MAAMF,GAAG,CAACG,OAAJ,GAAcR,KAArB,CAAT;AAEA,SAAOK,GAAG,CAACG,OAAX;AACD;;ACJc,SAASC,WAAT,CAAqBrH,EAArB,EAAyBsH,YAAY,GAAC,EAAtC,EAA0C;AAEvD,QAAMlH,QAAQ,GAAGmH,UAAU,CAAC,UAAD,CAA3B;AAEA,QAAM5K,QAAQ,GAAG6K,OAAO,CAAC,MAAM;AAC7B,WAAOpH,QAAQ,CAACJ,EAAD,CAAf;AACD,GAFuB,EAErBsH,YAFqB,CAAxB,CAJuD;;AASvDH,EAAAA,SAAS,CAAC,MAAM;AACd,WAAO,MAAM;AACV,aAAOxK,QAAQ,CAAC8K,KAAhB,KAA0B,UAA3B,IAA0C9K,QAAQ,CAAC8K,KAAT,EAA1C;AACD,KAFD;AAGD,GAJQ,EAIN,CAAE9K,QAAF,CAJM,CAAT;AAMA,SAAOA,QAAP;AACD;;AClBc,SAAS+K,WAAT,CAAqB/B,KAArB,EAA4B;AAEzC,QAAM;AACJ5E,IAAAA,EADI;AAEJQ,IAAAA,KAFI;AAGJoG,IAAAA,GAHI;AAIJC,IAAAA,GAJI;AAKJhB,IAAAA,KAAK,GAAG,EALJ;AAMJiB,IAAAA,OAAO,EAAEC;AANL,MAOFnC,KAPJ;AASA,QAAMkC,OAAO,GAAGR,WAAW,CAAC5J,KAAK,IAAI;AAEnC,UAAM;AACJsK,MAAAA,QADI;AAEJnB,MAAAA;AAFI,QAGFnJ,KAAK,CAACqJ,MAHV;;AAKA,QAAIiB,QAAQ,CAACC,KAAb,EAAoB;AAClBF,MAAAA,QAAQ,CAAClB,KAAK,GAAGqB,QAAQ,CAACrB,KAAD,EAAQ,EAAR,CAAX,GAAyB/H,SAA/B,CAAR;AACD;AACF,GAV0B,EAUxB,CAAEiJ,QAAF,CAVwB,CAA3B;AAYA,SACElC;AAAK,IAAA,KAAK,EAAC,6BAAX;AAAA,eACEC;AAAO,MAAA,GAAG,EAAGQ,QAAQ,CAACtF,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,gBAAiEQ;AAAjE,MADF,EAEEsE;AACE,MAAA,EAAE,EAAGQ,QAAQ,CAACtF,EAAD,CADf;AAEE,MAAA,IAAI,EAAC,QAFP;AAGE,MAAA,KAAK,EAAC,4BAHR;AAIE,MAAA,GAAG,EAAG4G,GAJR;AAKE,MAAA,GAAG,EAAGC,GALR;AAME,MAAA,OAAO,EAAGC,OANZ;AAOE,MAAA,KAAK,EAAGjB;AAPV,MAFF;AAAA,IADF;AAaD;;ACxCc,SAASsB,MAAT,CAAgBvC,KAAhB,EAAuB;AACpC,QAAM;AACJ5E,IAAAA,EADI;AAEJQ,IAAAA,KAFI;AAGJoF,IAAAA,QAHI;AAIJwB,IAAAA,OAJI;AAKJvB,IAAAA;AALI,MAMFjB,KANJ;;AAQA,QAAMkB,YAAY,GAAG,CAAC;AAAEC,IAAAA;AAAF,GAAD,KAAgB;AACnCH,IAAAA,QAAQ,CAACG,MAAM,CAACF,KAAR,CAAR;AACD,GAFD;;AAIA,SACEhB;AAAK,IAAA,KAAK,EAAC,6BAAX;AAAA,eACEC;AAAO,MAAA,GAAG,EAAGQ,QAAQ,CAACtF,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,gBAAiEQ;AAAjE,MADF,EAEEsE;AAAQ,MAAA,EAAE,EAAGQ,QAAQ,CAACtF,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAA+D,MAAA,OAAO,EAAG8F,YAAzE;AAAA,gBAEIsB,OAAO,CAACvE,GAAR,CAAawE,MAAD,IAAY;AACtB,eACEvC;AACE,UAAA,KAAK,EAAGuC,MAAM,CAACxB,KADjB;AAEE,UAAA,QAAQ,EAAGwB,MAAM,CAACxB,KAAP,KAAiBA,KAF9B;AAAA,oBAGIwB,MAAM,CAAC7G;AAHX,UADF;AAOD,OARD;AAFJ,MAFF;AAAA,IADF;AAkBD;;AC1Bc,SAAS8G,QAAT,CAAkB1C,KAAlB,EAAyB;AAEtC,QAAM;AACJ5E,IAAAA,EADI;AAEJQ,IAAAA,KAFI;AAGJ+G,IAAAA,IAAI,GAAG,EAHH;AAIJ1B,IAAAA,KAAK,GAAG,EAJJ;AAKJiB,IAAAA,OAAO,EAAEC;AALL,MAMFnC,KANJ;AAQA,QAAMkC,OAAO,GAAGR,WAAW,CAAC5J,KAAK,IAAI;AACnC,UAAMmJ,KAAK,GAAGnJ,KAAK,CAACqJ,MAAN,CAAaF,KAA3B;;AAEAkB,IAAAA,QAAQ,CAAClB,KAAK,CAACL,MAAN,GAAeK,KAAf,GAAuB/H,SAAxB,CAAR;AACD,GAJ0B,EAIxB,CAAEiJ,QAAF,CAJwB,CAA3B;AAMA,SACElC;AAAK,IAAA,KAAK,EAAC,+BAAX;AAAA,eACEC;AAAO,MAAA,GAAG,EAAGQ,QAAQ,CAACtF,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,gBAAiEQ;AAAjE,MADF,EAEEsE;AACE,MAAA,EAAE,EAAGQ,QAAQ,CAACtF,EAAD,CADf;AAEE,MAAA,UAAU,EAAG,KAFf;AAGE,MAAA,KAAK,EAAC,4BAHR;AAIE,MAAA,OAAO,EAAG8G,OAJZ;AAKE,MAAA,IAAI,EAAGS,IALT;AAME,MAAA,KAAK,EAAG1B;AANV,MAFF;AAAA,IADF;AAYD;;ACtBc,SAAS2B,SAAT,CAAmB5C,KAAnB,EAA0B;AAEvC,MAAI;AACF5E,IAAAA,EADE;AAEFQ,IAAAA,KAFE;AAGFiH,IAAAA,QAAQ,GAAG,MAAM,IAHf;AAIFX,IAAAA,OAAO,EAAEC,QAJP;AAKFlB,IAAAA,KAAK,GAAG;AALN,MAMAjB,KANJ;AAQA,QAAM8C,SAAS,GAAGzB,WAAW,CAACJ,KAAD,CAA7B;AAEA,QAAM,CAAE8B,WAAF,EAAeC,cAAf,IAAkCC,QAAQ,CAAC,IAAD,CAAhD;AAEA,QAAM,CAAE5J,KAAF,EAAS6J,QAAT,IAAsBD,QAAQ,CAAC,IAAD,CAApC;AAEAzB,EAAAA,SAAS,CAAC,MAAM0B,QAAQ,CAACL,QAAQ,CAAC5B,KAAD,CAAT,CAAf,EAAkC,CAAEA,KAAF,CAAlC,CAAT;AAEA,QAAMiB,OAAO,GAAGR,WAAW,CAAC5J,KAAK,IAAI;AAEnC,UAAMmJ,KAAK,GAAGnJ,KAAK,CAACqJ,MAAN,CAAaF,KAA3B;AAEA,UAAM5H,KAAK,GAAGwJ,QAAQ,CAAC5B,KAAD,CAAtB;;AAEA,QAAI5H,KAAJ,EAAW;AACT2J,MAAAA,cAAc,CAAC/B,KAAD,CAAd;AACD,KAFD,MAEO;AACLkB,MAAAA,QAAQ,CAAClB,KAAK,CAACL,MAAN,GAAeK,KAAf,GAAuB/H,SAAxB,CAAR;AACD;;AAEDgK,IAAAA,QAAQ,CAAC7J,KAAD,CAAR;AACD,GAb0B,EAaxB,CAAEwJ,QAAF,EAAYG,cAAZ,EAA4Bb,QAA5B,CAbwB,CAA3B;;AAgBA,MAAIW,SAAS,KAAK7B,KAAd,IAAuB5H,KAA3B,EAAkC;AAChC4H,IAAAA,KAAK,GAAG8B,WAAR;AACD;;AAED,QAAMI,OAAO,GAAG,CAAE,4BAAF,CAAhB;;AAEA,MAAI9J,KAAJ,EAAW;AACT8J,IAAAA,OAAO,CAACC,IAAR,CAAa,eAAb;AACD;;AAED,SACEnD;AAAK,IAAA,KAAK,EAAC,2BAAX;AAAA,eACEC;AAAO,MAAA,GAAG,EAAGQ,QAAQ,CAACtF,EAAD,CAArB;AAA4B,MAAA,KAAK,EAAC,4BAAlC;AAAA,gBAAiEQ;AAAjE,MADF,EAEEsE;AACE,MAAA,EAAE,EAAGQ,QAAQ,CAACtF,EAAD,CADf;AAEE,MAAA,IAAI,EAAC,MAFP;AAGE,MAAA,UAAU,EAAG,KAHf;AAIE,MAAA,KAAK,EAAG+H,OAAO,CAACE,IAAR,CAAa,GAAb,CAJV;AAKE,MAAA,OAAO,EAAGnB,OALZ;AAME,MAAA,KAAK,EAAGjB;AANV,MAFF,EAUI5H,KAAK,IAAI6G;AAAK,MAAA,KAAK,EAAC,4BAAX;AAAA,gBAA0C7G;AAA1C,MAVb;AAAA,IADF;AAeD;;ACpEc,SAASiK,kBAAT,CAA4BtD,KAA5B,EAAmC;AAChD,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA,KAFI;AAGJT,IAAAA,EAHI;AAIJQ,IAAAA,KAJI;AAKJkC,IAAAA;AALI,MAMFkC,KANJ;;AAQA,QAAMgB,QAAQ,GAAIC,KAAD,IAAW;AAC1B,QAAIsC,SAAS,IAAIzF,IAAjB,EAAuB;AACrByF,MAAAA,SAAS,CAAC1H,KAAD,EAAQiC,IAAR,EAAcmD,KAAd,CAAT;AACD,KAFD,MAEO;AACLjB,MAAAA,KAAK,CAACgB,QAAN,CAAeC,KAAf;AACD;AACF,GAND;;AAQA,QAAMA,KAAK,GAAGnD,IAAI,GAAGvC,GAAG,CAACM,KAAD,EAAQiC,IAAR,EAAc,KAAd,CAAN,GAA6BkC,KAAK,CAACiB,KAArD;AAEA,SACEf;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAA,cACEA,IAAC,aAAD;AAAe,MAAA,EAAE,EAAG9E,EAApB;AAAyB,MAAA,KAAK,EAAGQ,KAAjC;AAAyC,MAAA,QAAQ,EAAGoF,QAApD;AAA+D,MAAA,KAAK,EAAGC;AAAvE;AADF,IADF;AAKD;;ACxBc,SAASuC,gBAAT,CAA0BxD,KAA1B,EAAiC;AAC9C,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA,KAFI;AAGJT,IAAAA,EAHI;AAIJQ,IAAAA,KAJI;AAKJoG,IAAAA,GALI;AAMJC,IAAAA,GANI;AAOJjB,IAAAA,QAPI;AAQJlD,IAAAA;AARI,MASFkC,KATJ;;AAWA,QAAMkC,OAAO,GAAIjB,KAAD,IAAW;AACzB,QAAIsC,SAAS,IAAIzF,IAAjB,EAAuB;AACrByF,MAAAA,SAAS,CAAC1H,KAAD,EAAQiC,IAAR,EAAcmD,KAAd,CAAT;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,KAAD,CAAR;AACD;AACF,GAND;;AAQA,QAAMA,KAAK,GAAGnD,IAAI,GAAGvC,GAAG,CAACM,KAAD,EAAQiC,IAAR,EAAc,EAAd,CAAN,GAA0BkC,KAAK,CAACiB,KAAlD;AAEA,SACEf;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAA,cACEA,IAAC,WAAD;AACE,MAAA,EAAE,EAAG9E,EADP;AAEE,MAAA,KAAK,EAAGQ,KAFV;AAGE,MAAA,GAAG,EAAGoG,GAHR;AAIE,MAAA,GAAG,EAAGC,GAJR;AAKE,MAAA,OAAO,EAAGC,OALZ;AAME,MAAA,KAAK,EAAGjB;AANV;AADF,IADF;AAWD;;ACjCc,SAASwC,WAAT,CAAqBzD,KAArB,EAA4B;AACzC,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA,KAFI;AAGJT,IAAAA,EAHI;AAIJsI,IAAAA,WAJI;AAKJ9H,IAAAA,KALI;AAMJ4G,IAAAA,OANI;AAOJ1E,IAAAA;AAPI,MAQFkC,KARJ;;AAUA,QAAMgB,QAAQ,GAAIC,KAAD,IAAW;AAC1B,QAAIsC,SAAS,IAAIzF,IAAjB,EAAuB;AACrByF,MAAAA,SAAS,CAAC1H,KAAD,EAAQiC,IAAR,EAAcmD,KAAd,CAAT;AACD,KAFD,MAEO;AACLjB,MAAAA,KAAK,CAACgB,QAAN,CAAeC,KAAf;AACD;AACF,GAND;;AAQA,QAAMA,KAAK,GAAGnD,IAAI,GAAGvC,GAAG,CAACM,KAAD,EAAQiC,IAAR,EAAc,EAAd,CAAN,GAA0BkC,KAAK,CAACiB,KAAlD;AAEA,SACEhB;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAA,eACEC,IAAC,MAAD;AAAQ,MAAA,EAAE,EAAG9E,EAAb;AAAkB,MAAA,KAAK,EAAGQ,KAA1B;AAAkC,MAAA,QAAQ,EAAGoF,QAA7C;AAAwD,MAAA,OAAO,EAAGwB,OAAlE;AAA4E,MAAA,KAAK,EAAGvB;AAApF,MADF,EAEIyC,WAAW,IAAIxD;AAAK,MAAA,KAAK,EAAC,kCAAX;AAAA,gBAAgDwD;AAAhD,MAFnB;AAAA,IADF;AAMD;;AC3Bc,SAASC,aAAT,CAAuB3D,KAAvB,EAA8B;AAC3C,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA,KAFI;AAGJT,IAAAA,EAHI;AAIJsI,IAAAA,WAJI;AAKJ9H,IAAAA,KALI;AAMJoF,IAAAA,QANI;AAOJlD,IAAAA;AAPI,MAQFkC,KARJ;;AAUA,QAAMkC,OAAO,GAAIjB,KAAD,IAAW;AACzB,QAAIsC,SAAS,IAAIzF,IAAjB,EAAuB;AACrByF,MAAAA,SAAS,CAAC1H,KAAD,EAAQiC,IAAR,EAAcmD,KAAd,CAAT;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,KAAD,CAAR;AACD;AACF,GAND;;AAQA,QAAMA,KAAK,GAAGnD,IAAI,GAAGvC,GAAG,CAACM,KAAD,EAAQiC,IAAR,EAAc,EAAd,CAAN,GAA0BkC,KAAK,CAACiB,KAAlD;AAEA,SACEhB;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAA,eACEC,IAAC,QAAD;AAAU,MAAA,EAAE,EAAG9E,EAAf;AAAoB,MAAA,KAAK,EAAGQ,KAA5B;AAAoC,MAAA,OAAO,EAAGsG,OAA9C;AAAwD,MAAA,KAAK,EAAGjB;AAAhE,MADF,EAEIyC,WAAW,IAAIxD;AAAK,MAAA,KAAK,EAAC,kCAAX;AAAA,gBAAgDwD;AAAhD,MAFnB;AAAA,IADF;AAMD;;AC3Bc,SAASE,cAAT,CAAwB5D,KAAxB,EAA+B;AAC5C,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA,KAFI;AAGJT,IAAAA,EAHI;AAIJsI,IAAAA,WAJI;AAKJ9H,IAAAA,KALI;AAMJoF,IAAAA,QANI;AAOJlD,IAAAA,IAPI;AAQJ+E,IAAAA;AARI,MASF7C,KATJ;;AAWA,QAAMkC,OAAO,GAAIjB,KAAD,IAAW;AACzB,QAAIsC,SAAS,IAAIzF,IAAjB,EAAuB;AACrByF,MAAAA,SAAS,CAAC1H,KAAD,EAAQiC,IAAR,EAAcmD,KAAd,CAAT;AACD,KAFD,MAEO;AACLD,MAAAA,QAAQ,CAACC,KAAD,CAAR;AACD;AACF,GAND;;AAQA,QAAMA,KAAK,GAAGnD,IAAI,GAAGvC,GAAG,CAACM,KAAD,EAAQiC,IAAR,EAAc,EAAd,CAAN,GAA0BkC,KAAK,CAACiB,KAAlD;AAEA,SACEhB;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAA,eACEC,IAAC,SAAD;AAAW,MAAA,EAAE,EAAG9E,EAAhB;AAAqB,MAAA,KAAK,EAAGQ,KAA7B;AAAqC,MAAA,OAAO,EAAGsG,OAA/C;AAAyD,MAAA,QAAQ,EAAGW,QAApE;AAA+E,MAAA,KAAK,EAAG5B;AAAvF,MADF,EAEIyC,WAAW,IAAIxD;AAAK,MAAA,KAAK,EAAC,kCAAX;AAAA,gBAAgDwD;AAAhD,MAFnB;AAAA,IADF;AAMD;;AChCD,SAAShF,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,iBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,CAAC,EAAE,+BAA+B;AACpC,CAAC,CAAC,CAAC;;ACbH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,oBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,GAAG;AACZ,EAAE,MAAM,EAAE,GAAG;AACb,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,CAAC,EAAE,gGAAgG;AACrG,CAAC,CAAC,CAAC;;ACbH,SAASA,UAAQ,GAAG,EAAEA,UAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAOA,UAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,qBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAEA,UAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,IAAI;AACb,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,CAAC,EAAE,8IAA8I;AACnJ,CAAC,CAAC,CAAC;;ACZH,SAAS,QAAQ,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC,MAAM,IAAI,UAAU,MAAM,EAAE,EAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI,MAAM,EAAE,EAAE,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,EAAE;AAG7T,uBAAe,CAAC,CAAC;AACjB,EAAE,MAAM,GAAG,EAAE;AACb,EAAE,GAAG,KAAK;AACV,CAAC,kBAAkB,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC;AACvD,EAAE,KAAK,EAAE,4BAA4B;AACrC,EAAE,KAAK,EAAE,GAAG;AACZ,EAAE,MAAM,EAAE,IAAI;AACd,CAAC,EAAE,KAAK,CAAC,eAAe,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE;AACpD,EAAE,QAAQ,EAAE,SAAS;AACrB,EAAE,CAAC,EAAE,oFAAoF;AACzF,CAAC,CAAC,CAAC;;ACJY,SAASmF,gBAAT,CAA0B7D,KAA1B,EAAiC;AAC9C,QAAM;AACJ8D,IAAAA,QADI;AAEJlI,IAAAA,KAFI;AAGJmI,IAAAA,WAAW,GAAG,MAAM;AAHhB,MAIF/D,KAJJ;AAMA,QAAM,CAAEgE,SAAF,EAAaC,YAAb,IAA8BhB,QAAQ,CAAC,KAAD,CAA5C;;AAEA,QAAMiB,eAAe,GAAG,MAAMD,YAAY,CAAC,CAACD,SAAF,CAA1C;;AAEA,QAAMb,OAAO,GAAG,CAAE,wCAAF,CAAhB;;AAEA,MAAIa,SAAJ,EAAe;AACbb,IAAAA,OAAO,CAACC,IAAR,CAAa,kDAAb;AACD;;AAED,SACEnD;AAAK,IAAA,KAAK,EAAGkD,OAAO,CAACE,IAAR,CAAa,GAAb,CAAb;AAAA,eACEpD;AAAK,MAAA,KAAK,EAAC,+CAAX;AAA2D,MAAA,OAAO,EAAGiE,eAArE;AAAA,iBACEjE;AAAA,mBACEC,IAAC,aAAD;AAAe,UAAA,KAAK,EAAG8D,SAAS,GAAG,iBAAH,GAAuB;AAAvD,UADF,EAEE9D;AAAM,UAAA,KAAK,EAAC,qDAAZ;AAAA,oBACItE;AADJ,UAFF;AAAA,QADF,EAOEsE;AACE,QAAA,KAAK,EAAC,4DADR;AAEE,QAAA,OAAO,EAAGxG,eAAe,CAACqK,WAAD,CAF3B;AAAA,kBAGE7D,IAAC,cAAD;AAHF,QAPF;AAAA,MADF,EAeI8D,SAAS,GACL,IADK,GAGL9D;AAAK,MAAA,KAAK,EAAC,gDAAX;AAAA,gBAEI4D;AAFJ,MAlBR;AAAA,IADF;AA4BD;;AC/Cc,SAASK,KAAT,CAAenE,KAAf,EAAsB;AACnC,QAAM;AACJ8D,IAAAA,QADI;AAEJM,IAAAA,UAAU,GAAG,IAFT;AAGJxI,IAAAA;AAHI,MAIFoE,KAJJ;AAMA,QAAM,CAAEqE,IAAF,EAAQC,OAAR,IAAoBrB,QAAQ,CAACmB,UAAD,CAAlC;;AAEA,QAAMG,UAAU,GAAG,MAAMD,OAAO,CAAC,CAACD,IAAF,CAAhC;;AAEA,QAAMG,QAAQ,GAAI1M,KAAD,IAAW;AAC1BA,IAAAA,KAAK,CAAC4B,eAAN;AAEA4K,IAAAA,OAAO,CAAC,IAAD,CAAP;AAEAtE,IAAAA,KAAK,CAACwE,QAAN;AACD,GAND;;AAQA,SAAOvE;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAA,eACLA;AAAK,MAAA,KAAK,EAAC,mCAAX;AAA+C,MAAA,OAAO,EAAGmE,UAAU,GAAGG,UAAH,GAAgB,MAAM,EAAzF;AAAA,iBACErE;AAAM,QAAA,KAAK,EAAC,yCAAZ;AAAA,kBACItE;AADJ,QADF,EAIEqE;AAAK,QAAA,KAAK,EAAC,2CAAX;AAAA,mBAEID,KAAK,CAACwE,QAAN,GAEItE;AACE,UAAA,KAAK,EAAC,6FADR;AAEE,UAAA,OAAO,EAAGsE,QAFZ;AAAA,oBAGEtE,IAAC,UAAD;AAHF,UAFJ,GAQI,IAVR,EAYEA;AAAQ,UAAA,KAAK,EAAC,+FAAd;AAAA,oBACEA,IAAC,gBAAD;AAAkB,YAAA,KAAK,EAAGkE,UAAU,IAAIC,IAAd,GAAqB,gBAArB,GAAwC;AAAlE;AADF,UAZF;AAAA,QAJF;AAAA,MADK,EAuBHD,UAAU,IAAIC,IAAd,GAEInE;AAAK,MAAA,KAAK,EAAC,oCAAX;AAAA,gBAEI4D;AAFJ,MAFJ,GAQI,IA/BD;AAAA,IAAP;AAkCD;;AC1Dc,SAASW,WAAT,CAAqBzE,KAArB,EAA4B;AACzC,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;AAKA,QAAMwC,OAAO,GAAG,CACd;AACE5G,IAAAA,KAAK,EAAE,QADT;AAEEqF,IAAAA,KAAK,EAAE;AAFT,GADc,EAKd;AACErF,IAAAA,KAAK,EAAE,OADT;AAEEqF,IAAAA,KAAK,EAAE;AAFT,GALc,CAAhB;AAWA,SACEf,IAAC,WAAD;AACE,IAAA,SAAS,EAAGqD,SADd;AAEE,IAAA,KAAK,EAAG1H,KAFV;AAGE,IAAA,EAAE,EAAC,QAHL;AAIE,IAAA,KAAK,EAAC,QAJR;AAKE,IAAA,OAAO,EAAG2G,OALZ;AAME,IAAA,IAAI,EAAG,CAAE,QAAF;AANT,IADF;AASD;;ACxBc,SAASkC,YAAT,CAAsB1E,KAAtB,EAA6B;AAC1C,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;;AAKA,QAAMkC,OAAO,GAAIjB,KAAD,IAAW;AACzB,QAAInE,UAAU,GAAGjB,KAAK,CAACiB,UAAN,CAAiBvG,KAAjB,EAAjB;;AAEA,QAAI0K,KAAK,GAAGnE,UAAU,CAAC8D,MAAvB,EAA+B;AAC7B,aAAOK,KAAK,GAAGnE,UAAU,CAAC8D,MAA1B,EAAkC;AAChC9D,QAAAA,UAAU,CAACsG,IAAX,CAAgBuB,OAAO,CAAC1J,MAAR,CAAe;AAAE8B,UAAAA,OAAO,EAAElB,KAAK,CAACT;AAAjB,SAAf,CAAhB;AACD;AACF,KAJD,MAIO;AACL0B,MAAAA,UAAU,GAAGA,UAAU,CAACvG,KAAX,CAAiB,CAAjB,EAAoB0K,KAApB,CAAb;AACD;;AAEDsC,IAAAA,SAAS,CAAC1H,KAAD,EAAQ,YAAR,EAAsBiB,UAAtB,CAAT;AACD,GAZD;;AAcA,QAAMmE,KAAK,GAAGpF,KAAK,CAACiB,UAAN,CAAiB8D,MAA/B;AAEA,SACEV;AAAK,IAAA,KAAK,EAAC,4BAAX;AAAA,cACEA,IAAC,gBAAD;AACE,MAAA,EAAE,EAAC,SADL;AAEE,MAAA,KAAK,EAAC,SAFR;AAGE,MAAA,OAAO,EAAGgC,OAHZ;AAIE,MAAA,KAAK,EAAGjB,KAJV;AAKE,MAAA,GAAG,EAAC,GALN;AAME,MAAA,GAAG,EAAC;AANN;AADF,IADF;AAWD;;ACnCc,SAAS2D,gBAAT,CAA0B5E,KAA1B,EAAiC;AAC9C,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;AAKA,SACEE,IAAC,cAAD;AACE,IAAA,SAAS,EAAGqD,SADd;AAEE,IAAA,KAAK,EAAG1H,KAFV;AAGE,IAAA,EAAE,EAAC,aAHL;AAIE,IAAA,KAAK,EAAC,mBAJR;AAKE,IAAA,IAAI,EAAG,CAAE,aAAF;AALT,IADF;AAQD;;ACVc,SAASgJ,iBAAT,CAA2B7E,KAA3B,EAAkC;AAC/C,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;AAKA,QAAM;AACJ8E,IAAAA,YADI;AAEJnM,IAAAA,IAFI;AAGJoM,IAAAA,MAAM,GAAG;AAHL,MAIFlJ,KAJJ;;AAMA,MAAIlD,IAAI,KAAK,UAAb,EAAyB;AACvB,UAAM6J,OAAO,GAAG,CACd;AACE5G,MAAAA,KAAK,EAAE,SADT;AAEEqF,MAAAA,KAAK,EAAE;AAFT,KADc,EAKd;AACErF,MAAAA,KAAK,EAAE,aADT;AAEEqF,MAAAA,KAAK,EAAE;AAFT,KALc,CAAhB;;AAWA,UAAMD,QAAQ,GAAIC,KAAD,IAAW;AAC1BsC,MAAAA,SAAS,CAAC1H,KAAD,EAAQ,CAAE,cAAF,CAAR,EAA4BmJ,oBAAoB,CAAC/D,KAAD,CAAhD,CAAT;AACD,KAFD;;AAIA,WACEf,IAAC,WAAD;AACE,MAAA,EAAE,EAAC,cADL;AAEE,MAAA,KAAK,EAAC,eAFR;AAGE,MAAA,QAAQ,EAAGc,QAHb;AAIE,MAAA,OAAO,EAAGwB,OAJZ;AAKE,MAAA,KAAK,EAAGyC,oBAAoB,CAACH,YAAD;AAL9B,MADF;AAQD;;AAED,MAAInM,IAAI,KAAK,QAAb,EAAuB;AACrB,WACEuH,IAAC,gBAAD;AACE,MAAA,SAAS,EAAGqD,SADd;AAEE,MAAA,KAAK,EAAG1H,KAFV;AAGE,MAAA,EAAE,EAAC,cAHL;AAIE,MAAA,KAAK,EAAC,eAJR;AAKE,MAAA,IAAI,EAAG,CAAE,cAAF;AALT,MADF;AAQD;;AAED,MAAIlD,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,QAAjC,EAA2C;AACzC,UAAM6J,OAAO,GAAG,CACd;AACE5G,MAAAA,KAAK,EAAE;AADT,KADc,EAId,GAAGmJ,MAJW,CAAhB;;AAOA,UAAM/D,QAAQ,GAAIC,KAAD,IAAW;AAC1BsC,MAAAA,SAAS,CAAC1H,KAAD,EAAQ,CAAE,cAAF,CAAR,EAA4BoF,KAAK,CAACL,MAAN,GAAeK,KAAf,GAAuB/H,SAAnD,CAAT;AACD,KAFD;;AAIA,WACEgH,IAAC,WAAD;AACE,MAAA,EAAE,EAAC,cADL;AAEE,MAAA,KAAK,EAAC,eAFR;AAGE,MAAA,QAAQ,EAAGc,QAHb;AAIE,MAAA,OAAO,EAAGwB,OAJZ;AAKE,MAAA,KAAK,EAAGsC;AALV,MADF;AAQD;;AAED,MAAInM,IAAI,KAAK,WAAb,EAA0B;AACxB,WACEuH,IAAC,cAAD;AACE,MAAA,SAAS,EAAGqD,SADd;AAEE,MAAA,KAAK,EAAG1H,KAFV;AAGE,MAAA,EAAE,EAAC,cAHL;AAIE,MAAA,KAAK,EAAC,eAJR;AAKE,MAAA,IAAI,EAAG,CAAE,cAAF;AALT,MADF;AAQD;AACF;;AAED,SAASmJ,oBAAT,CAA8B/D,KAA9B,EAAqC;AACnC,MAAIA,KAAK,KAAK,MAAd,EAAsB;AACpB,WAAO,IAAP;AACD;;AAED,SAAO,KAAP;AACD;;AAED,SAASgE,oBAAT,CAA8BhE,KAA9B,EAAqC;AACnC,MAAIA,KAAK,KAAK,IAAd,EAAoB;AAClB,WAAO,MAAP;AACD;;AAED,SAAO,OAAP;AACD;;ACrGc,SAASiE,aAAT,CAAuBlF,KAAvB,EAA8B;AAC3C,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;;AAKA,QAAMgB,QAAQ,GAAIC,KAAD,IAAW;AAC1BsC,IAAAA,SAAS,CAAC1H,KAAD,EAAQ,UAAR,EAAoBoF,KAApB,CAAT;AACD,GAFD;;AAIA,SAAOf,IAAC,kBAAD;AACL,IAAA,EAAE,EAAC,UADE;AAEL,IAAA,KAAK,EAAGrE,KAFH;AAGL,IAAA,KAAK,EAAC,UAHD;AAIL,IAAA,IAAI,EAAG,CAAE,UAAF,CAJF;AAKL,IAAA,QAAQ,EAAGmF;AALN,IAAP;AAMD;;ACZc,SAASmE,OAAT,CAAiBnF,KAAjB,EAAwB;AACrC,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;AAKA,QAAMnF,iBAAiB,GAAG+G,UAAU,CAAC,mBAAD,CAApC;;AAEA,QAAMiB,QAAQ,GAAI5B,KAAD,IAAW;AAC1B,QAAImE,WAAW,CAACnE,KAAD,CAAX,IAAsB,CAACA,KAAK,CAACL,MAAjC,EAAyC;AACvC,aAAO,oBAAP;AACD;;AAED,UAAMnF,QAAQ,GAAGZ,iBAAiB,CAACW,IAAlB,CAAuBC,QAAvB,CAAgCwF,KAAhC,CAAjB;;AAEA,QAAIxF,QAAQ,IAAIA,QAAQ,KAAKI,KAA7B,EAAoC;AAClC,aAAO,iBAAP;AACD;;AAED,WAAOwJ,UAAU,CAACpE,KAAD,CAAV,IAAqB,IAA5B;AACD,GAZD;;AAcA,SACEf,IAAC,cAAD;AACE,IAAA,SAAS,EAAGqD,SADd;AAEE,IAAA,KAAK,EAAG1H,KAFV;AAGE,IAAA,EAAE,EAAC,IAHL;AAIE,IAAA,KAAK,EAAC,IAJR;AAKE,IAAA,IAAI,EAAG,CAAE,IAAF,CALT;AAME,IAAA,QAAQ,EAAGgH;AANb,IADF;AASD;;AAID,MAAMyC,WAAW,GAAG,IAApB;;AAGA,MAAMC,WAAW,GAAG,kCAApB;;AAGA,MAAMC,QAAQ,GAAG,kBAAjB;;AAEA,SAASH,UAAT,CAAoBI,OAApB,EAA6B;AAE3B,MAAIC,aAAa,CAACD,OAAD,CAAjB,EAA4B;AAC1B,WAAO,0BAAP;AACD;;AAED,MAAI,CAACD,QAAQ,CAACG,IAAT,CAAcF,OAAd,CAAL,EAA6B;AAE3B,QAAIF,WAAW,CAACI,IAAZ,CAAiBF,OAAjB,CAAJ,EAA+B;AAC7B,aAAO,0BAAP;AACD;;AAED,WAAO,wBAAP;AACD;AACF;;AAED,SAASC,aAAT,CAAuBzE,KAAvB,EAA8B;AAC5B,SAAOqE,WAAW,CAACK,IAAZ,CAAiB1E,KAAjB,CAAP;AACD;;AC7Dc,SAAS2E,QAAT,CAAkB5F,KAAlB,EAAyB;AACtC,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;AAKA,QAAMnF,iBAAiB,GAAG+G,UAAU,CAAC,mBAAD,CAApC;;AAEA,QAAMiB,QAAQ,GAAI5B,KAAD,IAAW;AAC1B,QAAImE,WAAW,CAACnE,KAAD,CAAX,IAAsB,CAACA,KAAK,CAACL,MAAjC,EAAyC;AACvC,aAAO,oBAAP;AACD;;AAED,QAAI,KAAK+E,IAAL,CAAU1E,KAAV,CAAJ,EAAsB;AACpB,aAAO,0BAAP;AACD;;AAED,UAAMxF,QAAQ,GAAGZ,iBAAiB,CAACa,KAAlB,CAAwBD,QAAxB,CAAiCwF,KAAjC,CAAjB;;AAEA,QAAIxF,QAAQ,IAAIA,QAAQ,KAAKI,KAA7B,EAAoC;AAClC,aAAO,iBAAP;AACD;;AAED,WAAO,IAAP;AACD,GAhBD;;AAkBA,SACEqE,IAAC,cAAD;AACE,IAAA,SAAS,EAAGqD,SADd;AAEE,IAAA,KAAK,EAAG1H,KAFV;AAGE,IAAA,EAAE,EAAC,KAHL;AAIE,IAAA,KAAK,EAAC,KAJR;AAKE,IAAA,WAAW,EAAC,6BALd;AAME,IAAA,IAAI,EAAG,CAAE,KAAF,CANT;AAOE,IAAA,QAAQ,EAAGgH;AAPb,IADF;AAUD;;ACxCc,SAASgD,UAAT,CAAoB7F,KAApB,EAA2B;AACxC,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;AAKA,SACEE,IAAC,cAAD;AACE,IAAA,SAAS,EAAGqD,SADd;AAEE,IAAA,KAAK,EAAG1H,KAFV;AAGE,IAAA,EAAE,EAAC,OAHL;AAIE,IAAA,KAAK,EAAC,aAJR;AAKE,IAAA,IAAI,EAAG,CAAE,OAAF;AALT,IADF;AAQD;;ACdc,SAASiK,SAAT,CAAmB9F,KAAnB,EAA0B;AACvC,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;AAKA,SACEE,IAAC,aAAD;AACE,IAAA,SAAS,EAAGqD,SADd;AAEE,IAAA,KAAK,EAAG1H,KAFV;AAGE,IAAA,EAAE,EAAC,MAHL;AAIE,IAAA,KAAK,EAAC,MAJR;AAKE,IAAA,IAAI,EAAG,CAAE,MAAF,CALT;AAME,IAAA,WAAW,EAAC;AANd,IADF;AASD;;ACVc,SAASkK,UAAT,CAAoB/F,KAApB,EAA2B;AACxC,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA,KAFI;AAGJ+B,IAAAA;AAHI,MAIFoC,KAJJ;;AAMA,QAAMgB,QAAQ,GAAI3F,GAAD,IAAS;AACxB,UAAM0J,MAAM,GAAGxJ,GAAG,CAACM,KAAD,EAAQ,CAAE,QAAF,CAAR,CAAlB;AAEA,WAAQoF,KAAD,IAAW;AAChBsC,MAAAA,SAAS,CAAC1H,KAAD,EAAQ,QAAR,EAAkBmK,GAAG,CAACjB,MAAD,EAAS,CAAEnH,KAAF,EAASvC,GAAT,CAAT,EAAyB4F,KAAzB,CAArB,CAAT;AACD,KAFD;AAGD,GAND;;AAQA,SAAOhB;AAAA,eACLC,IAAC,cAAD;AACE,MAAA,EAAE,EAAI,eAAetC,KAAO,EAD9B;AAEE,MAAA,KAAK,EAAC,OAFR;AAGE,MAAA,QAAQ,EAAGoD,QAAQ,CAAC,OAAD,CAHrB;AAIE,MAAA,KAAK,EAAGzF,GAAG,CAACM,KAAD,EAAQ,CAAE,QAAF,EAAY+B,KAAZ,EAAmB,OAAnB,CAAR;AAJb,MADK,EAMLsC,IAAC,cAAD;AACE,MAAA,EAAE,EAAI,eAAetC,KAAO,EAD9B;AAEE,MAAA,KAAK,EAAC,OAFR;AAGE,MAAA,QAAQ,EAAGoD,QAAQ,CAAC,OAAD,CAHrB;AAIE,MAAA,KAAK,EAAGzF,GAAG,CAACM,KAAD,EAAQ,CAAE,QAAF,EAAY+B,KAAZ,EAAmB,OAAnB,CAAR;AAJb,MANK;AAAA,IAAP;AAYD;;AClBc,SAASqI,YAAT,CAAsBpK,KAAtB,EAA6B0H,SAA7B,EAAwC;AACrD,QAAM;AAAE5K,IAAAA;AAAF,MAAWkD,KAAjB;AAEA,QAAMqK,OAAO,GAAG,EAAhB;;AACA,MAAIvN,IAAI,KAAK,SAAb,EAAwB;AACtBuN,IAAAA,OAAO,CAAC9C,IAAR,CAAalD,IAAC,OAAD;AAAS,MAAA,SAAS,EAAGqD,SAArB;AAAiC,MAAA,KAAK,EAAG1H;AAAzC,MAAb;AACD;;AAED,MAAIiF,MAAM,CAACqF,QAAP,CAAgBxN,IAAhB,KAAyBA,IAAI,KAAK,QAAtC,EAAgD;AAC9CuN,IAAAA,OAAO,CAAC9C,IAAR,CAAalD,IAAC,UAAD;AAAY,MAAA,SAAS,EAAGqD,SAAxB;AAAoC,MAAA,KAAK,EAAG1H;AAA5C,MAAb;AACD;;AAED,MAAIiF,MAAM,CAACqF,QAAP,CAAgBxN,IAAhB,CAAJ,EAA2B;AACzBuN,IAAAA,OAAO,CAAC9C,IAAR,CAAalD,IAAC,gBAAD;AAAkB,MAAA,SAAS,EAAGqD,SAA9B;AAA0C,MAAA,KAAK,EAAG1H;AAAlD,MAAb;AACD;;AAED,MAAIiF,MAAM,CAACqF,QAAP,CAAgBxN,IAAhB,CAAJ,EAA2B;AACzBuN,IAAAA,OAAO,CAAC9C,IAAR,CAAalD,IAAC,QAAD;AAAU,MAAA,SAAS,EAAGqD,SAAtB;AAAkC,MAAA,KAAK,EAAG1H;AAA1C,MAAb;AACD;;AAED,MAAIiF,MAAM,CAACqF,QAAP,CAAgBxN,IAAhB,CAAJ,EAA2B;AACzBuN,IAAAA,OAAO,CAAC9C,IAAR,CAAalD,IAAC,iBAAD;AAAmB,MAAA,SAAS,EAAGqD,SAA/B;AAA2C,MAAA,KAAK,EAAG1H;AAAnD,MAAb;AACD;;AAED,MAAIlD,IAAI,KAAK,QAAb,EAAuB;AACrBuN,IAAAA,OAAO,CAAC9C,IAAR,CAAalD,IAAC,WAAD;AAAa,MAAA,SAAS,EAAGqD,SAAzB;AAAqC,MAAA,KAAK,EAAG1H;AAA7C,MAAb;AACD;;AAED,MAAIlD,IAAI,KAAK,SAAb,EAAwB;AACtBuN,IAAAA,OAAO,CAAC9C,IAAR,CAAalD,IAAC,YAAD;AAAc,MAAA,SAAS,EAAGqD,SAA1B;AAAsC,MAAA,KAAK,EAAG1H;AAA9C,MAAb;AACD;;AAED,MAAIlD,IAAI,KAAK,MAAb,EAAqB;AACnBuN,IAAAA,OAAO,CAAC9C,IAAR,CAAalD,IAAC,SAAD;AAAW,MAAA,SAAS,EAAGqD,SAAvB;AAAmC,MAAA,KAAK,EAAG1H;AAA3C,MAAb;AACD;;AAED,MAAIiF,MAAM,CAACqF,QAAP,CAAgBxN,IAAhB,CAAJ,EAA2B;AACzBuN,IAAAA,OAAO,CAAC9C,IAAR,CAAalD,IAAC,aAAD;AAAe,MAAA,SAAS,EAAGqD,SAA3B;AAAuC,MAAA,KAAK,EAAG1H;AAA/C,MAAb;AACD;;AAED,SACEqE,IAAC,KAAD;AAAO,IAAA,KAAK,EAAC,SAAb;AAAA,cAEIgG,OAAO,CAACtF,MAAR,GAAiBsF,OAAjB,GAA2B;AAF/B,IADF;AAOD;;ACnDc,SAASE,eAAT,CAAyBvK,KAAzB,EAAgC0H,SAAhC,EAA2C;AACxD,QAAM;AAAE5K,IAAAA;AAAF,MAAWkD,KAAjB;;AAEA,QAAMmF,QAAQ,GAAI3F,GAAD,IAAS;AACxB,WAAQ4F,KAAD,IAAW;AAChB,YAAM4B,QAAQ,GAAGtH,GAAG,CAACM,KAAD,EAAQ,CAAE,UAAF,CAAR,EAAwB,EAAxB,CAApB;AAEA0H,MAAAA,SAAS,CAAC1H,KAAD,EAAQ,CAAE,UAAF,CAAR,EAAwBmK,GAAG,CAACnD,QAAD,EAAW,CAAExH,GAAF,CAAX,EAAoB4F,KAApB,CAA3B,CAAT;AACD,KAJD;AAKD,GAND;;AAQA,QAAMiF,OAAO,GAAG,CACdhG,IAAC,kBAAD;AACE,IAAA,EAAE,EAAC,UADL;AAEE,IAAA,KAAK,EAAC,UAFR;AAGE,IAAA,QAAQ,EAAGc,QAAQ,CAAC,UAAD,CAHrB;AAIE,IAAA,KAAK,EAAGzF,GAAG,CAACM,KAAD,EAAQ,CAAE,UAAF,EAAc,UAAd,CAAR;AAJb,IADc,CAAhB;;AAQA,MAAIlD,IAAI,KAAK,WAAb,EAA0B;AACxBuN,IAAAA,OAAO,CAAC9C,IAAR,CACElD,IAAC,gBAAD;AACE,MAAA,EAAE,EAAC,WADL;AAEE,MAAA,KAAK,EAAC,gBAFR;AAGE,MAAA,GAAG,EAAC,GAHN;AAIE,MAAA,QAAQ,EAAGc,QAAQ,CAAC,WAAD,CAJrB;AAKE,MAAA,KAAK,EAAGzF,GAAG,CAACM,KAAD,EAAQ,CAAE,UAAF,EAAc,WAAd,CAAR;AALb,MADF,EAOEqE,IAAC,gBAAD;AACE,MAAA,EAAE,EAAC,WADL;AAEE,MAAA,KAAK,EAAC,gBAFR;AAGE,MAAA,GAAG,EAAC,GAHN;AAIE,MAAA,QAAQ,EAAGc,QAAQ,CAAC,WAAD,CAJrB;AAKE,MAAA,KAAK,EAAGzF,GAAG,CAACM,KAAD,EAAQ,CAAE,UAAF,EAAc,WAAd,CAAR;AALb,MAPF,EAaEqE,IAAC,cAAD;AACE,MAAA,EAAE,EAAC,0BADL;AAEE,MAAA,KAAK,EAAC,4BAFR;AAGE,MAAA,QAAQ,EAAGc,QAAQ,CAAC,0BAAD,CAHrB;AAIE,MAAA,KAAK,EAAGzF,GAAG,CAACM,KAAD,EAAQ,CAAE,UAAF,EAAc,0BAAd,CAAR;AAJb,MAbF;AAmBD;;AAED,MAAIlD,IAAI,KAAK,QAAb,EAAuB;AACrBuN,IAAAA,OAAO,CAAC9C,IAAR,CACElD,IAAC,gBAAD;AACE,MAAA,EAAE,EAAC,KADL;AAEE,MAAA,KAAK,EAAC,SAFR;AAGE,MAAA,QAAQ,EAAGc,QAAQ,CAAC,KAAD,CAHrB;AAIE,MAAA,KAAK,EAAGzF,GAAG,CAACM,KAAD,EAAQ,CAAE,UAAF,EAAc,KAAd,CAAR;AAJb,MADF,EAMEqE,IAAC,gBAAD;AACE,MAAA,EAAE,EAAC,KADL;AAEE,MAAA,KAAK,EAAC,SAFR;AAGE,MAAA,QAAQ,EAAGc,QAAQ,CAAC,KAAD,CAHrB;AAIE,MAAA,KAAK,EAAGzF,GAAG,CAACM,KAAD,EAAQ,CAAE,UAAF,EAAc,KAAd,CAAR;AAJb,MANF;AAYD;;AAED,SACEqE,IAAC,KAAD;AAAO,IAAA,KAAK,EAAC,YAAb;AAAA,cAEIgG,OAAO,CAACtF,MAAR,GAAiBsF,OAAjB,GAA2B;AAF/B,IADF;AAOD;;AC/Dc,SAASG,WAAT,CAAqBxK,KAArB,EAA4B0H,SAA5B,EAAuC;AACpD,QAAM;AACJnI,IAAAA,EADI;AAEJ2J,IAAAA,MAAM,GAAG;AAFL,MAGFlJ,KAHJ;;AAKA,QAAM2I,QAAQ,GAAG,MAAM;AACrB,UAAM8B,KAAK,GAAG;AACZ1K,MAAAA,KAAK,EAAE,OADK;AAEZqF,MAAAA,KAAK,EAAE;AAFK,KAAd;AAKAsC,IAAAA,SAAS,CAAC1H,KAAD,EAAQ,CAAE,QAAF,CAAR,EAAsBuE,UAAQ,CAAC2E,MAAD,EAASA,MAAM,CAACnE,MAAhB,EAAwB0F,KAAxB,CAA9B,CAAT;AACD,GAPD;;AASA,QAAMlC,UAAU,GAAGW,MAAM,CAACnE,MAAP,GAAgB,CAAnC;AAEA,SACEV,IAAC,KAAD;AAAO,IAAA,KAAK,EAAC,QAAb;AAAsB,IAAA,QAAQ,EAAGsE,QAAjC;AAA4C,IAAA,UAAU,EAAGJ,UAAzD;AAAA,cAEIW,MAAM,CAAC9G,GAAP,CAAW,CAACgD,KAAD,EAAQrD,KAAR,KAAkB;AAC3B,YAAM;AAAEhC,QAAAA;AAAF,UAAYqF,KAAlB;;AAEA,YAAM8C,WAAW,GAAG,MAAM;AACxBR,QAAAA,SAAS,CAAC1H,KAAD,EAAQ,CAAE,QAAF,CAAR,EAAsB4E,aAAW,CAACsE,MAAD,EAASnH,KAAT,CAAjC,CAAT;AACD,OAFD;;AAIA,aACEsC,IAAC,gBAAD;AAA+C,QAAA,KAAK,EAAGtE,KAAvD;AAA+D,QAAA,WAAW,EAAGmI,WAA7E;AAAA,kBACE7D,IAAC,UAAD;AAAY,UAAA,SAAS,EAAGqD,SAAxB;AAAoC,UAAA,KAAK,EAAG1H,KAA5C;AAAoD,UAAA,KAAK,EAAG+B;AAA5D;AADF,SAAyB,GAAGxC,EAAI,IAAIwC,KAAO,EAA3C,CADF;AAKD,KAZD;AAFJ,IADF;AAmBD;;AC/BD,MAAM2I,YAAY,GAAG;AACnB3H,EAAAA,MAAM,EAAE,QADW;AAEnBE,EAAAA,QAAQ,EAAE,UAFS;AAGnBE,EAAAA,OAAO,EAAE,SAHU;AAInBY,EAAAA,OAAO,EAAE,MAJU;AAKnBV,EAAAA,MAAM,EAAE,QALW;AAMnBE,EAAAA,KAAK,EAAE,OANY;AAOnBE,EAAAA,MAAM,EAAE,QAPW;AAQnBE,EAAAA,IAAI,EAAE,MARa;AASnBE,EAAAA,SAAS,EAAE;AATQ,CAArB;;AAYA,SAAS8G,SAAT,CAAmB3K,KAAnB,EAA0B0H,SAA1B,EAAqC;AACnC,QAAM;AAAE5K,IAAAA;AAAF,MAAWkD,KAAjB;AAEA,QAAM4K,MAAM,GAAG,CACbR,YAAY,CAACpK,KAAD,EAAQ0H,SAAR,CADC,CAAf;;AAIA,MAAI5K,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,QAAjC,EAA2C;AACzC8N,IAAAA,MAAM,CAACrD,IAAP,CAAYiD,WAAW,CAACxK,KAAD,EAAQ0H,SAAR,CAAvB;AACD;;AAED,MAAIzC,MAAM,CAACqF,QAAP,CAAgBxN,IAAhB,KAAyBA,IAAI,KAAK,UAAtC,EAAkD;AAChD8N,IAAAA,MAAM,CAACrD,IAAP,CAAYgD,eAAe,CAACvK,KAAD,EAAQ0H,SAAR,CAA3B;AACD;;AAED,SAAOkD,MAAP;AACD;;AAEc,SAASC,eAAT,CAAyB1G,KAAzB,EAAgC;AAC7C,QAAM;AACJuD,IAAAA,SADI;AAEJ1H,IAAAA;AAFI,MAGFmE,KAHJ;AAKA,QAAM2G,QAAQ,GAAG/E,UAAU,CAAC,UAAD,CAA3B;;AAEA,MAAI,CAAC/F,KAAL,EAAY;AACV,WAAOqE;AAAK,MAAA,KAAK,EAAC,kCAAX;AAAA;AAAA,MAAP;AACD;;AAED,QAAM0G,OAAO,GAAG,MAAMD,QAAQ,CAACjO,IAAT,CAAc,yBAAd,CAAtB;;AAEA,QAAMmO,MAAM,GAAG,MAAMF,QAAQ,CAACjO,IAAT,CAAc,0BAAd,CAArB;;AAEA,QAAM;AAAEC,IAAAA;AAAF,MAAWkD,KAAjB;AAEA,QAAMsE,IAAI,GAAGxB,WAAW,CAAEhG,IAAF,CAAxB;AAEA,QAAMiD,KAAK,GAAG2K,YAAY,CAAE5N,IAAF,CAA1B;AAEA,SACEsH;AACE,IAAA,KAAK,EAAC,sBADR;AAEE,kBAAapE,KAAK,CAACT,EAFrB;AAGE,IAAA,cAAc,EAAGwL,OAHnB;AAIE,IAAA,aAAa,EAAGC,MAJlB;AAAA,eAME5G;AAAK,MAAA,KAAK,EAAC,6BAAX;AAAA,iBACEC;AAAK,QAAA,KAAK,EAAC,kCAAX;AAAA,kBACEA,IAAC,IAAD;AAAM,UAAA,KAAK,EAAC,IAAZ;AAAiB,UAAA,MAAM,EAAC,IAAxB;AAA6B,UAAA,OAAO,EAAC;AAArC;AADF,QADF,EAIED;AAAA,mBACEC;AAAM,UAAA,KAAK,EAAC,kCAAZ;AAAA,oBAAiDtE;AAAjD,UADF,EAGIjD,IAAI,KAAK,MAAT,GACIuH;AAAK,UAAA,KAAK,EAAC,mCAAX;AAAA,oBAAiDS,WAAW,CAAC9E,KAAK,CAAC2D,IAAP;AAA5D,UADJ,GAEI7G,IAAI,KAAK,SAAT,GACEuH;AAAK,UAAA,KAAK,EAAC,mCAAX;AAAA,oBAAiDrE,KAAK,CAACT;AAAvD,UADF,GAEE8E;AAAK,UAAA,KAAK,EAAC,mCAAX;AAAA,oBAAiDrE,KAAK,CAACD;AAAvD,UAPV;AAAA,QAJF;AAAA,MANF,EAsBI4K,SAAS,CAAC3K,KAAD,EAAQ0H,SAAR,CAtBb;AAAA,IADF;AA2BD;;ACpED,SAASuD,UAAT,CAAoB9G,KAApB,EAA2B;AACzB,MAAI,CAACA,KAAK,CAAC8D,QAAX,EAAqB;AACnB,WAAO,IAAP;AACD;;AAED,SACE5D;AAAK,IAAA,KAAK,EAAC,iBAAX;AAAA,cAEIF,KAAK,CAAC8D;AAFV,IADF;AAOD;;AAED,SAASiD,KAAT,CAAe/G,KAAf,EAAsB;AACpB,SAAO,IAAP;AACD;;AAED,SAASgH,OAAT,CAAiBhH,KAAjB,EAAwB;AACtB,QAAM2G,QAAQ,GAAG/E,UAAU,CAAC,UAAD,CAA3B;AAAA,QACMqF,UAAU,GAAGrF,UAAU,CAAC,YAAD,CAD7B;AAAA,QAEM/G,iBAAiB,GAAG+G,UAAU,CAAC,mBAAD,CAFpC;AAAA,QAGMsF,QAAQ,GAAGtF,UAAU,CAAC,UAAD,CAH3B;AAAA,QAIMuF,SAAS,GAAGvF,UAAU,CAAC,WAAD,CAJ5B;AAMA,QAAM;AAAE/F,IAAAA;AAAF,MAAYmE,KAAlB;AAEA,QAAM;AACJ5E,IAAAA,EADI;AAEJzC,IAAAA;AAFI,MAGFkD,KAHJ;AAKA,QAAMyF,GAAG,GAAGC,MAAM,EAAlB;;AAEA,WAAS6F,cAAT,CAAwB;AAAED,IAAAA;AAAF,GAAxB,EAAuC;AACrC,QAAI,CAACA,SAAD,IAAcA,SAAS,CAAC/L,EAAV,KAAiBA,EAA/B,IAAqC,CAACkG,GAAG,CAACG,OAA9C,EAAuD;AACrD;AACD;;AAED,UAAM4F,aAAa,GAAG/F,GAAG,CAACG,OAAJ,CAAY6F,qBAAZ,EAAtB;AAAA,UACMC,eAAe,GAAGN,UAAU,CAACO,UAAX,CAAsBF,qBAAtB,EADxB;;AAGA,QAAID,aAAa,CAACI,GAAd,GAAoB,CAApB,IAAyBJ,aAAa,CAACI,GAAd,GAAoBF,eAAe,CAACG,MAAjE,EAAyE;AACvEpG,MAAAA,GAAG,CAACG,OAAJ,CAAY2F,cAAZ;AACD;AACF;;AAED5F,EAAAA,SAAS,CAAC,MAAM;AACdmF,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,mBAAZ,EAAiCwQ,cAAjC;AAEA,WAAO,MAAMT,QAAQ,CAACvO,GAAT,CAAa,mBAAb,EAAkCgP,cAAlC,CAAb;AACD,GAJQ,EAIN,CAAEhM,EAAF,CAJM,CAAT;;AAMA,WAASuM,OAAT,CAAiB7P,KAAjB,EAAwB;AACtBA,IAAAA,KAAK,CAAC4B,eAAN;AAEAyN,IAAAA,SAAS,CAACS,MAAV,CAAiB/L,KAAjB;AACD;;AAED,QAAMsH,OAAO,GAAG,CAAE,aAAF,CAAhB;;AAEA,MAAInD,KAAK,CAAC6H,KAAV,EAAiB;AACf1E,IAAAA,OAAO,CAACC,IAAR,CAAa,GAAGpD,KAAK,CAAC6H,KAAN,CAAYC,KAAZ,CAAkB,GAAlB,CAAhB;AACD;;AAED,MAAIX,SAAS,CAACY,UAAV,CAAqBlM,KAArB,CAAJ,EAAiC;AAC/BsH,IAAAA,OAAO,CAACC,IAAR,CAAa,qBAAb;AACD;;AAED,QAAM4E,QAAQ,GAAIlQ,KAAD,IAAW;AAC1BA,IAAAA,KAAK,CAAC4B,eAAN;AAEA,UAAMuO,WAAW,GAAGpN,iBAAiB,CAACU,GAAlB,CAAsBM,KAAK,CAACkB,OAA5B,CAApB;AAEA,UAAMa,KAAK,GAAGsK,iBAAiB,CAACD,WAAD,EAAcpM,KAAd,CAA/B;AAEAqL,IAAAA,QAAQ,CAACiB,eAAT,CAAyBtM,KAAzB,EAAgCoM,WAAhC,EAA6CrK,KAA7C;AACD,GARD;;AAUA,SACEqC;AACE,IAAA,KAAK,EAAGkD,OAAO,CAACE,IAAR,CAAa,GAAb,CADV;AAEE,eAAUjI,EAFZ;AAGE,uBAAkBzC,IAHpB;AAIE,IAAA,OAAO,EAAGgP,OAJZ;AAKE,IAAA,GAAG,EAAGrG,GALR;AAAA,eAMEpB,IAAC,UAAD;AAAA,gBAEIiH,SAAS,CAACY,UAAV,CAAqBlM,KAArB,KAA+BA,KAAK,CAAClD,IAAN,KAAe,SAA9C,GACIuH;AAAQ,QAAA,KAAK,EAAC,sBAAd;AAAqC,QAAA,OAAO,EAAG8H,QAA/C;AAAA,kBAA0D9H,IAAC,cAAD;AAA1D,QADJ,GAEI;AAJR,MANF,EAaIF,KAAK,CAAC8D,QAbV;AAAA,IADF;AAiBD;;AAED,SAASsE,QAAT,CAAkBpI,KAAlB,EAAyB;AACvB,QAAM;AAAEnE,IAAAA;AAAF,MAAYmE,KAAlB;AAEA,QAAM;AAAE5E,IAAAA;AAAF,MAASS,KAAf;AAEA,QAAMsH,OAAO,GAAG,CAAE,cAAF,EAAkB,oBAAlB,CAAhB;;AAEA,MAAInD,KAAK,CAAC6H,KAAV,EAAiB;AACf1E,IAAAA,OAAO,CAACC,IAAR,CAAa,GAAGpD,KAAK,CAAC6H,KAAN,CAAYC,KAAZ,CAAkB,GAAlB,CAAhB;AACD;;AAED,SACE5H;AACE,IAAA,KAAK,EAAGiD,OAAO,CAACE,IAAR,CAAa,GAAb,CADV;AAEE,eAAUjI,EAFZ;AAAA,cAGI4E,KAAK,CAAC8D;AAHV,IADF;AAOD;;AAEc,SAASuE,YAAT,CAAoBrI,KAApB,EAA2B;AACxC,QAAM2G,QAAQ,GAAG/E,UAAU,CAAC,UAAD,CAA3B;AAAA,QACMqF,UAAU,GAAGrF,UAAU,CAAC,YAAD,CAD7B;AAAA,QAEM/G,iBAAiB,GAAG+G,UAAU,CAAC,mBAAD,CAFpC;AAAA,QAGM0G,QAAQ,GAAG1G,UAAU,CAAC,UAAD,CAH3B;AAAA,QAIMsF,QAAQ,GAAGtF,UAAU,CAAC,UAAD,CAJ3B;AAAA,QAKMuF,SAAS,GAAGvF,UAAU,CAAC,WAAD,CAL5B;;AAOA,QAAM;AAAExE,IAAAA;AAAF,MAAa6J,UAAU,CAACsB,SAAX,EAAnB;;AAEA,QAAM,CAAEC,iBAAF,EAAqBC,YAArB,IAAsCxF,QAAQ,CAAC7F,MAAD,CAApD;AAEAoE,EAAAA,SAAS,CAAC,MAAM;AACd,aAASkH,sBAAT,CAAgC5Q,KAAhC,EAAuC;AACrC2Q,MAAAA,YAAY,CAAC3Q,KAAK,CAACqP,SAAN,IAAmB/J,MAApB,CAAZ;AACD;;AAEDuJ,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,mBAAZ,EAAiC8R,sBAAjC;AAEAD,IAAAA,YAAY,CAACtB,SAAS,CAAC5L,GAAV,MAAmB6B,MAApB,CAAZ;AAEA,WAAO,MAAM;AACXuJ,MAAAA,QAAQ,CAACvO,GAAT,CAAa,mBAAb,EAAkCsQ,sBAAlC;AACD,KAFD;AAGD,GAZQ,EAYN,CAAEtL,MAAF,EAAU+J,SAAV,CAZM,CAAT;AAcA,QAAM,CAAE9I,KAAF,EAASsK,QAAT,IAAsB1F,QAAQ,CAAC,IAAD,CAApC;AAEA,QAAM2F,kBAAkB,GAAG;AACzBvK,IAAAA;AADyB,GAA3B;AAIAmD,EAAAA,SAAS,CAAC,MAAM;AACd,UAAMqH,qBAAqB,GAAG,MAAM;AAClC,YAAMC,eAAe,GAAGC,OAAO,CAAC;AAC9BC,QAAAA,WAAW,CAACC,EAAD,EAAK;AACd,iBAAOA,EAAE,CAACC,SAAH,CAAaC,QAAb,CAAsB,oBAAtB,CAAP;AACD,SAH6B;;AAI9B5I,QAAAA,IAAI,CAAC0I,EAAD,EAAK;AACP,iBAAOA,EAAE,CAACC,SAAH,CAAaC,QAAb,CAAsB,eAAtB,CAAP;AACD,SAN6B;;AAO9BC,QAAAA,OAAO,CAACH,EAAD,EAAK9H,MAAL,EAAa;AAClB,iBAAO,CAACA,MAAM,CAAC+H,SAAP,CAAiBC,QAAjB,CAA0B,aAA1B,CAAR;AACD,SAT6B;;AAU9BE,QAAAA,YAAY,EAAE,EAVgB;AAW9BC,QAAAA,YAAY,EAAE;AAXgB,OAAD,CAA/B;AAcAR,MAAAA,eAAe,CAAClS,EAAhB,CAAmB,MAAnB,EAA2B,CAACqS,EAAD,EAAK9H,MAAL,EAAaoI,MAAb,EAAqBC,OAArB,KAAiC;AAC1DV,QAAAA,eAAe,CAACnM,MAAhB;;AAEA,YAAI,CAACwE,MAAL,EAAa;AACX;AACD;;AAED,cAAMsI,eAAe,GAAG5O,iBAAiB,CAACU,GAAlB,CAAsB4F,MAAM,CAACuI,OAAP,CAAetO,EAArC,CAAxB;AAEA,cAAMuO,gBAAgB,GAAGH,OAAO,IAAI3O,iBAAiB,CAACU,GAAlB,CAAsBiO,OAAO,CAACE,OAAR,CAAgBtO,EAAtC,CAApC;AAAA,cACMwO,WAAW,GAAGD,gBAAgB,GAAGzB,iBAAiB,CAACuB,eAAD,EAAkBE,gBAAlB,CAApB,GAA0DF,eAAe,CAAC3M,UAAhB,CAA2B8D,MADzH;;AAGA,YAAI2I,MAAM,CAACL,SAAP,CAAiBC,QAAjB,CAA0B,oBAA1B,CAAJ,EAAqD;AACnD,gBAAMxQ,IAAI,GAAGsQ,EAAE,CAACS,OAAH,CAAWG,SAAxB;AAEA3C,UAAAA,QAAQ,CAAC4C,YAAT,CAAsB;AAAEnR,YAAAA;AAAF,WAAtB,EAAgC8Q,eAAhC,EAAiDG,WAAjD;AACD,SAJD,MAIO;AACL,gBAAMrN,SAAS,GAAG1B,iBAAiB,CAACU,GAAlB,CAAsB0N,EAAE,CAACS,OAAH,CAAWtO,EAAjC,CAAlB;AAAA,gBACM2O,eAAe,GAAGlP,iBAAiB,CAACU,GAAlB,CAAsBgO,MAAM,CAACG,OAAP,CAAetO,EAArC,CADxB;AAAA,gBAEM4O,WAAW,GAAG9B,iBAAiB,CAAC6B,eAAD,EAAkBxN,SAAlB,CAFrC;AAIA2K,UAAAA,QAAQ,CAAC+C,aAAT,CAAuB1N,SAAvB,EAAkCwN,eAAlC,EAAmDN,eAAnD,EAAoEO,WAApE,EAAiFJ,WAAjF;AACD;AACF,OAvBD;AAyBAjD,MAAAA,QAAQ,CAACjO,IAAT,CAAc,iBAAd;AAEAiQ,MAAAA,QAAQ,CAACG,eAAD,CAAR;AAEA,aAAOA,eAAP;AACD,KA7CD;;AA+CA,QAAIA,eAAe,GAAGD,qBAAqB,EAA3C;;AAEA,UAAMqB,QAAQ,GAAG,MAAM;AACrB,UAAIpB,eAAJ,EAAqB;AACnBA,QAAAA,eAAe,CAACqB,OAAhB;AAEAxD,QAAAA,QAAQ,CAACjO,IAAT,CAAc,mBAAd;AACD;AACF,KAND;;AAQA,UAAM0R,QAAQ,GAAG,MAAM;AACrBF,MAAAA,QAAQ;AAERpB,MAAAA,eAAe,GAAGD,qBAAqB,EAAvC;AACD,KAJD;;AAMAlC,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,QAAZ,EAAsBwT,QAAtB;AACAzD,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,QAAZ,EAAsBsT,QAAtB;AAEA,WAAO,MAAM;AACXA,MAAAA,QAAQ;AAERvD,MAAAA,QAAQ,CAACvO,GAAT,CAAa,QAAb,EAAuBgS,QAAvB;AACAzD,MAAAA,QAAQ,CAACvO,GAAT,CAAa,QAAb,EAAuB8R,QAAvB;AACD,KALD;AAMD,GAzEQ,EAyEN,EAzEM,CAAT;AA2EA,QAAMG,iBAAiB,GAAG;AACxBjC,IAAAA,QADwB;AAExBpB,IAAAA,OAFwB;AAGxBD,IAAAA;AAHwB,GAA1B;AAMA,QAAMuD,WAAW,GAAG;AAClBhM,IAAAA,UAAU,CAAC3F,IAAD,EAAO4F,MAAM,GAAG,IAAhB,EAAsB;AAE9B;AACA,UAAI5F,IAAI,KAAK,mBAAb,EAAkC;AAChC,eAAO,IAAI4R,GAAJ,EAAP;AACD,OAFD,MAEO,IAAI5R,IAAI,KAAK,MAAb,EAAqB;AAC1B,eAAO;AACL4P,UAAAA,SAAS,GAAG;AACV,mBAAO;AACLhQ,cAAAA,IAAI,EAAE,EADD;AAELiS,cAAAA,MAAM,EAAE,EAFH;AAGLC,cAAAA,UAAU,EAAE;AACVC,gBAAAA,QAAQ,EAAE;AADA,eAHP;AAMLtN,cAAAA;AANK,aAAP;AAQD;;AAVI,SAAP;AAYD;;AAED,aAAOkL,QAAQ,CAAC/M,GAAT,CAAa5C,IAAb,EAAmB4F,MAAnB,CAAP;AACD,KAtBiB;;AAuBlBoM,IAAAA,MAAM,EAAE1D,UAAU,CAAC2D;AAvBD,GAApB;AA0BA,QAAMC,QAAQ,GAAGC,WAAW,CAAC,MAAM,EAAP,EAAW,EAAX,CAA5B;AAEA,QAAMC,OAAO,GAAGD,WAAW,CAAC,MAAM,EAAP,EAAW,EAAX,CAA3B;AAEA,QAAMvH,SAAS,GAAGuH,WAAW,CAAC,CAACvO,SAAD,EAAYlB,GAAZ,EAAiB4F,KAAjB,KAA2BiG,QAAQ,CAAC8D,aAAT,CAAuBzO,SAAvB,EAAkClB,GAAlC,EAAuC4F,KAAvC,CAA5B,EAA2E,CAAEiG,QAAF,CAA3E,CAA7B;AAEA,SACEjH;AAAK,IAAA,KAAK,EAAC,iBAAX;AAAA,eAEEA,KAAC,kBAAD,CAAoB,QAApB;AAA6B,MAAA,KAAK,EAAG2I,kBAArC;AAAA,iBACE1I;AAAK,QAAA,KAAK,EAAC,uBAAX;AAAA,kBACEA,IAAC,OAAD;AADF,QADF,EAIEA;AAAK,QAAA,KAAK,EAAC,oBAAX;AAAA,kBAEEA,IAAC,WAAD,CAAa,QAAb;AAAsB,UAAA,KAAK,EAAGoK,WAA9B;AAAA,oBACEpK,IAAC,iBAAD,CAAmB,QAAnB;AAA4B,YAAA,KAAK,EAAGmK,iBAApC;AAAA,sBACEnK,IAAC,aAAD;AAAe,cAAA,QAAQ,EAAG2K,QAA1B;AAAqC,cAAA,OAAO,EAAGE;AAA/C;AADF;AADF;AAFF,QAJF,EAaE7K,IAAC,aAAD,KAbF;AAAA,MAFF,EAkBEA;AAAK,MAAA,KAAK,EAAC,0BAAX;AAAA,gBACEA,IAAC,eAAD;AAAiB,QAAA,KAAK,EAAGsI,iBAAzB;AAA6C,QAAA,SAAS,EAAGjF;AAAzD;AADF,MAlBF;AAAA,IADF;AAwBD;;AAED,SAAS2E,iBAAT,CAA2BrK,MAA3B,EAAmCtB,SAAnC,EAA8C;AAC5C,MAAI0O,cAAc,GAAGpN,MAAM,CAACf,UAAP,CAAkB8D,MAAvC;AAEA/C,EAAAA,MAAM,CAACf,UAAP,CAAkBrF,OAAlB,CAA0B,CAAC;AAAE2D,IAAAA;AAAF,GAAD,EAASwC,KAAT,KAAmB;AAC3C,QAAIxC,EAAE,KAAKmB,SAAS,CAACnB,EAArB,EAAyB;AACvB6P,MAAAA,cAAc,GAAGrN,KAAjB;AACD;AACF,GAJD;AAMA,SAAOqN,cAAP;AACD;;AAED,SAASC,aAAT,CAAuBlL,KAAvB,EAA8B;AAE5B,QAAM;AAAE3B,IAAAA;AAAF,MAAYI,UAAU,CAACN,kBAAD,CAA5B;;AAEA,WAASgN,YAAT,CAAsB3N,KAAtB,EAA6B4N,QAA7B,EAAuCzS,IAAvC,EAA6C;AAE3C,UAAMkR,SAAS,GAAGrM,KAAK,CAACkM,OAAN,CAAcG,SAAhC;AAEA,UAAM1J,IAAI,GAAGxB,WAAW,CAAEkL,SAAF,CAAxB;;AAEA,QAAIA,SAAJ,EAAe;AACbrM,MAAAA,KAAK,CAAC6N,SAAN,GAAkB,EAAlB;AAEA7N,MAAAA,KAAK,CAACqK,KAAN,GAAc,WAAd;AAEAyD,MAAAA,MAAM,CAACpL,IAAC,IAAD,KAAD,EAAW1C,KAAX,CAAN;AACD;AACF;;AAEDgE,EAAAA,SAAS,CAAC,MAAM;AACd,QAAI,CAACnD,KAAL,EAAY;AACV;AACD;;AAEDA,IAAAA,KAAK,CAACzH,EAAN,CAAS,QAAT,EAAmBuU,YAAnB;AAEA,WAAO,MAAM9M,KAAK,CAACjG,GAAN,CAAU,QAAV,EAAoB+S,YAApB,CAAb;AACD,GARQ,EAQN,CAAE9M,KAAF,CARM,CAAT;AAUA,SAAO,IAAP;AACD;;ACnVc,MAAMkN,QAAN,CAAe;AAC5B3Q,EAAAA,WAAW,CAAC4Q,YAAD,EAAe7E,QAAf,EAAyBM,UAAzB,EAAqCqB,QAArC,EAA+C;AAExD,UAAM;AACJmD,MAAAA,SADI;AAEJC,MAAAA,OAAO,GAAG;AAFN,QAGFF,YAHJ;;AAKA,UAAMG,GAAG,GAAG,MAAM;AAChB,YAAM,CAAEC,KAAF,EAASC,QAAT,IAAsB5I,QAAQ,CAACgE,UAAU,CAACsB,SAAX,EAAD,CAApC;AAEA,YAAMuD,iBAAiB,GAAG;AACxBxN,QAAAA,UAAU,CAAC3F,IAAD,EAAO4F,MAAM,GAAG,IAAhB,EAAsB;AAC9B,iBAAO+J,QAAQ,CAAC/M,GAAT,CAAa5C,IAAb,EAAmB4F,MAAnB,CAAP;AACD;;AAHuB,OAA1B;AAMA0I,MAAAA,UAAU,CAACrQ,EAAX,CAAc,SAAd,EAA0BmV,QAAD,IAAc;AACrCF,QAAAA,QAAQ,CAACE,QAAD,CAAR;AACD,OAFD;AAIA,YAAM;AAAE3O,QAAAA;AAAF,UAAawO,KAAnB;;AAEA,UAAI,CAACxO,MAAL,EAAa;AACX,eAAO,IAAP;AACD;;AAED,aACE8C;AAAK,QAAA,KAAK,EAAI,sCAAsCwL,OAAO,GAAG,oBAAH,GAA0B,EAAI,EAAzF;AAAA,kBACExL,IAAC,iBAAD,CAAmB,QAAnB;AAA4B,UAAA,KAAK,EAAG4L,iBAApC;AAAA,oBACE5L,IAACmI,YAAD;AADF;AADF,QADF;AAOD,KA1BD;;AA4BA1B,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,WAAZ,EAAyB,MAAM;AAC7B0U,MAAAA,MAAM,CAACpL,IAAC,GAAD,KAAD,EAAUuL,SAAV,CAAN;AACD,KAFD;AAIA9E,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,cAAZ,EAA4B,MAAM;AAChC0U,MAAAA,MAAM,CAAC,IAAD,EAAOG,SAAP,CAAN;AACD,KAFD;AAGD;;AA3C2B;AA8C9BF,QAAQ,CAAC7Q,OAAT,GAAmB,CAAE,iBAAF,EAAqB,UAArB,EAAiC,YAAjC,EAA+C,UAA/C,CAAnB;;AC9DA,mBAAe;AACbsR,EAAAA,QAAQ,EAAE,CAAE,YAAF,EAAgB,UAAhB,CADG;AAEblR,EAAAA,UAAU,EAAE,CAAE,MAAF,EAAUmR,UAAV,CAFC;AAGbC,EAAAA,QAAQ,EAAE,CAAE,MAAF,EAAUX,QAAV;AAHG,CAAf;;ACIA,WAAe;AACbY,EAAAA,WAAW,EAAE,CACXC,YADW,EAEXC,YAFW,CADA;AAKb1F,EAAAA,QAAQ,EAAE,CAAE,MAAF,EAAUjQ,QAAV,CALG;AAMbmE,EAAAA,iBAAiB,EAAE,CAAE,MAAF,EAAUuB,iBAAV,CANN;AAOba,EAAAA,YAAY,EAAE,CAAE,MAAF,EAAUtC,YAAV,CAPD;AAQbF,EAAAA,QAAQ,EAAE,CAAE,SAAF,EAAaH,eAAb;AARG,CAAf;;ACHA,IAAIgS,oBAAoB,GAAG,4BAA3B;AAAA,IACIC,mBAAmB,GAAG,uBAD1B;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASC,aAAT,CAAuB7F,QAAvB,EAAiC2B,QAAjC,EAA2C;AAExD;AACA,OAAKmE,QAAL,GAAgB,EAAhB;AAEA,MAAIjV,IAAI,GAAG,IAAX;AAEAmP,EAAAA,QAAQ,CAAC/P,EAAT,CAAY,cAAZ,EAA4B,YAAW;AAErC;AACA;AACAY,IAAAA,IAAI,CAACkV,uBAAL,CAA6BpE,QAA7B,EAJqC;AAOrC;;;AACA3B,IAAAA,QAAQ,CAACjO,IAAT,CAAc,oBAAd,EAAoC;AAClCiU,MAAAA,aAAa,EAAEnV;AADmB,KAApC;AAGD,GAXD;AAaD;AAEDgV,aAAa,CAAC9R,OAAd,GAAwB,CACtB,UADsB,EAEtB,UAFsB,CAAxB;AAKA;AACA;AACA;AACA;AACA;;AACA8R,aAAa,CAAC/V,SAAd,CAAwBiW,uBAAxB,GAAkD,UAASpE,QAAT,EAAmB;AAEnE;AAEA,MAAIsE,YAAY,GAAGtE,QAAQ,CAAC/M,GAAT,CAAa,cAAb,EAA6B,KAA7B,CAAnB;AACA,MAAI2L,QAAQ,GAAGoB,QAAQ,CAAC/M,GAAT,CAAa,UAAb,EAAyB,KAAzB,CAAf;AACA,MAAI4L,SAAS,GAAGmB,QAAQ,CAAC/M,GAAT,CAAa,WAAb,EAA0B,KAA1B,CAAhB;AACA,MAAIsR,UAAU,GAAGvE,QAAQ,CAAC/M,GAAT,CAAa,YAAb,EAA2B,KAA3B,CAAjB;AACA,MAAIuR,SAAS,GAAGxE,QAAQ,CAAC/M,GAAT,CAAa,WAAb,EAA0B,KAA1B,CAAhB;AACA,MAAIwR,MAAM,GAAGzE,QAAQ,CAAC/M,GAAT,CAAa,QAAb,EAAuB,KAAvB,CAAb;AACA,MAAIyR,KAAK,GAAG1E,QAAQ,CAAC/M,GAAT,CAAa,OAAb,EAAsB,KAAtB,CAAZ;AACA,MAAI0R,YAAY,GAAG3E,QAAQ,CAAC/M,GAAT,CAAa,cAAb,EAA6B,KAA7B,CAAnB;AACA,MAAI2R,qBAAqB,GAAG5E,QAAQ,CAAC/M,GAAT,CAAa,uBAAb,EAAsC,KAAtC,CAA5B,CAZmE;;AAgBnE,MAAIqR,YAAJ,EAAkB;AAChB,SAAKO,QAAL,CAAc,MAAd,EAAsB,YAAW;AAC/BP,MAAAA,YAAY,CAACQ,IAAb;AACD,KAFD;AAIA,SAAKD,QAAL,CAAc,MAAd,EAAsB,YAAW;AAC/BP,MAAAA,YAAY,CAACS,IAAb;AACD,KAFD;AAGD;;AAED,MAAIP,SAAS,IAAI3F,SAAjB,EAA4B;AAC1B,SAAKgG,QAAL,CAAc,MAAd,EAAsB,YAAW;AAC/B,UAAIG,gBAAgB,GAAGnG,SAAS,CAAC5L,GAAV,EAAvB;AAEAuR,MAAAA,SAAS,CAACvM,IAAV,CAAe+M,gBAAf;AACD,KAJD;AAKD;;AAED,MAAIR,SAAJ,EAAe;AACb,SAAKK,QAAL,CAAc,OAAd,EAAuB,YAAW;AAChCL,MAAAA,SAAS,CAACS,KAAV;AACD,KAFD;AAGD;;AAED,MAAIV,UAAJ,EAAgB;AACd,SAAKM,QAAL,CAAc,UAAd,EAA0B,UAASK,IAAT,EAAe;AACvCX,MAAAA,UAAU,CAACY,QAAX,CAAoBD,IAAI,CAACvM,KAAzB;AACD,KAFD;AAGD;;AAED,MAAI8L,MAAJ,EAAY;AACV,SAAKI,QAAL,CAAc,MAAd,EAAsB,UAASK,IAAT,EAAe;AACnCT,MAAAA,MAAM,CAACW,IAAP,CAAYF,IAAI,CAACvM,KAAjB;AACD,KAFD;AAGD;;AAED,MAAIiG,QAAQ,IAAIC,SAAZ,IAAyB6F,KAA7B,EAAoC;AAClC,SAAKG,QAAL,CAAc,iBAAd,EAAiC,YAAW;AAE1C,UAAIG,gBAAgB,GAAGnG,SAAS,CAAC5L,GAAV,EAAvB;;AAEA,UAAI,CAAC+R,gBAAgB,CAAC1M,MAAtB,EAA8B;AAC5B;AACD;;AAED,UAAI+M,OAAO,GAAGX,KAAK,CAACW,OAAN,CAAc,iBAAd,EAAiC;AAAEC,QAAAA,QAAQ,EAAEN;AAAZ,OAAjC,CAAd;AAAA,UACIO,iBADJ;;AAGA,UAAIF,OAAO,KAAK,KAAhB,EAAuB;AACrB;AACD,OAFD,MAGK,IAAIzW,OAAO,CAACyW,OAAD,CAAX,EAAsB;AACzBE,QAAAA,iBAAiB,GAAGF,OAApB;AACD,OAFI,MAGA;AACHE,QAAAA,iBAAiB,GAAGP,gBAApB;AACD;;AAED,UAAIO,iBAAiB,CAACjN,MAAtB,EAA8B;AAC5BsG,QAAAA,QAAQ,CAAC4G,cAAT,CAAwBD,iBAAiB,CAACtX,KAAlB,EAAxB;AACD;AACF,KAxBD;AAyBD;;AAED,MAAI0W,YAAJ,EAAkB;AAChB,SAAKE,QAAL,CAAc,YAAd,EAA4B,UAASK,IAAT,EAAe;AACzCP,MAAAA,YAAY,CAACc,UAAb,CAAwBP,IAAxB;AACD,KAFD;AAGD;;AAED,MAAIN,qBAAJ,EAA2B;AACzB,SAAKC,QAAL,CAAc,eAAd,EAA+B,UAASK,IAAT,EAAe;AAC5CN,MAAAA,qBAAqB,CAACc,aAAtB,CAAoCR,IAAI,CAACS,SAAzC,EAAoDT,IAAI,CAACU,WAAzD;AACD,KAFD;AAGD;AAEF,CA5FD;AA+FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA1B,aAAa,CAAC/V,SAAd,CAAwB0X,OAAxB,GAAkC,UAASC,MAAT,EAAiBZ,IAAjB,EAAuB;AACvD,MAAI,CAAC,KAAKf,QAAL,CAAc2B,MAAd,CAAL,EAA4B;AAC1B,UAAM/U,KAAK,CAAC+U,MAAD,EAAS9B,oBAAT,CAAX;AACD;;AAED,SAAO,KAAKG,QAAL,CAAc2B,MAAd,EAAsBZ,IAAtB,CAAP;AACD,CAND;AASA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAhB,aAAa,CAAC/V,SAAd,CAAwB0W,QAAxB,GAAmC,UAASkB,OAAT,EAAkB/U,QAAlB,EAA4B;AAC7D,MAAI9B,IAAI,GAAG,IAAX;;AAEA,MAAI,OAAO6W,OAAP,KAAmB,QAAvB,EAAiC;AAC/B,WAAO,KAAKC,eAAL,CAAqBD,OAArB,EAA8B/U,QAA9B,CAAP;AACD;;AAED7B,EAAAA,OAAO,CAAC4W,OAAD,EAAU,UAAS/U,QAAT,EAAmB8U,MAAnB,EAA2B;AAC1C5W,IAAAA,IAAI,CAAC8W,eAAL,CAAqBF,MAArB,EAA6B9U,QAA7B;AACD,GAFM,CAAP;AAGD,CAVD;AAYA;AACA;AACA;AACA;AACA;AACA;;;AACAkT,aAAa,CAAC/V,SAAd,CAAwB6X,eAAxB,GAA0C,UAASF,MAAT,EAAiB9U,QAAjB,EAA2B;AACnE,MAAI,KAAKiV,YAAL,CAAkBH,MAAlB,CAAJ,EAA+B;AAC7B,UAAM/U,KAAK,CAAC+U,MAAD,EAAS7B,mBAAT,CAAX;AACD;;AAED,OAAKE,QAAL,CAAc2B,MAAd,IAAwB9U,QAAxB;AACD,CAND;AAQA;AACA;AACA;AACA;AACA;;;AACAkT,aAAa,CAAC/V,SAAd,CAAwB+X,UAAxB,GAAqC,UAASJ,MAAT,EAAiB;AACpD,MAAI,CAAC,KAAKG,YAAL,CAAkBH,MAAlB,CAAL,EAAgC;AAC9B,UAAM/U,KAAK,CAAC+U,MAAD,EAAS9B,oBAAT,CAAX;AACD;;AAED,OAAKG,QAAL,CAAc2B,MAAd,IAAwBlV,SAAxB;AACD,CAND;AAQA;AACA;AACA;AACA;AACA;;;AACAsT,aAAa,CAAC/V,SAAd,CAAwBgY,UAAxB,GAAqC,YAAW;AAC9C,SAAOC,MAAM,CAACC,IAAP,CAAY,KAAKlC,QAAjB,CAAP;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAD,aAAa,CAAC/V,SAAd,CAAwB8X,YAAxB,GAAuC,UAASH,MAAT,EAAiB;AACtD,SAAO,CAAC,CAAC,KAAK3B,QAAL,CAAc2B,MAAd,CAAT;AACD,CAFD;;AAKA,SAAS/U,KAAT,CAAe+U,MAAf,EAAuBQ,OAAvB,EAAgC;AAC9B,SAAO,IAAIvX,KAAJ,CAAU+W,MAAM,GAAG,GAAT,GAAeQ,OAAzB,CAAP;AACD;;AC/PD,4BAAe;AACb5C,EAAAA,QAAQ,EAAE,CAAE,eAAF,CADG;AAEbW,EAAAA,aAAa,EAAE,CAAE,MAAF,EAAUH,aAAV;AAFF,CAAf;;ACCe,MAAMqC,iBAAN,SAAgCrC,aAAhC,CAA8C;AAC3D5R,EAAAA,WAAW,CAAC+L,QAAD,EAAW2B,QAAX,EAAqB;AAC9B,UAAM3B,QAAN,EAAgB2B,QAAhB;AAEA3B,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,WAAZ,EAAyB,MAAM;AAC7B,WAAK8V,uBAAL,CAA6BpE,QAA7B;;AAEA3B,MAAAA,QAAQ,CAACjO,IAAT,CAAc,oBAAd,EAAoC;AAClCiU,QAAAA,aAAa,EAAE;AADmB,OAApC;AAGD,KAND;AAOD;;AAEDD,EAAAA,uBAAuB,CAACpE,QAAD,EAAW;AAChC,UAAMsE,YAAY,GAAGtE,QAAQ,CAAC/M,GAAT,CAAa,cAAb,EAA6B,KAA7B,CAArB;AAAA,UACMV,iBAAiB,GAAGyN,QAAQ,CAAC/M,GAAT,CAAa,mBAAb,EAAkC,KAAlC,CAD1B;AAAA,UAEM4L,SAAS,GAAGmB,QAAQ,CAAC/M,GAAT,CAAa,WAAb,EAA0B,KAA1B,CAFlB;;AAIA,QAAIqR,YAAJ,EAAkB;AAEhB;AACA,WAAKO,QAAL,CAAc,MAAd,EAAsB,MAAM;AAC1BP,QAAAA,YAAY,CAACQ,IAAb;AACD,OAFD,EAHgB;;AAQhB,WAAKD,QAAL,CAAc,MAAd,EAAsB,MAAM;AAC1BP,QAAAA,YAAY,CAACS,IAAb;AACD,OAFD;AAGD;;AAED,QAAIxS,iBAAiB,IAAIsM,SAAzB,EAAoC;AAElC;AACA,WAAKgG,QAAL,CAAc,iBAAd,EAAiC,CAAC3K,OAAO,GAAG,EAAX,KAAkB;AACjD,cAAM;AAAEpH,UAAAA;AAAF,YAASoH,OAAf;;AAEA,YAAI,CAACpH,EAAL,EAAS;AACP;AACD;;AAED,cAAMmB,SAAS,GAAG1B,iBAAiB,CAACU,GAAlB,CAAsBH,EAAtB,CAAlB;;AAEA,YAAImB,SAAJ,EAAe;AACb4K,UAAAA,SAAS,CAACnB,GAAV,CAAczJ,SAAd;AACD;AACF,OAZD;AAaD;AACF;;AAhD0D;AAmD7DsS,iBAAiB,CAACnU,OAAlB,GAA4B,CAC1B,UAD0B,EAE1B,UAF0B,CAA5B;;AClDA,0BAAe;AACbyR,EAAAA,WAAW,EAAE,CACX2C,qBADW,CADA;AAIbnC,EAAAA,aAAa,EAAE,CAAE,MAAF,EAAUkC,iBAAV;AAJF,CAAf;;ACFA;AACA;AACA;AACA;;AACO,SAASE,WAAT,CAAqBjX,KAArB,EAA4B;AACjC,SAAQA,KAAK,CAACkX,OAAN,IAAiBlX,KAAK,CAACmX,OAAvB,IAAkCnX,KAAK,CAACoX,QAAxC,IAAoDpX,KAAK,CAACqX,MAAlE;AACD;AAED;AACA;AACA;;AACO,SAASC,KAAT,CAAetX,KAAf,EAAsB;AAE3B;AACA;AACA,MAAIA,KAAK,CAACqX,MAAV,EAAkB;AAChB,WAAO,KAAP;AACD;;AAED,SAAOrX,KAAK,CAACkX,OAAN,IAAiBlX,KAAK,CAACmX,OAA9B;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;AACO,SAASI,KAAT,CAAeV,IAAf,EAAqB7W,KAArB,EAA4B;AACjC6W,EAAAA,IAAI,GAAGzX,OAAO,CAACyX,IAAD,CAAP,GAAgBA,IAAhB,GAAuB,CAAEA,IAAF,CAA9B;AAEA,SAAOA,IAAI,CAACW,OAAL,CAAaxX,KAAK,CAACuD,GAAnB,MAA4B,CAAC,CAA7B,IAAkCsT,IAAI,CAACW,OAAL,CAAaxX,KAAK,CAACyX,OAAnB,MAAgC,CAAC,CAA1E;AACD;AAED;AACA;AACA;;AACO,SAASC,OAAT,CAAiB1X,KAAjB,EAAwB;AAC7B,SAAOA,KAAK,CAACoX,QAAb;AACD;;ACxBD,IAAIO,aAAa,GAAG,kBAApB;AAAA,IACIC,WAAW,GAAG,gBADlB;AAGA,IAAIC,yBAAyB,GAAG,4BAAhC;AAEA,IAAIrZ,kBAAgB,GAAG,IAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASsZ,QAAT,CAAkBrV,MAAlB,EAA0BoM,QAA1B,EAAoC;AACjD,MAAInP,IAAI,GAAG,IAAX;AAEA,OAAKqY,OAAL,GAAetV,MAAM,IAAI,EAAzB;AACA,OAAKmC,SAAL,GAAiBiK,QAAjB;AAEA,OAAKmJ,eAAL,GAAuB,KAAKA,eAAL,CAAqBvY,IAArB,CAA0B,IAA1B,CAAvB;AACA,OAAKwY,aAAL,GAAqB,KAAKA,aAAL,CAAmBxY,IAAnB,CAAwB,IAAxB,CAArB,CAPiD;;AAUjDoP,EAAAA,QAAQ,CAAC/P,EAAT,CAAY,iBAAZ,EAA+B,YAAW;AACxCY,IAAAA,IAAI,CAACwY,KAAL,CAAW,SAAX;;AAEAxY,IAAAA,IAAI,CAACyY,MAAL;AACD,GAJD;AAMAtJ,EAAAA,QAAQ,CAAC/P,EAAT,CAAY,cAAZ,EAA4B,YAAW;AACrCY,IAAAA,IAAI,CAACwY,KAAL,CAAW,MAAX;AACD,GAFD;AAIArJ,EAAAA,QAAQ,CAAC/P,EAAT,CAAY,QAAZ,EAAsB,YAAW;AAC/B,QAAI2D,MAAM,IAAIA,MAAM,CAAC2V,MAArB,EAA6B;AAC3B1Y,MAAAA,IAAI,CAACD,IAAL,CAAUgD,MAAM,CAAC2V,MAAjB;AACD;AACF,GAJD;AAMAvJ,EAAAA,QAAQ,CAAC/P,EAAT,CAAY,QAAZ,EAAsB,YAAW;AAC/BY,IAAAA,IAAI,CAACyY,MAAL;AACD,GAFD;AAGD;AAEDL,QAAQ,CAAClV,OAAT,GAAmB,CACjB,iBADiB,EAEjB,UAFiB,CAAnB;;AAKAkV,QAAQ,CAACnZ,SAAT,CAAmBqZ,eAAnB,GAAqC,UAAShY,KAAT,EAAgB;AACnD,OAAKqY,WAAL,CAAiBrY,KAAjB,EAAwB2X,aAAxB;AACD,CAFD;;AAIAG,QAAQ,CAACnZ,SAAT,CAAmBsZ,aAAnB,GAAmC,UAASjY,KAAT,EAAgB;AACjD,OAAKqY,WAAL,CAAiBrY,KAAjB,EAAwB4X,WAAxB;AACD,CAFD;;AAIAE,QAAQ,CAACnZ,SAAT,CAAmB0Z,WAAnB,GAAiC,UAASrY,KAAT,EAAgBa,IAAhB,EAAsB;AACrD,MAAIyX,cAAJ;;AAEA,MAAI,KAAKC,eAAL,CAAqBvY,KAArB,CAAJ,EAAiC;AAC/B;AACD;;AAED,MAAIwY,OAAO,GAAG;AACZC,IAAAA,QAAQ,EAAEzY;AADE,GAAd;AAIAsY,EAAAA,cAAc,GAAG,KAAK1T,SAAL,CAAehE,IAAf,CAAoBC,IAAI,IAAI8W,aAA5B,EAA2Ca,OAA3C,CAAjB;;AAEA,MAAIF,cAAJ,EAAoB;AAClBtY,IAAAA,KAAK,CAAC6B,cAAN;AACD;AACF,CAhBD;;AAkBAiW,QAAQ,CAACnZ,SAAT,CAAmB4Z,eAAnB,GAAqC,UAASvY,KAAT,EAAgB;AACnD,SAAO0Y,OAAO,CAAC1Y,KAAK,CAACqJ,MAAP,CAAP,IAAyB,KAAKsP,qBAAL,CAA2B3Y,KAA3B,CAAhC;AACD,CAFD;;AAIA8X,QAAQ,CAACnZ,SAAT,CAAmBga,qBAAnB,GAA2C,UAAS3Y,KAAT,EAAgB;AACzD,MAAI,CAACsX,KAAK,CAACtX,KAAD,CAAV,EAAmB;AACjB,WAAO,IAAP;AACD;;AAED,MAAI4Y,gBAAgB,GAAG,KAAKC,oBAAL,CAA0B7Y,KAAK,CAACqJ,MAAhC,CAAvB;;AACA,SAAO,CAACuP,gBAAgB,CAACvK,QAAjB,CAA0BrO,KAAK,CAACuD,GAAhC,CAAR;AACD,CAPD;;AASAuU,QAAQ,CAACnZ,SAAT,CAAmBka,oBAAnB,GAA0C,UAASC,OAAT,EAAkB;AAC1D,MAAIC,iBAAiB,GAAGC,OAAU,CAACF,OAAD,EAAU,MAAMjB,yBAAN,GAAkC,GAA5C,EAAiD,IAAjD,CAAlC;;AAEA,MAAI,CAACkB,iBAAD,IAAuB,KAAKE,KAAL,IAAc,CAAC,KAAKA,KAAL,CAAW5H,QAAX,CAAoB0H,iBAApB,CAA1C,EAAmF;AACjF,WAAO,EAAP;AACD;;AAED,SAAOA,iBAAiB,CAACG,YAAlB,CAA+BrB,yBAA/B,EAA0D7H,KAA1D,CAAgE,GAAhE,CAAP;AACD,CARD;;AAUA8H,QAAQ,CAACnZ,SAAT,CAAmBc,IAAnB,GAA0B,UAAS0Z,IAAT,EAAe;AAEvC;AACA,OAAKhB,MAAL;AAEA,OAAKc,KAAL,GAAaE,IAAb,CALuC;;AAQvCC,EAAAA,KAAQ,CAAC3Z,IAAT,CAAc0Z,IAAd,EAAoB,SAApB,EAA+B,KAAKnB,eAApC,EAAqD,IAArD;AACAoB,EAAAA,KAAQ,CAAC3Z,IAAT,CAAc0Z,IAAd,EAAoB,OAApB,EAA6B,KAAKlB,aAAlC,EAAiD,IAAjD;;AAEA,OAAKC,KAAL,CAAW,MAAX;AACD,CAZD;;AAcAJ,QAAQ,CAACnZ,SAAT,CAAmB0a,UAAnB,GAAgC,YAAW;AACzC,SAAO,KAAKJ,KAAZ;AACD,CAFD;;AAIAnB,QAAQ,CAACnZ,SAAT,CAAmBwZ,MAAnB,GAA4B,YAAW;AACrC,MAAIgB,IAAI,GAAG,KAAKF,KAAhB;;AAEA,MAAIE,IAAJ,EAAU;AACR,SAAKjB,KAAL,CAAW,QAAX,EADQ;;;AAIRkB,IAAAA,KAAQ,CAACjB,MAAT,CAAgBgB,IAAhB,EAAsB,SAAtB,EAAiC,KAAKnB,eAAtC,EAAuD,IAAvD;AACAoB,IAAAA,KAAQ,CAACjB,MAAT,CAAgBgB,IAAhB,EAAsB,OAAtB,EAA+B,KAAKlB,aAApC,EAAmD,IAAnD;AACD;;AAED,OAAKgB,KAAL,GAAa,IAAb;AACD,CAZD;;AAcAnB,QAAQ,CAACnZ,SAAT,CAAmBuZ,KAAnB,GAA2B,UAASlY,KAAT,EAAgB;AACzC,OAAK4E,SAAL,CAAehE,IAAf,CAAoB,cAAcZ,KAAlC,EAAyC;AAAEmZ,IAAAA,IAAI,EAAE,KAAKF;AAAb,GAAzC;AACD,CAFD;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAnB,QAAQ,CAACnZ,SAAT,CAAmB2a,WAAnB,GAAiC,UAASra,QAAT,EAAmBuC,QAAnB,EAA6BX,IAA7B,EAAmC;AAClE,MAAIxB,UAAU,CAACJ,QAAD,CAAd,EAA0B;AACxB4B,IAAAA,IAAI,GAAGW,QAAP;AACAA,IAAAA,QAAQ,GAAGvC,QAAX;AACAA,IAAAA,QAAQ,GAAGT,kBAAX;AACD;;AAED,OAAKoG,SAAL,CAAe9F,EAAf,CAAkB+B,IAAI,IAAI8W,aAA1B,EAAyC1Y,QAAzC,EAAmDuC,QAAnD;AACD,CARD;;AAUAsW,QAAQ,CAACnZ,SAAT,CAAmB4a,cAAnB,GAAoC,UAAS/X,QAAT,EAAmBX,IAAnB,EAAyB;AAC3D,OAAK+D,SAAL,CAAetE,GAAf,CAAmBO,IAAI,IAAI8W,aAA3B,EAA0CnW,QAA1C;AACD,CAFD;;AAIAsW,QAAQ,CAACnZ,SAAT,CAAmBsY,WAAnB,GAAiCA,WAAjC;AACAa,QAAQ,CAACnZ,SAAT,CAAmB2Y,KAAnB,GAA2BA,KAA3B;AACAQ,QAAQ,CAACnZ,SAAT,CAAmB+Y,OAAnB,GAA6BA,OAA7B;AACAI,QAAQ,CAACnZ,SAAT,CAAmB4Y,KAAnB,GAA2BA,KAA3B;;AAMA,SAASmB,OAAT,CAAiBrP,MAAjB,EAAyB;AACvB,SAAOA,MAAM,KAAKmQ,OAAU,CAACnQ,MAAD,EAAS,iBAAT,CAAV,IAAyCA,MAAM,CAACoQ,eAAP,KAA2B,MAAzE,CAAb;AACD;;ACrMD,IAAIC,cAAY,GAAG,GAAnB;AAEO,IAAIC,SAAS,GAAG,EAAhB;AACA,IAAIC,SAAS,GAAG,EAAhB;AACA,IAAIC,SAAS,GAAG,EAAhB;AACA,IAAIC,SAAS,GAAG,EAAhB;AAEA,IAAIC,SAAS,GAAG,CAAC,GAAD,EAAM,GAAN,EAAWJ,SAAX,CAAhB;AACA,IAAIK,UAAU,GAAG,CAAE,GAAF,EAAO,GAAP,EAAYJ,SAAZ,CAAjB;AACA,IAAIK,SAAS,GAAG,CAAE,GAAF,EAAO,GAAP,EAAYJ,SAAZ,CAAhB;AACA,IAAIK,SAAS,GAAG,CAAE,GAAF,EAAO,GAAP,EAAYJ,SAAZ,CAAhB;AAGP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASK,gBAAT,CAA0BtL,QAA1B,EAAoCuL,QAApC,EAA8C;AAE3D,MAAI1a,IAAI,GAAG,IAAX;AAEAmP,EAAAA,QAAQ,CAAC/P,EAAT,CAAY,oBAAZ,EAAkC4a,cAAlC,EAAgD,UAAS1Z,KAAT,EAAgB;AAE9D,QAAI6U,aAAa,GAAG7U,KAAK,CAAC6U,aAA1B;AAEAnV,IAAAA,IAAI,CAAC2a,gBAAL,CAAsBD,QAAtB,EAAgCvF,aAAhC;AACD,GALD;AAMD;AAEDsF,gBAAgB,CAACvX,OAAjB,GAA2B,CACzB,UADyB,EAEzB,UAFyB,CAA3B;AAMA;AACA;AACA;AACA;AACA;AACA;;AACAuX,gBAAgB,CAACxb,SAAjB,CAA2B0b,gBAA3B,GAA8C,UAASD,QAAT,EAAmBvF,aAAnB,EAAkC;AAE9E;AACF;AACA;AACA;AACA;AACA;AACA;AACE,WAASyE,WAAT,CAAqBhD,MAArB,EAA6B/T,EAA7B,EAAiC;AAE/B,QAAIsS,aAAa,CAAC4B,YAAd,CAA2BH,MAA3B,CAAJ,EAAwC;AACtC8D,MAAAA,QAAQ,CAACd,WAAT,CAAqB/W,EAArB;AACD;AACF,GAd6E;AAkB9E;;;AACA+W,EAAAA,WAAW,CAAC,MAAD,EAAS,UAASd,OAAT,EAAkB;AAEpC,QAAIxY,KAAK,GAAGwY,OAAO,CAACC,QAApB;;AAEA,QAAInB,KAAK,CAACtX,KAAD,CAAL,IAAgB,CAAC0X,OAAO,CAAC1X,KAAD,CAAxB,IAAmCuX,KAAK,CAAC2C,SAAD,EAAYla,KAAZ,CAA5C,EAAgE;AAC9D6U,MAAAA,aAAa,CAACwB,OAAd,CAAsB,MAAtB;AAEA,aAAO,IAAP;AACD;AACF,GATU,CAAX,CAnB8E;AA+B9E;AACA;;AACAiD,EAAAA,WAAW,CAAC,MAAD,EAAS,UAASd,OAAT,EAAkB;AAEpC,QAAIxY,KAAK,GAAGwY,OAAO,CAACC,QAApB;;AAEA,QAAInB,KAAK,CAACtX,KAAD,CAAL,KAAiBuX,KAAK,CAAC0C,SAAD,EAAYja,KAAZ,CAAL,IAA4BuX,KAAK,CAAC2C,SAAD,EAAYla,KAAZ,CAAL,IAA2B0X,OAAO,CAAC1X,KAAD,CAA/E,CAAJ,EAA8F;AAC5F6U,MAAAA,aAAa,CAACwB,OAAd,CAAsB,MAAtB;AAEA,aAAO,IAAP;AACD;AACF,GATU,CAAX,CAjC8E;AA6C9E;;AACAiD,EAAAA,WAAW,CAAC,MAAD,EAAS,UAASd,OAAT,EAAkB;AAEpC,QAAIxY,KAAK,GAAGwY,OAAO,CAACC,QAApB;;AAEA,QAAInB,KAAK,CAACtX,KAAD,CAAL,IAAgBuX,KAAK,CAACwC,SAAD,EAAY/Z,KAAZ,CAAzB,EAA6C;AAC3C6U,MAAAA,aAAa,CAACwB,OAAd,CAAsB,MAAtB;AAEA,aAAO,IAAP;AACD;AACF,GATU,CAAX,CA9C8E;AA0D9E;;AACAiD,EAAAA,WAAW,CAAC,OAAD,EAAU,UAASd,OAAT,EAAkB;AAErC,QAAIxY,KAAK,GAAGwY,OAAO,CAACC,QAApB;;AAEA,QAAInB,KAAK,CAACtX,KAAD,CAAL,IAAgBuX,KAAK,CAACyC,UAAD,EAAaha,KAAb,CAAzB,EAA8C;AAC5C6U,MAAAA,aAAa,CAACwB,OAAd,CAAsB,OAAtB;AAEA,aAAO,IAAP;AACD;AACF,GATU,CAAX,CA3D8E;AAuE9E;;AACAiD,EAAAA,WAAW,CAAC,UAAD,EAAa,UAASd,OAAT,EAAkB;AAExC,QAAIxY,KAAK,GAAGwY,OAAO,CAACC,QAApB,CAFwC;AAKxC;;AACA,QAAIlB,KAAK,CAAC,CAAE,GAAF,EAAO,KAAP,EAAc,GAAd,CAAD,EAAsBvX,KAAtB,CAAL,IAAqCsX,KAAK,CAACtX,KAAD,CAA9C,EAAuD;AACrD6U,MAAAA,aAAa,CAACwB,OAAd,CAAsB,UAAtB,EAAkC;AAAElN,QAAAA,KAAK,EAAE;AAAT,OAAlC;AAEA,aAAO,IAAP;AACD;AACF,GAXU,CAAX,CAxE8E;AAsF9E;;AACAmQ,EAAAA,WAAW,CAAC,UAAD,EAAa,UAASd,OAAT,EAAkB;AAExC,QAAIxY,KAAK,GAAGwY,OAAO,CAACC,QAApB;;AAEA,QAAIlB,KAAK,CAAC,CAAE,GAAF,EAAO,UAAP,CAAD,EAAsBvX,KAAtB,CAAL,IAAqCsX,KAAK,CAACtX,KAAD,CAA9C,EAAuD;AACrD6U,MAAAA,aAAa,CAACwB,OAAd,CAAsB,UAAtB,EAAkC;AAAElN,QAAAA,KAAK,EAAE,CAAC;AAAV,OAAlC;AAEA,aAAO,IAAP;AACD;AACF,GATU,CAAX,CAvF8E;AAmG9E;;AACAmQ,EAAAA,WAAW,CAAC,MAAD,EAAS,UAASd,OAAT,EAAkB;AAEpC,QAAIxY,KAAK,GAAGwY,OAAO,CAACC,QAApB;;AAEA,QAAIlB,KAAK,CAAC,GAAD,EAAMvX,KAAN,CAAL,IAAqBsX,KAAK,CAACtX,KAAD,CAA9B,EAAuC;AACrC6U,MAAAA,aAAa,CAACwB,OAAd,CAAsB,MAAtB,EAA8B;AAAElN,QAAAA,KAAK,EAAE;AAAT,OAA9B;AAEA,aAAO,IAAP;AACD;AACF,GATU,CAAX,CApG8E;AAgH9E;;AACAmQ,EAAAA,WAAW,CAAC,iBAAD,EAAoB,UAASd,OAAT,EAAkB;AAE/C,QAAIxY,KAAK,GAAGwY,OAAO,CAACC,QAApB;;AAEA,QAAIlB,KAAK,CAAC,CAAC,WAAD,EAAc,QAAd,EAAwB,KAAxB,CAAD,EAAkCvX,KAAlC,CAAT,EAAmD;AACjD6U,MAAAA,aAAa,CAACwB,OAAd,CAAsB,iBAAtB;AAEA,aAAO,IAAP;AACD;AACF,GATU,CAAX;AAUD,CA3HD;;ACjDA,uBAAe;AACbnC,EAAAA,QAAQ,EAAE,CAAE,UAAF,EAAc,kBAAd,CADG;AAEbkG,EAAAA,QAAQ,EAAE,CAAE,MAAF,EAAUtC,QAAV,CAFG;AAGbwC,EAAAA,gBAAgB,EAAE,CAAE,MAAF,EAAUH,gBAAV;AAHL,CAAf;;ACQA,MAAMT,YAAY,GAAG,GAArB;AAEe,MAAMa,0BAAN,CAAiC;AAC9CzX,EAAAA,WAAW,CAAC+L,QAAD,EAAWuL,QAAX,EAAqB;AAC9BvL,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,oBAAZ,EAAkC4a,YAAlC,EAAiD1Z,KAAD,IAAW;AACzD,YAAM;AAAE6U,QAAAA;AAAF,UAAoB7U,KAA1B;AAEA,WAAKqa,gBAAL,CAAsBD,QAAtB,EAAgCvF,aAAhC;AACD,KAJD;AAKD;;AAEDwF,EAAAA,gBAAgB,CAACD,QAAD,EAAWvF,aAAX,EAA0B;AAExC,aAASyE,WAAT,CAAqBhD,MAArB,EAA6B/T,EAA7B,EAAiC;AAC/B,UAAIsS,aAAa,CAAC4B,YAAd,CAA2BH,MAA3B,CAAJ,EAAwC;AACtC8D,QAAAA,QAAQ,CAACd,WAAT,CAAqB/W,EAArB;AACD;AACF,KANuC;AASxC;;;AACA+W,IAAAA,WAAW,CAAC,MAAD,EAAUd,OAAD,IAAa;AAC/B,YAAM;AAAEC,QAAAA;AAAF,UAAeD,OAArB;;AAEA,UAAIlB,KAAK,CAACmB,QAAD,CAAL,IAAmB,CAACf,OAAO,CAACe,QAAD,CAA3B,IAAyClB,KAAK,CAAC2C,SAAD,EAAYzB,QAAZ,CAAlD,EAAyE;AACvE5D,QAAAA,aAAa,CAACwB,OAAd,CAAsB,MAAtB;AAEA,eAAO,IAAP;AACD;AACF,KARU,CAAX,CAVwC;AAqBxC;AACA;;AACAiD,IAAAA,WAAW,CAAC,MAAD,EAAUd,OAAD,IAAa;AAC/B,YAAM;AAAEC,QAAAA;AAAF,UAAeD,OAArB;;AAEA,UAAIlB,KAAK,CAACmB,QAAD,CAAL,KAAoBlB,KAAK,CAAC0C,SAAD,EAAYxB,QAAZ,CAAL,IAA+BlB,KAAK,CAAC2C,SAAD,EAAYzB,QAAZ,CAAL,IAA8Bf,OAAO,CAACe,QAAD,CAAxF,CAAJ,EAA0G;AACxG5D,QAAAA,aAAa,CAACwB,OAAd,CAAsB,MAAtB;AAEA,eAAO,IAAP;AACD;AACF,KARU,CAAX;AAUD;;AA1C6C;AA6ChDkE,0BAA0B,CAAC3X,OAA3B,GAAqC,CAAE,UAAF,EAAc,UAAd,CAArC;;ACtDA,qBAAe;AACbyR,EAAAA,WAAW,EAAE,CACXmG,gBADW,CADA;AAIbtG,EAAAA,QAAQ,EAAE,CAAE,kBAAF,CAJG;AAKboG,EAAAA,gBAAgB,EAAE,CAAE,MAAF,EAAUC,0BAAV;AALL,CAAf;;ACJO,SAASjS,QAAT,CAAkBC,KAAlB,EAAyBzC,KAAzB,EAAgC0C,IAAhC,EAAsC;AAC3CD,EAAAA,KAAK,CAACG,MAAN,CAAa5C,KAAb,EAAoB,CAApB,EAAuB0C,IAAvB;AAEA,SAAOD,KAAP;AACD;AAIM,SAASI,WAAT,CAAqBJ,KAArB,EAA4BzC,KAA5B,EAAmC;AACxCyC,EAAAA,KAAK,CAACG,MAAN,CAAa5C,KAAb,EAAoB,CAApB;AAEA,SAAOyC,KAAP;AACD;AAEM,SAASkS,UAAT,CAAoB1X,iBAApB,EAAuC0B,SAAvC,EAAkDqB,KAAlD,EAAyD;AAC9D,QAAMC,MAAM,GAAGhD,iBAAiB,CAACU,GAAlB,CAAsBgB,SAAS,CAACQ,OAAhC,CAAf;AAEAR,EAAAA,SAAS,CAACwB,KAAV,GAAkB,CAAE,GAAGF,MAAM,CAACE,KAAZ,EAAmB,YAAnB,EAAiCH,KAAjC,CAAlB;AAEA,SAAOrB,SAAP;AACD;;ACZc,MAAMiW,mBAAN,CAA0B;AAEvC;AACF;AACA;AACA;AACA;AACE5X,EAAAA,WAAW,CAACqM,UAAD,EAAapM,iBAAb,EAAgC;AACzC,SAAK4X,WAAL,GAAmBxL,UAAnB;AACA,SAAKlM,kBAAL,GAA0BF,iBAA1B;AACD;;AAED6X,EAAAA,OAAO,CAACpC,OAAD,EAAU;AACf,UAAM;AACJ/T,MAAAA,SADI;AAEJkN,MAAAA,eAFI;AAGJG,MAAAA;AAHI,QAIF0G,OAJJ;;AAMA,UAAM;AAAElT,MAAAA;AAAF,QAAa,KAAKqV,WAAL,CAAiBlK,SAAjB,EAAnB;;AAEA,UAAMoK,UAAU,GAAG,CAAE,GAAGlJ,eAAe,CAAC1L,KAArB,EAA4B,YAA5B,CAAnB;AAEAxB,IAAAA,SAAS,CAACQ,OAAV,GAAoB0M,eAAe,CAACrO,EAApC,CAXe;;AAcfgF,IAAAA,QAAQ,CAAC7E,GAAG,CAAC6B,MAAD,EAASuV,UAAT,CAAJ,EAA0B/I,WAA1B,EAAuCrN,SAAvC,CAAR,CAde;;AAiBfhB,IAAAA,GAAG,CAAC6B,MAAD,EAASuV,UAAT,CAAH,CAAwBlb,OAAxB,CAAgC,CAAC8E,SAAD,EAAYqB,KAAZ,KAAsB2U,UAAU,CAAC,KAAKxX,kBAAN,EAA0BwB,SAA1B,EAAqCqB,KAArC,CAAhE,EAjBe;;AAoBf,SAAK7C,kBAAL,CAAwB6B,GAAxB,CAA4BL,SAA5B,EApBe;;;AAuBf,SAAKkW,WAAL,CAAiBG,SAAjB,CAA2B;AAAExV,MAAAA;AAAF,KAA3B;AACD;;AAEDyV,EAAAA,MAAM,CAACvC,OAAD,EAAU;AACd,UAAM;AACJ/T,MAAAA,SADI;AAEJkN,MAAAA,eAFI;AAGJG,MAAAA;AAHI,QAIF0G,OAJJ;;AAMA,UAAM;AAAElT,MAAAA;AAAF,QAAa,KAAKqV,WAAL,CAAiBlK,SAAjB,EAAnB;;AAEA,UAAMoK,UAAU,GAAG,CAAE,GAAGlJ,eAAe,CAAC1L,KAArB,EAA4B,YAA5B,CAAnB,CATc;;AAYd0C,IAAAA,WAAW,CAAClF,GAAG,CAAC6B,MAAD,EAASuV,UAAT,CAAJ,EAA0B/I,WAA1B,CAAX,CAZc;;AAedrO,IAAAA,GAAG,CAAC6B,MAAD,EAASuV,UAAT,CAAH,CAAwBlb,OAAxB,CAAgC,CAAC8E,SAAD,EAAYqB,KAAZ,KAAsB2U,UAAU,CAAC,KAAKxX,kBAAN,EAA0BwB,SAA1B,EAAqCqB,KAArC,CAAhE,EAfc;;AAkBd,SAAK7C,kBAAL,CAAwB4B,MAAxB,CAA+BJ,SAA/B,EAlBc;;;AAqBd,SAAKkW,WAAL,CAAiBG,SAAjB,CAA2B;AAAExV,MAAAA;AAAF,KAA3B;AACD;;AA5DsC;AA+DzCoV,mBAAmB,CAAC9X,OAApB,GAA8B,CAAE,YAAF,EAAgB,mBAAhB,CAA9B;;ACvEe,MAAMoY,oBAAN,CAA2B;AAExC;AACF;AACA;AACA;AACA;AACElY,EAAAA,WAAW,CAACqM,UAAD,EAAapM,iBAAb,EAAgC;AACzC,SAAK4X,WAAL,GAAmBxL,UAAnB;AACA,SAAKlM,kBAAL,GAA0BF,iBAA1B;AACD;;AAED6X,EAAAA,OAAO,CAACpC,OAAD,EAAU;AACf,UAAM;AACJ/T,MAAAA,SADI;AAEJkO,MAAAA;AAFI,QAGF6F,OAHJ;;AAKA,QAAI;AAAElT,MAAAA;AAAF,QAAa,KAAKqV,WAAL,CAAiBlK,SAAjB,EAAjB;;AAEA,UAAMwK,aAAa,GAAG,EAAtB;;AAEA,SAAK,IAAI1X,GAAT,IAAgBoP,UAAhB,EAA4B;AAC1BsI,MAAAA,aAAa,CAAE1X,GAAF,CAAb,GAAuBkB,SAAS,CAAElB,GAAF,CAAhC;AAEA,YAAM2X,QAAQ,GAAGvI,UAAU,CAAEpP,GAAF,CAA3B;;AAEA,UAAIA,GAAG,KAAK,IAAZ,EAAkB;AAChB,YAAI2X,QAAQ,KAAKzW,SAAS,CAACnB,EAA3B,EAA+B;AAC7B,eAAKL,kBAAL,CAAwBuB,QAAxB,CAAiCC,SAAjC,EAA4CyW,QAA5C;AACD;AACF,OAJD,MAIO;AACLzW,QAAAA,SAAS,CAAElB,GAAF,CAAT,GAAmB2X,QAAnB;AACD;AACF;;AAED1C,IAAAA,OAAO,CAACyC,aAAR,GAAwBA,aAAxB,CAxBe;;AA2Bf,SAAKN,WAAL,CAAiBG,SAAjB,CAA2B;AAAExV,MAAAA;AAAF,KAA3B;;AAEA,WAAOb,SAAP;AACD;;AAEDsW,EAAAA,MAAM,CAACvC,OAAD,EAAU;AACd,UAAM;AACJ/T,MAAAA,SADI;AAEJwW,MAAAA;AAFI,QAGFzC,OAHJ;;AAKA,QAAI;AAAElT,MAAAA;AAAF,QAAa,KAAKqV,WAAL,CAAiBlK,SAAjB,EAAjB;;AAEA,SAAK,IAAIlN,GAAT,IAAgB0X,aAAhB,EAA+B;AAE7B,YAAMC,QAAQ,GAAGD,aAAa,CAAE1X,GAAF,CAA9B;;AAEA,UAAIA,GAAG,KAAK,IAAZ,EAAkB;AAChB,YAAI2X,QAAQ,KAAKzW,SAAS,CAACnB,EAA3B,EAA+B;AAC7B,eAAKL,kBAAL,CAAwBuB,QAAxB,CAAiCC,SAAjC,EAA4CyW,QAA5C;AACD;AACF,OAJD,MAIO;AACLzW,QAAAA,SAAS,CAAElB,GAAF,CAAT,GAAmB2X,QAAnB;AACD;AACF,KAnBa;;;AAsBd,SAAKP,WAAL,CAAiBG,SAAjB,CAA2B;AAAExV,MAAAA;AAAF,KAA3B;;AAEA,WAAOb,SAAP;AACD;;AArEuC;AAyE1CuW,oBAAoB,CAACpY,OAArB,GAA+B,CAC7B,YAD6B,EAE7B,mBAF6B,CAA/B;;AChEe,MAAMuY,oBAAN,CAA2B;AAExC;AACF;AACA;AACA;AACA;AACErY,EAAAA,WAAW,CAACqM,UAAD,EAAapM,iBAAb,EAAgC;AACzC,SAAK4X,WAAL,GAAmBxL,UAAnB;AACA,SAAKlM,kBAAL,GAA0BF,iBAA1B;AACD;;AAED6X,EAAAA,OAAO,CAACpC,OAAD,EAAU;AACf,SAAKrG,aAAL,CAAmBqG,OAAnB;AACD;;AAEDuC,EAAAA,MAAM,CAACvC,OAAD,EAAU;AACd,QAAI;AACFvG,MAAAA,eADE;AAEFN,MAAAA,eAFE;AAGFO,MAAAA,WAHE;AAIFJ,MAAAA;AAJE,QAKA0G,OALJ;AAOA,SAAKrG,aAAL,CAAmB;AACjBF,MAAAA,eAAe,EAAEN,eADA;AAEjBA,MAAAA,eAAe,EAAEM,eAFA;AAGjBC,MAAAA,WAAW,EAAEJ,WAHI;AAIjBA,MAAAA,WAAW,EAAEI;AAJI,KAAnB,EAKG,IALH;AAMD;;AAEDC,EAAAA,aAAa,CAACqG,OAAD,EAAUuC,MAAV,EAAkB;AAC7B,QAAI;AACF9I,MAAAA,eADE;AAEFN,MAAAA,eAFE;AAGFO,MAAAA,WAHE;AAIFJ,MAAAA;AAJE,QAKA0G,OALJ;;AAOA,QAAI;AAAElT,MAAAA;AAAF,QAAa,KAAKqV,WAAL,CAAiBlK,SAAjB,EAAjB;;AAEA,UAAM2K,UAAU,GAAG,CAAE,GAAGnJ,eAAe,CAAChM,KAArB,EAA4B,YAA5B,CAAnB;;AAEA,QAAIgM,eAAe,CAAC3O,EAAhB,KAAuBqO,eAAe,CAACrO,EAA3C,EAA+C;AAE7C,UAAIyX,MAAJ,EAAY;AACV,YAAI7I,WAAW,GAAGJ,WAAlB,EAA+B;AAC7BI,UAAAA,WAAW;AACZ;AACF,OAJD,MAIO;AACL,YAAIA,WAAW,GAAGJ,WAAlB,EAA+B;AAC7BA,UAAAA,WAAW;AACZ;AACF,OAV4C;;;AAa7CuJ,MAAAA,MAAS,CAAC5X,GAAG,CAAC6B,MAAD,EAAS8V,UAAT,CAAJ,EAA0BlJ,WAA1B,EAAuCJ,WAAvC,CAAT,CAb6C;;AAgB7CrO,MAAAA,GAAG,CAAC6B,MAAD,EAAS8V,UAAT,CAAH,CAAwBzb,OAAxB,CAAgC,CAAC8E,SAAD,EAAYqB,KAAZ,KAAsB2U,UAAU,CAAC,KAAKxX,kBAAN,EAA0BwB,SAA1B,EAAqCqB,KAArC,CAAhE;AAED,KAlBD,MAkBO;AACL,YAAMrB,SAAS,GAAGhB,GAAG,CAAC6B,MAAD,EAAS,CAAE,GAAG8V,UAAL,EAAiBlJ,WAAjB,CAAT,CAArB;AAEAzN,MAAAA,SAAS,CAACQ,OAAV,GAAoB0M,eAAe,CAACrO,EAApC,CAHK;;AAMLqF,MAAAA,WAAW,CAAClF,GAAG,CAAC6B,MAAD,EAAS8V,UAAT,CAAJ,EAA0BlJ,WAA1B,CAAX,CANK;;AASLzO,MAAAA,GAAG,CAAC6B,MAAD,EAAS8V,UAAT,CAAH,CAAwBzb,OAAxB,CAAgC,CAAC8E,SAAD,EAAYqB,KAAZ,KAAsB2U,UAAU,CAAC,KAAKxX,kBAAN,EAA0BwB,SAA1B,EAAqCqB,KAArC,CAAhE;AAEA,YAAM+U,UAAU,GAAG,CAAE,GAAGlJ,eAAe,CAAC1L,KAArB,EAA4B,YAA5B,CAAnB,CAXK;;AAcLqC,MAAAA,QAAQ,CAAC7E,GAAG,CAAC6B,MAAD,EAASuV,UAAT,CAAJ,EAA0B/I,WAA1B,EAAuCrN,SAAvC,CAAR,CAdK;;AAiBLhB,MAAAA,GAAG,CAAC6B,MAAD,EAASuV,UAAT,CAAH,CAAwBlb,OAAxB,CAAgC,CAAC8E,SAAD,EAAYqB,KAAZ,KAAsB2U,UAAU,CAAC,KAAKxX,kBAAN,EAA0BwB,SAA1B,EAAqCqB,KAArC,CAAhE;AACD,KAhD4B;;;AAmD7B,SAAK6U,WAAL,CAAiBG,SAAjB,CAA2B;AAAExV,MAAAA;AAAF,KAA3B;AACD;;AApFuC;AAuF1C6V,oBAAoB,CAACvY,OAArB,GAA+B,CAAE,YAAF,EAAgB,mBAAhB,CAA/B;;ACxFe,MAAM0Y,sBAAN,CAA6B;AAE1C;AACF;AACA;AACA;AACA;AACExY,EAAAA,WAAW,CAACqM,UAAD,EAAapM,iBAAb,EAAgC;AACzC,SAAK4X,WAAL,GAAmBxL,UAAnB;AACA,SAAKlM,kBAAL,GAA0BF,iBAA1B;AACD;;AAED6X,EAAAA,OAAO,CAACpC,OAAD,EAAU;AACf,UAAM;AACJvG,MAAAA,eADI;AAEJC,MAAAA;AAFI,QAGFsG,OAHJ;;AAKA,QAAI;AAAElT,MAAAA;AAAF,QAAa,KAAKqV,WAAL,CAAiBlK,SAAjB,EAAjB;;AAEA,UAAM2K,UAAU,GAAG,CAAE,GAAGnJ,eAAe,CAAChM,KAArB,EAA4B,YAA5B,CAAnB;AAEA,UAAMxB,SAAS,GAAG+T,OAAO,CAAC/T,SAAR,GAAoBhB,GAAG,CAAC6B,MAAD,EAAS,CAAE,GAAG8V,UAAL,EAAiBlJ,WAAjB,CAAT,CAAzC,CAVe;;AAafvJ,IAAAA,WAAW,CAAClF,GAAG,CAAC6B,MAAD,EAAS8V,UAAT,CAAJ,EAA0BlJ,WAA1B,CAAX,CAbe;;AAgBfzO,IAAAA,GAAG,CAAC6B,MAAD,EAAS8V,UAAT,CAAH,CAAwBzb,OAAxB,CAAgC,CAAC8E,SAAD,EAAYqB,KAAZ,KAAsB2U,UAAU,CAAC,KAAKxX,kBAAN,EAA0BwB,SAA1B,EAAqCqB,KAArC,CAAhE,EAhBe;;AAmBf,SAAK7C,kBAAL,CAAwB4B,MAAxB,CAA+BJ,SAA/B,EAnBe;;;AAsBf,SAAKkW,WAAL,CAAiBG,SAAjB,CAA2B;AAAExV,MAAAA;AAAF,KAA3B;AACD;;AAEDyV,EAAAA,MAAM,CAACvC,OAAD,EAAU;AACd,UAAM;AACJ/T,MAAAA,SADI;AAEJwN,MAAAA,eAFI;AAGJC,MAAAA;AAHI,QAIFsG,OAJJ;;AAMA,QAAI;AAAElT,MAAAA;AAAF,QAAa,KAAKqV,WAAL,CAAiBlK,SAAjB,EAAjB;;AAEA,UAAM2K,UAAU,GAAG,CAAE,GAAGnJ,eAAe,CAAChM,KAArB,EAA4B,YAA5B,CAAnB,CATc;;AAYdqC,IAAAA,QAAQ,CAAC7E,GAAG,CAAC6B,MAAD,EAAS8V,UAAT,CAAJ,EAA0BlJ,WAA1B,EAAuCzN,SAAvC,CAAR,CAZc;;AAedhB,IAAAA,GAAG,CAAC6B,MAAD,EAAS8V,UAAT,CAAH,CAAwBzb,OAAxB,CAAgC,CAAC8E,SAAD,EAAYqB,KAAZ,KAAsB2U,UAAU,CAAC,KAAKxX,kBAAN,EAA0BwB,SAA1B,EAAqCqB,KAArC,CAAhE,EAfc;;AAkBd,SAAK7C,kBAAL,CAAwB6B,GAAxB,CAA4BL,SAA5B,EAlBc;;;AAqBd,SAAKkW,WAAL,CAAiBG,SAAjB,CAA2B;AAAExV,MAAAA;AAAF,KAA3B;AACD;;AA3DyC;AA8D5CgW,sBAAsB,CAAC1Y,OAAvB,GAAiC,CAAE,YAAF,EAAgB,mBAAhB,CAAjC;;ACtEe,MAAM2Y,oBAAN,CAA2B;AAExC;AACF;AACA;AACA;AACEzY,EAAAA,WAAW,CAACC,iBAAD,EAAoB;AAC7B,SAAKE,kBAAL,GAA0BF,iBAA1B;AACD;;AAED6X,EAAAA,OAAO,CAACpC,OAAD,EAAU;AACf,UAAM;AACJgD,MAAAA,QADI;AAEJ/W,MAAAA,SAFI;AAGJnB,MAAAA;AAHI,QAIFkV,OAJJ;;AAMA,QAAIgD,QAAJ,EAAc;AACZ,WAAKvY,kBAAL,CAAwBS,IAAxB,CAA6BS,KAA7B,CAAmCb,EAAnC,EAAuCmB,SAAvC;AACD,KAFD,MAEO;AACL,WAAKxB,kBAAL,CAAwBS,IAAxB,CAA6B+X,OAA7B,CAAqCnY,EAArC;AACD;AACF;;AAEDyX,EAAAA,MAAM,CAACvC,OAAD,EAAU;AACd,UAAM;AACJgD,MAAAA,QADI;AAEJ/W,MAAAA,SAFI;AAGJnB,MAAAA;AAHI,QAIFkV,OAJJ;;AAMA,QAAIgD,QAAJ,EAAc;AACZ,WAAKvY,kBAAL,CAAwBS,IAAxB,CAA6B+X,OAA7B,CAAqCnY,EAArC;AACD,KAFD,MAEO;AACL,WAAKL,kBAAL,CAAwBS,IAAxB,CAA6BS,KAA7B,CAAmCb,EAAnC,EAAuCmB,SAAvC;AACD;AACF;;AApCuC;AAuC1C8W,oBAAoB,CAAC3Y,OAArB,GAA+B,CAAE,mBAAF,CAA/B;;ACvCe,MAAM8Y,qBAAN,CAA4B;AAEzC;AACF;AACA;AACA;AACE5Y,EAAAA,WAAW,CAACC,iBAAD,EAAoB;AAC7B,SAAKE,kBAAL,GAA0BF,iBAA1B;AACD;;AAED6X,EAAAA,OAAO,CAACpC,OAAD,EAAU;AACf,UAAM;AACJgD,MAAAA,QADI;AAEJ/W,MAAAA,SAFI;AAGJlB,MAAAA;AAHI,QAIFiV,OAJJ;;AAMA,QAAIgD,QAAJ,EAAc;AACZ,WAAKvY,kBAAL,CAAwBW,KAAxB,CAA8BO,KAA9B,CAAoCZ,GAApC,EAAyCkB,SAAzC;AACD,KAFD,MAEO;AACL,WAAKxB,kBAAL,CAAwBW,KAAxB,CAA8B6X,OAA9B,CAAsClY,GAAtC;AACD;AACF;;AAEDwX,EAAAA,MAAM,CAACvC,OAAD,EAAU;AACd,UAAM;AACJgD,MAAAA,QADI;AAEJ/W,MAAAA,SAFI;AAGJlB,MAAAA;AAHI,QAIFiV,OAJJ;;AAMA,QAAIgD,QAAJ,EAAc;AACZ,WAAKvY,kBAAL,CAAwBW,KAAxB,CAA8B6X,OAA9B,CAAsClY,GAAtC;AACD,KAFD,MAEO;AACL,WAAKN,kBAAL,CAAwBW,KAAxB,CAA8BO,KAA9B,CAAoCZ,GAApC,EAAyCkB,SAAzC;AACD;AACF;;AApCwC;AAuC3CiX,qBAAqB,CAAC9Y,OAAtB,GAAgC,CAAE,mBAAF,CAAhC;;AC7Be,MAAM+Y,QAAN,CAAe;AAC5B7Y,EAAAA,WAAW,CAACgS,YAAD,EAAejG,QAAf,EAAyBM,UAAzB,EAAqCpM,iBAArC,EAAwDoC,YAAxD,EAAsE;AAC/E,SAAKyW,aAAL,GAAqB9G,YAArB;AACA,SAAK6F,WAAL,GAAmBxL,UAAnB;AACA,SAAKlM,kBAAL,GAA0BF,iBAA1B;AACA,SAAKqC,aAAL,GAAqBD,YAArB;AAEA0J,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,WAAZ,EAAyB,MAAM;AAC7B,WAAK+c,gBAAL;AACD,KAFD;AAGD;;AAEDA,EAAAA,gBAAgB,GAAG;AACjBjF,IAAAA,MAAM,CAACxI,OAAP,CAAe,KAAK0N,WAAL,EAAf,EAAmCnc,OAAnC,CAA2C,CAAC,CAAE2D,EAAF,EAAMyY,OAAN,CAAD,KAAqB;AAC9D,WAAKH,aAAL,CAAmBI,eAAnB,CAAmC1Y,EAAnC,EAAuCyY,OAAvC;AACD,KAFD;AAGD;;AAEDD,EAAAA,WAAW,GAAG;AACZ,WAAO;AACL,uBAAiBpB,mBADZ;AAEL,wBAAkBM,oBAFb;AAGL,wBAAkBG,oBAHb;AAIL,0BAAoBG,sBAJf;AAKL,wBAAkBC,oBALb;AAML,yBAAmBG;AANd,KAAP;AAQD;;AAED1J,EAAAA,YAAY,CAAC5O,KAAD,EAAQuO,eAAR,EAAyBG,WAAzB,EAAsC;AAEhD,UAAMrN,SAAS,GAAG,KAAKW,aAAL,CAAmBjC,MAAnB,CAA0BC,KAA1B,CAAlB;;AAEA,UAAMoV,OAAO,GAAG;AACd/T,MAAAA,SADc;AAEdkN,MAAAA,eAFc;AAGdG,MAAAA;AAHc,KAAhB;;AAMA,SAAK8J,aAAL,CAAmBhB,OAAnB,CAA2B,eAA3B,EAA4CpC,OAA5C;;AAEA,WAAO/T,SAAP;AACD;;AAEDyO,EAAAA,aAAa,CAACzO,SAAD,EAAYkO,UAAZ,EAAwBxJ,KAAxB,EAA+B;AAC1C,QAAI,CAAC8S,QAAQ,CAACtJ,UAAD,CAAb,EAA2B;AACzBA,MAAAA,UAAU,GAAG;AACX,SAAEA,UAAF,GAAgBxJ;AADL,OAAb;AAGD;;AAED,UAAMqP,OAAO,GAAG;AACd/T,MAAAA,SADc;AAEdkO,MAAAA;AAFc,KAAhB;;AAKA,SAAKiJ,aAAL,CAAmBhB,OAAnB,CAA2B,gBAA3B,EAA6CpC,OAA7C;AACD;;AAEDrG,EAAAA,aAAa,CAAC1N,SAAD,EAAYwN,eAAZ,EAA6BN,eAA7B,EAA8CO,WAA9C,EAA2DJ,WAA3D,EAAwE;AACnF,UAAM0G,OAAO,GAAG;AACd/T,MAAAA,SADc;AAEdwN,MAAAA,eAFc;AAGdN,MAAAA,eAHc;AAIdO,MAAAA,WAJc;AAKdJ,MAAAA;AALc,KAAhB;;AAQA,SAAK8J,aAAL,CAAmBhB,OAAnB,CAA2B,gBAA3B,EAA6CpC,OAA7C;AACD;;AAEDnI,EAAAA,eAAe,CAAC5L,SAAD,EAAYwN,eAAZ,EAA6BC,WAA7B,EAA0C;AACvD,UAAMsG,OAAO,GAAG;AACd/T,MAAAA,SADc;AAEdwN,MAAAA,eAFc;AAGdC,MAAAA;AAHc,KAAhB;;AAMA,SAAK0J,aAAL,CAAmBhB,OAAnB,CAA2B,kBAA3B,EAA+CpC,OAA/C;AACD;;AAED0D,EAAAA,OAAO,CAACzX,SAAD,EAAYnB,EAAZ,EAAgB;AACrB,UAAMkV,OAAO,GAAG;AACd/T,MAAAA,SADc;AAEdnB,MAAAA,EAFc;AAGdkY,MAAAA,QAAQ,EAAE;AAHI,KAAhB;;AAMA,SAAKI,aAAL,CAAmBhB,OAAnB,CAA2B,gBAA3B,EAA6CpC,OAA7C;AACD;;AAED2D,EAAAA,SAAS,CAAC1X,SAAD,EAAYnB,EAAZ,EAAgB;AACvB,UAAMkV,OAAO,GAAG;AACd/T,MAAAA,SADc;AAEdnB,MAAAA,EAFc;AAGdkY,MAAAA,QAAQ,EAAE;AAHI,KAAhB;;AAMA,SAAKI,aAAL,CAAmBhB,OAAnB,CAA2B,gBAA3B,EAA6CpC,OAA7C;AACD;;AAED4D,EAAAA,QAAQ,CAAC3X,SAAD,EAAYlB,GAAZ,EAAiB;AACvB,UAAMiV,OAAO,GAAG;AACd/T,MAAAA,SADc;AAEdlB,MAAAA,GAFc;AAGdiY,MAAAA,QAAQ,EAAE;AAHI,KAAhB;;AAMA,SAAKI,aAAL,CAAmBhB,OAAnB,CAA2B,iBAA3B,EAA8CpC,OAA9C;AACD;;AAED6D,EAAAA,UAAU,CAAC5X,SAAD,EAAYlB,GAAZ,EAAiB;AACzB,UAAMiV,OAAO,GAAG;AACd/T,MAAAA,SADc;AAEdlB,MAAAA,GAFc;AAGdiY,MAAAA,QAAQ,EAAE;AAHI,KAAhB;;AAMA,SAAKI,aAAL,CAAmBhB,OAAnB,CAA2B,iBAA3B,EAA8CpC,OAA9C;AACD;;AAvH2B;AA0H9BmD,QAAQ,CAAC/Y,OAAT,GAAmB,CACjB,cADiB,EAEjB,UAFiB,EAGjB,YAHiB,EAIjB,mBAJiB,EAKjB,cALiB,CAAnB;;AC3HA,IAAIpE,gBAAgB,GAAG,IAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAAS8d,kBAAT,CAA4BzN,QAA5B,EAAsC;AACnD,OAAKjK,SAAL,GAAiBiK,QAAjB;AACD;AAEDyN,kBAAkB,CAAC1Z,OAAnB,GAA6B,CAAE,UAAF,CAA7B;;AAEA,SAAS2Z,WAAT,CAAqBha,EAArB,EAAyBpD,IAAzB,EAA+B;AAC7B,SAAO,UAASa,KAAT,EAAgB;AACrB,WAAOuC,EAAE,CAACtB,IAAH,CAAQ9B,IAAI,IAAI,IAAhB,EAAsBa,KAAK,CAACwY,OAA5B,EAAqCxY,KAAK,CAACwc,OAA3C,EAAoDxc,KAApD,CAAP;AACD,GAFD;AAGD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAsc,kBAAkB,CAAC3d,SAAnB,CAA6BG,EAA7B,GAAkC,UAASE,MAAT,EAAiByd,IAAjB,EAAuBxd,QAAvB,EAAiCyd,SAAjC,EAA4CC,MAA5C,EAAoDxd,IAApD,EAA0D;AAE1F,MAAIE,UAAU,CAACod,IAAD,CAAV,IAAoBnd,QAAQ,CAACmd,IAAD,CAAhC,EAAwC;AACtCtd,IAAAA,IAAI,GAAGwd,MAAP;AACAA,IAAAA,MAAM,GAAGD,SAAT;AACAA,IAAAA,SAAS,GAAGzd,QAAZ;AACAA,IAAAA,QAAQ,GAAGwd,IAAX;AACAA,IAAAA,IAAI,GAAG,IAAP;AACD;;AAED,MAAIpd,UAAU,CAACJ,QAAD,CAAd,EAA0B;AACxBE,IAAAA,IAAI,GAAGwd,MAAP;AACAA,IAAAA,MAAM,GAAGD,SAAT;AACAA,IAAAA,SAAS,GAAGzd,QAAZ;AACAA,IAAAA,QAAQ,GAAGT,gBAAX;AACD;;AAED,MAAIyd,QAAQ,CAACU,MAAD,CAAZ,EAAsB;AACpBxd,IAAAA,IAAI,GAAGwd,MAAP;AACAA,IAAAA,MAAM,GAAG,KAAT;AACD;;AAED,MAAI,CAACtd,UAAU,CAACqd,SAAD,CAAf,EAA4B;AAC1B,UAAM,IAAInd,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,MAAI,CAACH,OAAO,CAACJ,MAAD,CAAZ,EAAsB;AACpBA,IAAAA,MAAM,GAAG,CAAEA,MAAF,CAAT;AACD;;AAED,MAAI6P,QAAQ,GAAG,KAAKjK,SAApB;AAEAjF,EAAAA,OAAO,CAACX,MAAD,EAAS,UAASgB,KAAT,EAAgB;AAE9B;AACA,QAAI4c,SAAS,GAAG,CAAE,cAAF,EAAkB5c,KAAlB,EAAyByc,IAAzB,EAAgCI,MAAhC,CAAuC,UAASjd,CAAT,EAAY;AAAE,aAAOA,CAAP;AAAW,KAAhE,EAAkE2L,IAAlE,CAAuE,GAAvE,CAAhB;AAEAsD,IAAAA,QAAQ,CAAC/P,EAAT,CAAY8d,SAAZ,EAAuB3d,QAAvB,EAAiC0d,MAAM,GAAGJ,WAAW,CAACG,SAAD,EAAYvd,IAAZ,CAAd,GAAkCud,SAAzE,EAAoFvd,IAApF;AACD,GANM,CAAP;AAOD,CAvCD;;AA0CA,IAAI2d,KAAK,GAAG,CACV,YADU,EAEV,YAFU,EAGV,aAHU,EAIV,SAJU,EAKV,UALU,EAMV,aANU,EAOV,cAPU,EAQV,QARU,EASV,UATU,CAAZ;AAYA;AACA;AACA;AACA;AACA;AACA;;AACAnd,OAAO,CAACmd,KAAD,EAAQ,UAASL,IAAT,EAAe;AAE5B;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEH,EAAAA,kBAAkB,CAAC3d,SAAnB,CAA6B8d,IAA7B,IAAqC,UAASzd,MAAT,EAAiBC,QAAjB,EAA2Byd,SAA3B,EAAsCC,MAAtC,EAA8Cxd,IAA9C,EAAoD;AAEvF,QAAIE,UAAU,CAACL,MAAD,CAAV,IAAsBM,QAAQ,CAACN,MAAD,CAAlC,EAA4C;AAC1CG,MAAAA,IAAI,GAAGwd,MAAP;AACAA,MAAAA,MAAM,GAAGD,SAAT;AACAA,MAAAA,SAAS,GAAGzd,QAAZ;AACAA,MAAAA,QAAQ,GAAGD,MAAX;AACAA,MAAAA,MAAM,GAAG,IAAT;AACD;;AAED,SAAKF,EAAL,CAAQE,MAAR,EAAgByd,IAAhB,EAAsBxd,QAAtB,EAAgCyd,SAAhC,EAA2CC,MAA3C,EAAmDxd,IAAnD;AACD,GAXD;AAYD,CA1BM,CAAP;;ACnHe,MAAM4d,UAAN,SAAyBT,kBAAzB,CAA4C;AACzDxZ,EAAAA,WAAW,CAAC+L,QAAD,EAAWO,QAAX,EAAqB;AAC9B,UAAMP,QAAN,EAD8B;;AAI9B,SAAKmO,UAAL,CAAgB,kBAAhB,EAAoC,UAASxE,OAAT,EAAkB;AACpD,YAAM;AAAE/T,QAAAA;AAAF,UAAgB+T,OAAtB;AAEA,YAAM;AAAElV,QAAAA;AAAF,UAASmB,SAAf;AAEA2K,MAAAA,QAAQ,CAAC+M,SAAT,CAAmB1X,SAAnB,EAA8BnB,EAA9B;AACD,KAND,EAMG,IANH,EAJ8B;;AAa9B,SAAK0Z,UAAL,CAAgB,gBAAhB,EAAkC,UAASxE,OAAT,EAAkB;AAClD,YAAM;AACJ/T,QAAAA,SADI;AAEJkO,QAAAA;AAFI,UAGF6F,OAHJ;;AAKA,UAAI,QAAQ7F,UAAZ,EAAwB;AACtBvD,QAAAA,QAAQ,CAAC+M,SAAT,CAAmB1X,SAAnB,EAA8BA,SAAS,CAACnB,EAAxC;AAEA8L,QAAAA,QAAQ,CAAC8M,OAAT,CAAiBzX,SAAjB,EAA4BkO,UAAU,CAACrP,EAAvC;AACD;AACF,KAXD,EAWG,IAXH;AAYD;;AA1BwD;AA6B3DyZ,UAAU,CAACna,OAAX,GAAqB,CAAE,UAAF,EAAc,UAAd,CAArB;;AC7Be,MAAMqa,WAAN,SAA0BX,kBAA1B,CAA6C;AAC1DxZ,EAAAA,WAAW,CAAC+L,QAAD,EAAWO,QAAX,EAAqB;AAC9B,UAAMP,QAAN,EAD8B;;AAI9B,SAAKmO,UAAL,CAAgB,kBAAhB,EAAoC,UAASxE,OAAT,EAAkB;AACpD,YAAM;AAAE/T,QAAAA;AAAF,UAAgB+T,OAAtB;AAEA,YAAM;AAAEjV,QAAAA;AAAF,UAAUkB,SAAhB;;AAEA,UAAIlB,GAAJ,EAAS;AACP6L,QAAAA,QAAQ,CAACiN,UAAT,CAAoB5X,SAApB,EAA+BlB,GAA/B;AACD;AACF,KARD,EAQG,IARH,EAJ8B;;AAe9B,SAAKyZ,UAAL,CAAgB,gBAAhB,EAAkC,UAASxE,OAAT,EAAkB;AAClD,YAAM;AACJ/T,QAAAA,SADI;AAEJkO,QAAAA;AAFI,UAGF6F,OAHJ;;AAKA,UAAI,SAAS7F,UAAb,EAAyB;AACvBvD,QAAAA,QAAQ,CAACiN,UAAT,CAAoB5X,SAApB,EAA+BA,SAAS,CAAClB,GAAzC;AAEA6L,QAAAA,QAAQ,CAACgN,QAAT,CAAkB3X,SAAlB,EAA6BkO,UAAU,CAACpP,GAAxC;AACD;AACF,KAXD,EAWG,IAXH;AAYD;;AA5ByD;AA+B5D0Z,WAAW,CAACra,OAAZ,GAAsB,CAAE,UAAF,EAAc,UAAd,CAAtB;;AC9BA,qBAAe;AACbsR,EAAAA,QAAQ,EAAE,CACR,YADQ,EAER,aAFQ,CADG;AAKbgJ,EAAAA,UAAU,EAAE,CAAE,MAAF,EAAUH,UAAV,CALC;AAMbI,EAAAA,WAAW,EAAE,CAAE,MAAF,EAAUF,WAAV;AANA,CAAf;;ACGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACe,SAASG,YAAT,CAAsBvO,QAAtB,EAAgC2B,QAAhC,EAA0C;AAEvD;AACF;AACA;AACA;AACA;AACE,OAAK6M,WAAL,GAAmB,EAAnB;AAEA;AACF;AACA;AACA;AACA;;AACE,OAAKC,MAAL,GAAc,EAAd;AAEA;AACF;AACA;AACA;AACA;;AACE,OAAKC,SAAL,GAAiB,CAAC,CAAlB;AAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;AACE,OAAKC,iBAAL,GAAyB;AACvBjH,IAAAA,OAAO,EAAE,EADc;AAEvBkH,IAAAA,KAAK,EAAE,EAFgB;AAGvBpH,IAAAA,OAAO,EAAE;AAHc,GAAzB;AAOA,OAAKqH,SAAL,GAAiBlN,QAAjB;AACA,OAAK5L,SAAL,GAAiBiK,QAAjB;AAEA,OAAK8O,IAAL,GAAY,CAAZ;AAEA9O,EAAAA,QAAQ,CAAC/P,EAAT,CAAY,CACV,iBADU,EAEV,eAFU,CAAZ,EAGG,YAAW;AACZ,SAAK8e,KAAL,CAAW,KAAX;AACD,GALD,EAKG,IALH;AAMD;AAEDR,YAAY,CAACxa,OAAb,GAAuB,CAAE,UAAF,EAAc,UAAd,CAAvB;AAGA;AACA;AACA;AACA;AACA;AACA;;AACAwa,YAAY,CAACze,SAAb,CAAuBic,OAAvB,GAAiC,UAAS4B,OAAT,EAAkBhE,OAAlB,EAA2B;AAC1D,MAAI,CAACgE,OAAL,EAAc;AACZ,UAAM,IAAIjd,KAAJ,CAAU,kBAAV,CAAN;AACD;;AAED,OAAKie,iBAAL,CAAuBnH,OAAvB,GAAiC,SAAjC;AAEA,MAAIC,MAAM,GAAG;AAAEkG,IAAAA,OAAO,EAAEA,OAAX;AAAoBhE,IAAAA,OAAO,EAAEA;AAA7B,GAAb;;AAEA,OAAKqF,WAAL,CAAiBvH,MAAjB;;AACA,OAAKwH,gBAAL,CAAsBxH,MAAtB;;AACA,OAAKyH,UAAL,CAAgBzH,MAAhB;AACD,CAZD;AAeA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA8G,YAAY,CAACze,SAAb,CAAuBqf,UAAvB,GAAoC,UAASxB,OAAT,EAAkBhE,OAAlB,EAA2B;AAE7D,MAAIlC,MAAM,GAAG;AAAEkG,IAAAA,OAAO,EAAEA,OAAX;AAAoBhE,IAAAA,OAAO,EAAEA;AAA7B,GAAb;;AAEA,MAAIuD,OAAO,GAAG,KAAKkC,WAAL,CAAiBzB,OAAjB,CAAd;;AAEA,MAAIrc,MAAM,GAAG,KAAK+X,KAAL,CAAWsE,OAAX,EAAoB,YAApB,EAAkClG,MAAlC,CAAb,CAN6D;AAS7D;;;AACA,MAAInW,MAAM,KAAKiB,SAAf,EAA0B;AACxB,QAAI,CAAC2a,OAAL,EAAc;AACZ,aAAO,KAAP;AACD;;AAED,QAAIA,OAAO,CAACiC,UAAZ,EAAwB;AACtB7d,MAAAA,MAAM,GAAG4b,OAAO,CAACiC,UAAR,CAAmBxF,OAAnB,CAAT;AACD;AACF;;AAED,SAAOrY,MAAP;AACD,CArBD;AAwBA;AACA;AACA;;;AACAid,YAAY,CAACze,SAAb,CAAuBif,KAAvB,GAA+B,UAASM,IAAT,EAAe;AAC5C,OAAKZ,MAAL,CAAYxU,MAAZ,GAAqB,CAArB;AACA,OAAKyU,SAAL,GAAiB,CAAC,CAAlB;;AAEA,MAAIW,IAAI,KAAK,KAAb,EAAoB;AAClB,SAAKhG,KAAL,CAAW,SAAX,EAAsB;AAAE7B,MAAAA,OAAO,EAAE;AAAX,KAAtB;AACD;AACF,CAPD;AAUA;AACA;AACA;;;AACA+G,YAAY,CAACze,SAAb,CAAuB2W,IAAvB,GAA8B,YAAW;AACvC,MAAIgB,MAAM,GAAG,KAAK6H,cAAL,EAAb;AAAA,MACIre,IADJ;;AAGA,MAAIwW,MAAJ,EAAY;AACV,SAAKkH,iBAAL,CAAuBnH,OAAvB,GAAiC,MAAjC;;AAEA,SAAKwH,WAAL,CAAiBvH,MAAjB;;AAEA,WAAOA,MAAP,EAAe;AACb,WAAK8H,aAAL,CAAmB9H,MAAnB;;AACAxW,MAAAA,IAAI,GAAG,KAAKqe,cAAL,EAAP;;AAEA,UAAI,CAACre,IAAD,IAASA,IAAI,CAACwD,EAAL,KAAYgT,MAAM,CAAChT,EAAhC,EAAoC;AAClC;AACD;;AAEDgT,MAAAA,MAAM,GAAGxW,IAAT;AACD;;AAED,SAAKie,UAAL;AACD;AACF,CAtBD;AAyBA;AACA;AACA;;;AACAX,YAAY,CAACze,SAAb,CAAuB4W,IAAvB,GAA8B,YAAW;AACvC,MAAIe,MAAM,GAAG,KAAK+H,cAAL,EAAb;AAAA,MACIve,IADJ;;AAGA,MAAIwW,MAAJ,EAAY;AACV,SAAKkH,iBAAL,CAAuBnH,OAAvB,GAAiC,MAAjC;;AAEA,SAAKwH,WAAL,CAAiBvH,MAAjB;;AAEA,WAAOA,MAAP,EAAe;AACb,WAAKwH,gBAAL,CAAsBxH,MAAtB,EAA8B,IAA9B;;AACAxW,MAAAA,IAAI,GAAG,KAAKue,cAAL,EAAP;;AAEA,UAAI,CAACve,IAAD,IAASA,IAAI,CAACwD,EAAL,KAAYgT,MAAM,CAAChT,EAAhC,EAAoC;AAClC;AACD;;AAEDgT,MAAAA,MAAM,GAAGxW,IAAT;AACD;;AAED,SAAKie,UAAL;AACD;AACF,CAtBD;AAyBA;AACA;AACA;AACA;AACA;AACA;;;AACAX,YAAY,CAACze,SAAb,CAAuB0W,QAAvB,GAAkC,UAASmH,OAAT,EAAkBT,OAAlB,EAA2B;AAC3D,OAAKuC,WAAL,CAAiB9B,OAAjB,EAA0BT,OAA1B;AACD,CAFD;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAqB,YAAY,CAACze,SAAb,CAAuBqd,eAAvB,GAAyC,UAASQ,OAAT,EAAkB+B,UAAlB,EAA8B;AAErE,MAAI,CAAC/B,OAAD,IAAY,CAAC+B,UAAjB,EAA6B;AAC3B,UAAM,IAAIhf,KAAJ,CAAU,wCAAV,CAAN;AACD;;AAED,MAAIwc,OAAO,GAAG,KAAK2B,SAAL,CAAec,WAAf,CAA2BD,UAA3B,CAAd;;AACA,OAAKlJ,QAAL,CAAcmH,OAAd,EAAuBT,OAAvB;AACD,CARD;;AAUAqB,YAAY,CAACze,SAAb,CAAuB8f,OAAvB,GAAiC,YAAW;AAC1C,SAAO,CAAC,CAAC,KAAKN,cAAL,EAAT;AACD,CAFD;;AAIAf,YAAY,CAACze,SAAb,CAAuB+f,OAAvB,GAAiC,YAAW;AAC1C,SAAO,CAAC,CAAC,KAAKL,cAAL,EAAT;AACD,CAFD;;;AAMAjB,YAAY,CAACze,SAAb,CAAuB0f,cAAvB,GAAwC,YAAW;AACjD,SAAO,KAAKf,MAAL,CAAY,KAAKC,SAAL,GAAiB,CAA7B,CAAP;AACD,CAFD;;AAKAH,YAAY,CAACze,SAAb,CAAuBwf,cAAvB,GAAwC,YAAW;AACjD,SAAO,KAAKb,MAAL,CAAY,KAAKC,SAAjB,CAAP;AACD,CAFD;;;AAOAH,YAAY,CAACze,SAAb,CAAuByf,aAAvB,GAAuC,UAAS9H,MAAT,EAAiB;AACtD,MAAI5W,IAAI,GAAG,IAAX;AAEA,MAAI8c,OAAO,GAAGlG,MAAM,CAACkG,OAArB;AAAA,MACIhE,OAAO,GAAGlC,MAAM,CAACkC,OADrB;;AAGA,MAAIuD,OAAO,GAAG,KAAKkC,WAAL,CAAiBzB,OAAjB,CAAd,CANsD;;;AAStD,OAAKmC,SAAL,CAAe,YAAW;AACxBjf,IAAAA,IAAI,CAACwY,KAAL,CAAWsE,OAAX,EAAoB,QAApB,EAA8BlG,MAA9B;;AAEA,QAAIyF,OAAO,CAAChB,MAAZ,EAAoB;AAClBrb,MAAAA,IAAI,CAACkf,UAAL,CAAgB7C,OAAO,CAAChB,MAAR,CAAevC,OAAf,CAAhB;AACD;;AAED9Y,IAAAA,IAAI,CAACmf,eAAL,CAAqBvI,MAArB;;AAEA5W,IAAAA,IAAI,CAACwY,KAAL,CAAWsE,OAAX,EAAoB,UAApB,EAAgClG,MAAhC;AACD,GAVD;AAWD,CApBD;;AAuBA8G,YAAY,CAACze,SAAb,CAAuBuZ,KAAvB,GAA+B,UAASsE,OAAT,EAAkBsC,SAAlB,EAA6B9e,KAA7B,EAAoC;AACjE,MAAIK,SAAS,CAACyI,MAAV,GAAmB,CAAvB,EAA0B;AACxB9I,IAAAA,KAAK,GAAG8e,SAAR;AACAA,IAAAA,SAAS,GAAG,IAAZ;AACD;;AAED,MAAIC,KAAK,GAAGD,SAAS,GAAG,CAAEtC,OAAO,GAAG,GAAV,GAAgBsC,SAAlB,EAA6BA,SAA7B,CAAH,GAA8C,CAAEtC,OAAF,CAAnE;AAAA,MACIwC,CADJ;AAAA,MACO7c,IADP;AAAA,MACahC,MADb;AAGAH,EAAAA,KAAK,GAAG,KAAK4E,SAAL,CAAepE,WAAf,CAA2BR,KAA3B,CAAR;;AAEA,OAAKgf,CAAC,GAAG,CAAT,EAAa7c,IAAI,GAAG4c,KAAK,CAACC,CAAD,CAAzB,EAA+BA,CAAC,EAAhC,EAAoC;AAClC7e,IAAAA,MAAM,GAAG,KAAKyE,SAAL,CAAehE,IAAf,CAAoB,kBAAkBuB,IAAtC,EAA4CnC,KAA5C,CAAT;;AAEA,QAAIA,KAAK,CAACyB,YAAV,EAAwB;AACtB;AACD;AACF;;AAED,SAAOtB,MAAP;AACD,CApBD;;AAsBAid,YAAY,CAACze,SAAb,CAAuBsgB,SAAvB,GAAmC,YAAW;AAC5C,SAAO,KAAKtB,IAAL,EAAP;AACD,CAFD;;AAIAP,YAAY,CAACze,SAAb,CAAuBggB,SAAvB,GAAmC,UAASpc,EAAT,EAAa;AAE9C,MAAI2c,SAAS,GAAG,KAAK1B,iBAArB;AAEA0B,EAAAA,SAAS,CAACC,MAAV,GAAmB,IAAnB;;AAEA,MAAI;AACF5c,IAAAA,EAAE;AACH,GAFD,SAEU;AACR2c,IAAAA,SAAS,CAACC,MAAV,GAAmB,KAAnB;AACD;AACF,CAXD;;AAaA/B,YAAY,CAACze,SAAb,CAAuBmf,gBAAvB,GAA0C,UAASxH,MAAT,EAAiBf,IAAjB,EAAuB;AAC/D,MAAI7V,IAAI,GAAG,IAAX;AAEA,MAAI8c,OAAO,GAAGlG,MAAM,CAACkG,OAArB;AAAA,MACIhE,OAAO,GAAGlC,MAAM,CAACkC,OADrB;;AAGA,MAAIuD,OAAO,GAAG,KAAKkC,WAAL,CAAiBzB,OAAjB,CAAd;;AAEA,MAAI,CAACT,OAAL,EAAc;AACZ,UAAM,IAAIxc,KAAJ,CAAU,wCAAwCid,OAAxC,GAAkD,GAA5D,CAAN;AACD;;AAED,OAAKqB,WAAL,CAAiBvH,MAAjB;;AAEA,MAAI,CAACf,IAAL,EAAW;AACT,SAAK2C,KAAL,CAAWsE,OAAX,EAAoB,YAApB,EAAkClG,MAAlC;;AAEA,QAAIyF,OAAO,CAACiB,UAAZ,EAAwB;AACtBjB,MAAAA,OAAO,CAACiB,UAAR,CAAmBxE,OAAnB;AACD;;AAED,SAAKN,KAAL,CAAWsE,OAAX,EAAoB,aAApB,EAAmClG,MAAnC;AACD,GAtB8D;;;AAyB/D,OAAKqI,SAAL,CAAe,YAAW;AAExBjf,IAAAA,IAAI,CAACwY,KAAL,CAAWsE,OAAX,EAAoB,SAApB,EAA+BlG,MAA/B;;AAEA,QAAIyF,OAAO,CAACnB,OAAZ,EAAqB;AAEnB;AACAlb,MAAAA,IAAI,CAACkf,UAAL,CAAgB7C,OAAO,CAACnB,OAAR,CAAgBpC,OAAhB,CAAhB;AACD,KARuB;;;AAWxB9Y,IAAAA,IAAI,CAAC0f,eAAL,CAAqB9I,MAArB,EAA6Bf,IAA7B;;AAEA7V,IAAAA,IAAI,CAACwY,KAAL,CAAWsE,OAAX,EAAoB,UAApB,EAAgClG,MAAhC;AACD,GAdD;;AAgBA,MAAI,CAACf,IAAL,EAAW;AACT,SAAK2C,KAAL,CAAWsE,OAAX,EAAoB,aAApB,EAAmClG,MAAnC;;AAEA,QAAIyF,OAAO,CAACsD,WAAZ,EAAyB;AACvBtD,MAAAA,OAAO,CAACsD,WAAR,CAAoB7G,OAApB;AACD;;AAED,SAAKN,KAAL,CAAWsE,OAAX,EAAoB,cAApB,EAAoClG,MAApC;AACD;;AAED,OAAKyH,UAAL,CAAgBzH,MAAhB;AACD,CApDD;;AAuDA8G,YAAY,CAACze,SAAb,CAAuBkf,WAAvB,GAAqC,UAASvH,MAAT,EAAiB;AAEpD,MAAI4I,SAAS,GAAG,KAAK1B,iBAArB;AAAA,MACIjH,OAAO,GAAG2I,SAAS,CAAC3I,OADxB;AAGA,MAAI+I,UAAU,GAAG/I,OAAO,CAAC,CAAD,CAAxB;;AAEA,MAAI2I,SAAS,CAACC,MAAd,EAAsB;AACpB,UAAM,IAAI5f,KAAJ,CAAU,gEAAgE+W,MAAM,CAACkG,OAAvE,GAAiF,GAA3F,CAAN;AACD;;AAED,MAAI,CAAClG,MAAM,CAAChT,EAAZ,EAAgB;AACdgT,IAAAA,MAAM,CAAChT,EAAP,GAAagc,UAAU,IAAIA,UAAU,CAAChc,EAA1B,IAAiC,KAAK2b,SAAL,EAA7C;AACD;;AAED1I,EAAAA,OAAO,CAACjL,IAAR,CAAagL,MAAb;AACD,CAhBD;;AAmBA8G,YAAY,CAACze,SAAb,CAAuBof,UAAvB,GAAoC,YAAW;AAC7C,MAAImB,SAAS,GAAG,KAAK1B,iBAArB;AAAA,MACInH,OAAO,GAAG6I,SAAS,CAAC7I,OADxB;AAAA,MAEIE,OAAO,GAAG2I,SAAS,CAAC3I,OAFxB;AAAA,MAGIkH,KAAK,GAAGyB,SAAS,CAACzB,KAHtB;AAKAlH,EAAAA,OAAO,CAACgJ,GAAR;;AAEA,MAAI,CAAChJ,OAAO,CAACzN,MAAb,EAAqB;AACnB,SAAKlE,SAAL,CAAehE,IAAf,CAAoB,kBAApB,EAAwC;AAAEkV,MAAAA,QAAQ,EAAE0J,QAAQ,CAAC,IAAD,EAAO/B,KAAK,CAACgC,OAAN,EAAP;AAApB,KAAxC;;AAEAhC,IAAAA,KAAK,CAAC3U,MAAN,GAAe,CAAf;;AAEA,SAAKoP,KAAL,CAAW,SAAX,EAAsB;AAAE7B,MAAAA,OAAO,EAAEA;AAAX,KAAtB;;AAEA6I,IAAAA,SAAS,CAAC7I,OAAV,GAAoB,IAApB;AACD;AACF,CAjBD;;AAoBA+G,YAAY,CAACze,SAAb,CAAuBigB,UAAvB,GAAoC,UAAS9I,QAAT,EAAmB;AACrD,MAAIoJ,SAAS,GAAG,KAAK1B,iBAArB;;AAEA,MAAI,CAAC1H,QAAL,EAAe;AACb;AACD;;AAEDA,EAAAA,QAAQ,GAAG1W,OAAO,CAAC0W,QAAD,CAAP,GAAoBA,QAApB,GAA+B,CAAEA,QAAF,CAA1C;AAEAoJ,EAAAA,SAAS,CAACzB,KAAV,GAAkByB,SAAS,CAACzB,KAAV,CAAgBiC,MAAhB,CAAuB5J,QAAvB,CAAlB;AACD,CAVD;;AAaAsH,YAAY,CAACze,SAAb,CAAuBygB,eAAvB,GAAyC,UAAS9I,MAAT,EAAiBf,IAAjB,EAAuB;AAC9D,MAAIoK,QAAQ,GAAG,EAAE,KAAKpC,SAAtB;;AAEA,MAAI,CAAChI,IAAL,EAAW;AACT,SAAK+H,MAAL,CAAY5U,MAAZ,CAAmBiX,QAAnB,EAA6B,KAAKrC,MAAL,CAAYxU,MAAzC,EAAiDwN,MAAjD;AACD;AACF,CAND;;AASA8G,YAAY,CAACze,SAAb,CAAuBkgB,eAAvB,GAAyC,UAASvI,MAAT,EAAiB;AACxD,OAAKiH,SAAL;AACD,CAFD;;AAKAH,YAAY,CAACze,SAAb,CAAuBsf,WAAvB,GAAqC,UAASzB,OAAT,EAAkB;AACrD,SAAO,KAAKa,WAAL,CAAiBb,OAAjB,CAAP;AACD,CAFD;;AAIAY,YAAY,CAACze,SAAb,CAAuB2f,WAAvB,GAAqC,UAAS9B,OAAT,EAAkBT,OAAlB,EAA2B;AAC9D,MAAI,CAACS,OAAD,IAAY,CAACT,OAAjB,EAA0B;AACxB,UAAM,IAAIxc,KAAJ,CAAU,8BAAV,CAAN;AACD;;AAED,MAAI,KAAK8d,WAAL,CAAiBb,OAAjB,CAAJ,EAA+B;AAC7B,UAAM,IAAIjd,KAAJ,CAAU,qCAAqCid,OAArC,GAA+C,GAAzD,CAAN;AACD;;AAED,OAAKa,WAAL,CAAiBb,OAAjB,IAA4BT,OAA5B;AACD,CAVD;;ACzfA,oBAAe;AACbjH,EAAAA,YAAY,EAAE,CAAE,MAAF,EAAUsI,YAAV;AADD,CAAf;;ACGA,qBAAe;AACb/I,EAAAA,WAAW,EAAE,CACXuL,cADW,EAEXC,aAFW,CADA;AAKb3L,EAAAA,QAAQ,EAAE,CAAE,UAAF,CALG;AAMb9E,EAAAA,QAAQ,EAAE,CAAE,MAAF,EAAUuM,QAAV;AANG,CAAf;;ACLe,MAAMmE,SAAN,CAAgB;AAC7Bhd,EAAAA,WAAW,CAAC+L,QAAD,EAAW;AACpB,SAAKjK,SAAL,GAAiBiK,QAAjB;AACA,SAAKkR,UAAL,GAAkB,IAAlB;AACD;;AAEDtc,EAAAA,GAAG,GAAG;AACJ,WAAO,KAAKsc,UAAZ;AACD;;AAED7R,EAAAA,GAAG,CAACmB,SAAD,EAAY;AACb,QAAI,KAAK0Q,UAAL,KAAoB1Q,SAAxB,EAAmC;AACjC;AACD;;AAED,SAAK0Q,UAAL,GAAkB1Q,SAAlB;;AAEA,SAAKzK,SAAL,CAAehE,IAAf,CAAoB,mBAApB,EAAyC;AACvCyO,MAAAA,SAAS,EAAE,KAAK0Q;AADuB,KAAzC;AAGD;;AAEDjQ,EAAAA,MAAM,CAACT,SAAD,EAAY;AAChB,UAAM2Q,YAAY,GAAG,KAAKD,UAAL,KAAoB1Q,SAApB,GAAgC,IAAhC,GAAuCA,SAA5D;AAEA,SAAKnB,GAAL,CAAS8R,YAAT;AACD;;AAEDpC,EAAAA,KAAK,GAAG;AACN,SAAK1P,GAAL,CAAS,IAAT;AACD;;AAED+B,EAAAA,UAAU,CAACxL,SAAD,EAAY;AACpB,WAAO,KAAKsb,UAAL,KAAoBtb,SAA3B;AACD;;AAlC4B;AAqC/Bqb,SAAS,CAACld,OAAV,GAAoB,CAAE,UAAF,CAApB;;ACrCe,MAAMqd,iBAAN,CAAwB;AACrCnd,EAAAA,WAAW,CAAC+L,QAAD,EAAWQ,SAAX,EAAsB;AAC/BR,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,CACV,yCADU,EAEV,0CAFU,CAAZ,EAGG,CAAC;AAAE0Z,MAAAA;AAAF,KAAD,KAAiB;AAClB,YAAM;AAAE/T,QAAAA;AAAF,UAAgB+T,OAAtB;AAEAnJ,MAAAA,SAAS,CAACnB,GAAV,CAAczJ,SAAd;AACD,KAPD;AASAoK,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,4CAAZ,EAA0D,CAAC;AAAE0Z,MAAAA;AAAF,KAAD,KAAiB;AACzE,YAAM;AACJvG,QAAAA,eADI;AAEJC,QAAAA;AAFI,UAGFsG,OAHJ;AAKA,YAAM/T,SAAS,GAAGwN,eAAe,CAACjN,UAAhB,CAA4BkN,WAA5B,KAA6CD,eAAe,CAACjN,UAAhB,CAA4BkN,WAAW,GAAG,CAA1C,CAA/D;;AAEA,UAAIzN,SAAJ,EAAe;AACb4K,QAAAA,SAAS,CAACnB,GAAV,CAAczJ,SAAd;AACD,OAFD,MAEO;AACL4K,QAAAA,SAAS,CAACuO,KAAV;AACD;AACF,KAbD;AAeA/O,IAAAA,QAAQ,CAAC/P,EAAT,CAAY,kBAAZ,EAAgC,CAAC;AAAE2F,MAAAA;AAAF,KAAD,KAAmB;AACjD,UAAI4K,SAAS,CAACY,UAAV,CAAqBxL,SAArB,CAAJ,EAAqC;AACnC4K,QAAAA,SAAS,CAACuO,KAAV;AACD;AACF,KAJD;AAKD;;AA/BoC;AAkCvCqC,iBAAiB,CAACrd,OAAlB,GAA4B,CAAE,UAAF,EAAc,WAAd,CAA5B;;AC/BA,sBAAe;AACbsR,EAAAA,QAAQ,EAAE,CAAE,WAAF,EAAe,mBAAf,CADG;AAEb7E,EAAAA,SAAS,EAAE,CAAE,MAAF,EAAUyQ,SAAV,CAFE;AAGbI,EAAAA,iBAAiB,EAAE,CAAE,MAAF,EAAUD,iBAAV;AAHN,CAAf;;ACkBA,MAAME,GAAG,GAAG,IAAIC,GAAJ,CAAQ,CAAE,EAAF,EAAM,EAAN,EAAU,CAAV,CAAR,CAAZ;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AACe,MAAM7P,UAAN,CAAiB;AAE9B;AACF;AACA;AACA;AACEzN,EAAAA,WAAW,CAAC4H,OAAO,GAAG,EAAX,EAAe;AAExB;AACJ;AACA;AACA;AACI,SAAKoI,GAAL,GAAWqN,GAAG,CAACrgB,IAAJ,EAAX;AAEA;AACJ;AACA;AACA;;AACI,SAAK4P,UAAL,GAAkB2Q,mBAAmB,EAArC;;AAEA,SAAK3Q,UAAL,CAAgB4Q,YAAhB,CAA6B,4BAA7B,EAA2D,KAA3D;;AAEA,UAAM;AACJ3M,MAAAA,SADI;AAEJ4M,MAAAA,QAFI;AAGJ/P,MAAAA,QAAQ,GAAG,KAAKgQ,eAAL,CAAqB9V,OAArB,EAA8B,KAAKgF,UAAnC,CAHP;AAIJiD,MAAAA,UAAU,GAAG;AAJT,QAKFjI,OALJ;AAOA;AACJ;AACA;AACA;;AACI,SAAK6V,QAAL,GAAgBA,QAAhB;AAEA;AACJ;AACA;AACA;;AACI,SAAKE,MAAL,GAAc;AACZ9N,MAAAA,UADY;AAEZrN,MAAAA,MAAM,EAAE;AAFI,KAAd;AAKA,SAAK7B,GAAL,GAAW+M,QAAQ,CAAC/M,GAApB;AAEA,SAAKid,MAAL,GAAclQ,QAAQ,CAACkQ,MAAvB;AAEA,SAAKjd,GAAL,CAAS,UAAT,EAAqB7C,IAArB,CAA0B,WAA1B;;AAEA,QAAI+S,SAAJ,EAAe;AACb,WAAKgN,QAAL,CAAchN,SAAd;AACD;AACF;;AAEDiK,EAAAA,KAAK,GAAG;AAEN;AACA,SAAKgD,KAAL,CAAW,eAAX,EAHM;;;AAMN,SAAKA,KAAL,CAAW,YAAX;AACD;;AAEDvO,EAAAA,OAAO,GAAG;AAER;AACA,SAAK5O,GAAL,CAAS,UAAT,EAAqB7C,IAArB,CAA0B,cAA1B,EAHQ;;AAMR,SAAK6C,GAAL,CAAS,UAAT,EAAqB7C,IAArB,CAA0B,iBAA1B;;AAEA,SAAKigB,OAAL,CAAa,KAAb;AACD;AAED;AACF;AACA;AACA;AACA;;;AACExb,EAAAA,YAAY,CAACC,MAAD,EAAS;AACnB,WAAO,IAAIwb,OAAJ,CAAY,CAACC,OAAD,EAAUC,MAAV,KAAqB;AACtC,UAAI;AACF,aAAKpD,KAAL;AAEA,cAAM;AACJtY,UAAAA,MAAM,EAAEE,cADJ;AAEJD,UAAAA;AAFI,YAGF,KAAK9B,GAAL,CAAS,UAAT,EAAqB4B,YAArB,CAAkCC,MAAlC,CAHJ;;AAKA,aAAKwV,SAAL,CAAe;AACbxV,UAAAA,MAAM,EAAEE;AADK,SAAf;;AAIA,aAAKob,KAAL,CAAW,aAAX,EAA0B;AAAErb,UAAAA;AAAF,SAA1B;;AAEA,eAAOwb,OAAO,CAAC;AAAExb,UAAAA;AAAF,SAAD,CAAd;AACD,OAfD,CAeE,OAAOhE,KAAP,EAAc;AACd,aAAKqf,KAAL,CAAW,aAAX,EAA0B;AACxBrf,UAAAA,KAAK,EAAEA,KADiB;AAExBgE,UAAAA,QAAQ,EAAEhE,KAAK,CAACgE,QAAN,IAAkB;AAFJ,SAA1B;;AAKA,eAAOyb,MAAM,CAACzf,KAAD,CAAb;AACD;AACF,KAxBM,CAAP;AAyBD;AAED;AACF;AACA;;;AACE0f,EAAAA,UAAU,GAAG;AACX,WAAO,KAAKC,SAAL,EAAP;AACD;AAED;AACF;AACA;;;AACEA,EAAAA,SAAS,GAAG;AACV,UAAM;AAAE5b,MAAAA;AAAF,QAAa,KAAKmL,SAAL,EAAnB;;AAEA,WAAO0Q,YAAY,CACjB7b,MADiB,EAEjB,KAAKib,QAFY,EAGjBa,aAHiB,CAAnB;AAKD;AAED;AACF;AACA;;;AACET,EAAAA,QAAQ,CAACU,UAAD,EAAa;AACnB,QAAI,CAACA,UAAL,EAAiB;AACf,YAAM,IAAI9hB,KAAJ,CAAU,qBAAV,CAAN;AACD;;AAED,SAAK+hB,MAAL;;AAEA,QAAIC,QAAQ,CAACF,UAAD,CAAZ,EAA0B;AACxBA,MAAAA,UAAU,GAAGG,QAAQ,CAACC,aAAT,CAAuBJ,UAAvB,CAAb;AACD;;AAED,UAAM1N,SAAS,GAAG,KAAKjE,UAAvB;AAEA2R,IAAAA,UAAU,CAACK,WAAX,CAAuB/N,SAAvB;;AAEA,SAAKiN,KAAL,CAAW,QAAX;AACD;;AAEDU,EAAAA,MAAM,GAAG;AACP,SAAKT,OAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;AACEA,EAAAA,OAAO,CAAC3C,IAAI,GAAG,IAAR,EAAc;AACnB,UAAMvK,SAAS,GAAG,KAAKjE,UAAvB;AAAA,UACM2R,UAAU,GAAG1N,SAAS,CAAC0N,UAD7B;;AAGA,QAAI,CAACA,UAAL,EAAiB;AACf;AACD;;AAED,QAAInD,IAAJ,EAAU;AACR,WAAK0C,KAAL,CAAW,QAAX;AACD;;AAEDS,IAAAA,UAAU,CAACM,WAAX,CAAuBhO,SAAvB;AACD;AAED;AACF;AACA;AACA;;;AACEiO,EAAAA,WAAW,CAAC1G,QAAD,EAAW/R,KAAX,EAAkB;AAC3B,UAAMwJ,UAAU,GAAGzE,GAAG,CAAC,KAAKuC,SAAL,GAAiBkC,UAAlB,EAA8B,CAAEuI,QAAF,CAA9B,EAA4C/R,KAA5C,CAAtB;;AAEA,SAAK2R,SAAL,CAAe;AAAEnI,MAAAA;AAAF,KAAf;AACD;AAED;AACF;AACA;AACA;AACA;;;AACE7T,EAAAA,EAAE,CAAC+B,IAAD,EAAO5B,QAAP,EAAiB8c,OAAjB,EAA0B;AAC1B,SAAKtY,GAAL,CAAS,UAAT,EAAqB3E,EAArB,CAAwB+B,IAAxB,EAA8B5B,QAA9B,EAAwC8c,OAAxC;AACD;AAED;AACF;AACA;AACA;;;AACEzb,EAAAA,GAAG,CAACO,IAAD,EAAOkb,OAAP,EAAgB;AACjB,SAAKtY,GAAL,CAAS,UAAT,EAAqBnD,GAArB,CAAyBO,IAAzB,EAA+Bkb,OAA/B;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;AACEyE,EAAAA,eAAe,CAAC9V,OAAD,EAAUiJ,SAAV,EAAqB;AAClC,UAAM;AACJkO,MAAAA,iBAAiB,GAAG,EADhB;AAEJC,MAAAA,OAAO,GAAG,KAAKC,WAAL,EAFN;AAGJ3N,MAAAA,QAAQ,GAAG;AAHP,QAIF1J,OAJJ;AAMA,UAAMjI,MAAM,GAAG,EACb,GAAGiI,OADU;AAEb0J,MAAAA,QAAQ,EAAE,EACR,GAAGA,QADK;AAERT,QAAAA;AAFQ;AAFG,KAAf;AAQA,WAAOqO,cAAc,CAAC,CACpB;AAAEvf,MAAAA,MAAM,EAAE,CAAE,OAAF,EAAWA,MAAX;AAAV,KADoB,EAEpB;AAAE0M,MAAAA,UAAU,EAAE,CAAE,OAAF,EAAW,IAAX;AAAd,KAFoB,EAGpB8S,IAHoB,EAIpB,GAAGH,OAJiB,EAKpB,GAAGD,iBALiB,CAAD,CAArB;AAOD;AAED;AACF;AACA;;;AACEjB,EAAAA,KAAK,CAAC/f,IAAD,EAAOJ,IAAP,EAAa;AAChB,SAAKgD,GAAL,CAAS,UAAT,EAAqB7C,IAArB,CAA0BC,IAA1B,EAAgCJ,IAAhC;AACD;AAED;AACF;AACA;;;AACEgQ,EAAAA,SAAS,GAAG;AACV,WAAO,KAAKgQ,MAAZ;AACD;AAED;AACF;AACA;;;AACE3F,EAAAA,SAAS,CAAChH,KAAD,EAAQ;AACf,SAAK2M,MAAL,GAAc,EACZ,GAAG,KAAKA,MADI;AAEZ,SAAG3M;AAFS,KAAd;;AAKA,SAAK8M,KAAL,CAAW,SAAX,EAAsB,KAAKnQ,SAAL,EAAtB;AACD;AAED;AACF;AACA;;;AACEsR,EAAAA,WAAW,GAAG;AACZ,WAAO,CACLG,cADK,EAELlL,mBAFK,EAGLwD,cAHK,EAIL2H,eAJK,CAAP;AAMD;;AA5Q6B;;AAkRzB,SAAShB,YAAT,CAAsB7b,MAAtB,EAA8Bib,QAA9B,EAAwCa,aAAxC,EAAuD;AAE5D,QAAMgB,aAAa,GAAG7B,QAAQ,GAAG;AAC/BA,IAAAA;AAD+B,GAAH,GAE1B,EAFJ;AAIA,QAAM8B,aAAa,GAAG3c,KAAK,CAACJ,MAAD,EAAS,CAACnD,IAAD,EAAOgH,KAAP,KAAiB;AACnD,QAAI,CAAE,SAAF,EAAa,OAAb,EAAuBkF,QAAvB,CAAgClM,IAAhC,CAAJ,EAA2C;AACzC,aAAOf,SAAP;AACD;;AAED,WAAO+H,KAAP;AACD,GAN0B,CAA3B;AAQA,SAAO,EACL,GAAGkZ,aADE;AAEL,OAAGD,aAFE;AAGLhB,IAAAA;AAHK,GAAP;AAKD;;ACpUD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACO,SAASkB,gBAAT,CAA0B5X,OAA1B,EAAmC;AACxC,QAAM;AACJpF,IAAAA,MADI;AAEJ,OAAGid;AAFC,MAGF7X,OAHJ;AAKA,QAAMyE,UAAU,GAAG,IAAIoB,UAAJ,CAAegS,IAAf,CAAnB;AAEA,SAAOpT,UAAU,CAAC9J,YAAX,CAAwBC,MAAxB,EAAgCkd,IAAhC,CAAqC,MAAM;AAChD,WAAOrT,UAAP;AACD,GAFM,CAAP;AAGD;;;;"}