{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// TODO: https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/examples/treeview/treeview-2/treeview-2a.html\n// Fully accessibility support\n\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { TreeContext } from \"./contextTypes\";\nimport DropIndicator from \"./DropIndicator\";\nimport NodeList, { MotionEntity, MOTION_KEY } from \"./NodeList\";\nimport TreeNode from \"./TreeNode\";\nimport { arrAdd, arrDel, calcDropPosition, calcSelectedKeys, conductExpandParent, getDragChildrenKeys, parseCheckedKeys, posToArr } from \"./util\";\nimport { conductCheck } from \"./utils/conductUtil\";\nimport getEntity from \"./utils/keyUtil\";\nimport { convertDataToEntities, convertNodePropsToEventData, convertTreeToData, fillFieldNames, flattenTreeData, getTreeNodeProps, warningWithoutKey } from \"./utils/treeUtil\";\nvar MAX_RETRY_TIMES = 10;\nvar Tree = /*#__PURE__*/function (_React$Component) {\n  _inherits(Tree, _React$Component);\n  var _super = _createSuper(Tree);\n  function Tree() {\n    var _this;\n    _classCallCheck(this, Tree);\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(_args));\n    _defineProperty(_assertThisInitialized(_this), \"destroyed\", false);\n    _defineProperty(_assertThisInitialized(_this), \"delayedDragEnterLogic\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"loadingRetryTimes\", {});\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      keyEntities: {},\n      indent: null,\n      selectedKeys: [],\n      checkedKeys: [],\n      halfCheckedKeys: [],\n      loadedKeys: [],\n      loadingKeys: [],\n      expandedKeys: [],\n      draggingNodeKey: null,\n      dragChildrenKeys: [],\n      // dropTargetKey is the key of abstract-drop-node\n      // the abstract-drop-node is the real drop node when drag and drop\n      // not the DOM drag over node\n      dropTargetKey: null,\n      dropPosition: null,\n      // the drop position of abstract-drop-node, inside 0, top -1, bottom 1\n      dropContainerKey: null,\n      // the container key of abstract-drop-node if dropPosition is -1 or 1\n      dropLevelOffset: null,\n      // the drop level offset of abstract-drag-over-node\n      dropTargetPos: null,\n      // the pos of abstract-drop-node\n      dropAllowed: true,\n      // if drop to abstract-drop-node is allowed\n      // the abstract-drag-over-node\n      // if mouse is on the bottom of top dom node or no the top of the bottom dom node\n      // abstract-drag-over-node is the top node\n      dragOverNodeKey: null,\n      treeData: [],\n      flattenNodes: [],\n      focused: false,\n      activeKey: null,\n      listChanging: false,\n      prevProps: null,\n      fieldNames: fillFieldNames()\n    });\n    _defineProperty(_assertThisInitialized(_this), \"dragStartMousePosition\", null);\n    _defineProperty(_assertThisInitialized(_this), \"dragNode\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"currentMouseOverDroppableNodeKey\", null);\n    _defineProperty(_assertThisInitialized(_this), \"listRef\", /*#__PURE__*/React.createRef());\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragStart\", function (event, node) {\n      var _this$state = _this.state,\n        expandedKeys = _this$state.expandedKeys,\n        keyEntities = _this$state.keyEntities;\n      var onDragStart = _this.props.onDragStart;\n      var eventKey = node.props.eventKey;\n      _this.dragNode = node;\n      _this.dragStartMousePosition = {\n        x: event.clientX,\n        y: event.clientY\n      };\n      var newExpandedKeys = arrDel(expandedKeys, eventKey);\n      _this.setState({\n        draggingNodeKey: eventKey,\n        dragChildrenKeys: getDragChildrenKeys(eventKey, keyEntities),\n        indent: _this.listRef.current.getIndentWidth()\n      });\n      _this.setExpandedKeys(newExpandedKeys);\n      window.addEventListener('dragend', _this.onWindowDragEnd);\n      onDragStart === null || onDragStart === void 0 || onDragStart({\n        event: event,\n        node: convertNodePropsToEventData(node.props)\n      });\n    });\n    /**\n     * [Legacy] Select handler is smaller than node,\n     * so that this will trigger when drag enter node or select handler.\n     * This is a little tricky if customize css without padding.\n     * Better for use mouse move event to refresh drag state.\n     * But let's just keep it to avoid event trigger logic change.\n     */\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragEnter\", function (event, node) {\n      var _this$state2 = _this.state,\n        expandedKeys = _this$state2.expandedKeys,\n        keyEntities = _this$state2.keyEntities,\n        dragChildrenKeys = _this$state2.dragChildrenKeys,\n        flattenNodes = _this$state2.flattenNodes,\n        indent = _this$state2.indent;\n      var _this$props = _this.props,\n        onDragEnter = _this$props.onDragEnter,\n        onExpand = _this$props.onExpand,\n        allowDrop = _this$props.allowDrop,\n        direction = _this$props.direction;\n      var _node$props = node.props,\n        pos = _node$props.pos,\n        eventKey = _node$props.eventKey;\n      var _assertThisInitialize = _assertThisInitialized(_this),\n        dragNode = _assertThisInitialize.dragNode;\n\n      // record the key of node which is latest entered, used in dragleave event.\n      if (_this.currentMouseOverDroppableNodeKey !== eventKey) {\n        _this.currentMouseOverDroppableNodeKey = eventKey;\n      }\n      if (!dragNode) {\n        _this.resetDragState();\n        return;\n      }\n      var _calcDropPosition = calcDropPosition(event, dragNode, node, indent, _this.dragStartMousePosition, allowDrop, flattenNodes, keyEntities, expandedKeys, direction),\n        dropPosition = _calcDropPosition.dropPosition,\n        dropLevelOffset = _calcDropPosition.dropLevelOffset,\n        dropTargetKey = _calcDropPosition.dropTargetKey,\n        dropContainerKey = _calcDropPosition.dropContainerKey,\n        dropTargetPos = _calcDropPosition.dropTargetPos,\n        dropAllowed = _calcDropPosition.dropAllowed,\n        dragOverNodeKey = _calcDropPosition.dragOverNodeKey;\n      if (\n      // don't allow drop inside its children\n      dragChildrenKeys.indexOf(dropTargetKey) !== -1 ||\n      // don't allow drop when drop is not allowed caculated by calcDropPosition\n      !dropAllowed) {\n        _this.resetDragState();\n        return;\n      }\n\n      // Side effect for delay drag\n      if (!_this.delayedDragEnterLogic) {\n        _this.delayedDragEnterLogic = {};\n      }\n      Object.keys(_this.delayedDragEnterLogic).forEach(function (key) {\n        clearTimeout(_this.delayedDragEnterLogic[key]);\n      });\n      if (dragNode.props.eventKey !== node.props.eventKey) {\n        // hoist expand logic here\n        // since if logic is on the bottom\n        // it will be blocked by abstract dragover node check\n        //   => if you dragenter from top, you mouse will still be consider as in the top node\n        event.persist();\n        _this.delayedDragEnterLogic[pos] = window.setTimeout(function () {\n          if (_this.state.draggingNodeKey === null) return;\n          var newExpandedKeys = _toConsumableArray(expandedKeys);\n          var entity = getEntity(keyEntities, node.props.eventKey);\n          if (entity && (entity.children || []).length) {\n            newExpandedKeys = arrAdd(expandedKeys, node.props.eventKey);\n          }\n          if (!('expandedKeys' in _this.props)) {\n            _this.setExpandedKeys(newExpandedKeys);\n          }\n          onExpand === null || onExpand === void 0 || onExpand(newExpandedKeys, {\n            node: convertNodePropsToEventData(node.props),\n            expanded: true,\n            nativeEvent: event.nativeEvent\n          });\n        }, 800);\n      }\n\n      // Skip if drag node is self\n      if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n        _this.resetDragState();\n        return;\n      }\n\n      // Update drag over node and drag state\n      _this.setState({\n        dragOverNodeKey: dragOverNodeKey,\n        dropPosition: dropPosition,\n        dropLevelOffset: dropLevelOffset,\n        dropTargetKey: dropTargetKey,\n        dropContainerKey: dropContainerKey,\n        dropTargetPos: dropTargetPos,\n        dropAllowed: dropAllowed\n      });\n      onDragEnter === null || onDragEnter === void 0 || onDragEnter({\n        event: event,\n        node: convertNodePropsToEventData(node.props),\n        expandedKeys: expandedKeys\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragOver\", function (event, node) {\n      var _this$state3 = _this.state,\n        dragChildrenKeys = _this$state3.dragChildrenKeys,\n        flattenNodes = _this$state3.flattenNodes,\n        keyEntities = _this$state3.keyEntities,\n        expandedKeys = _this$state3.expandedKeys,\n        indent = _this$state3.indent;\n      var _this$props2 = _this.props,\n        onDragOver = _this$props2.onDragOver,\n        allowDrop = _this$props2.allowDrop,\n        direction = _this$props2.direction;\n      var _assertThisInitialize2 = _assertThisInitialized(_this),\n        dragNode = _assertThisInitialize2.dragNode;\n      if (!dragNode) {\n        return;\n      }\n      var _calcDropPosition2 = calcDropPosition(event, dragNode, node, indent, _this.dragStartMousePosition, allowDrop, flattenNodes, keyEntities, expandedKeys, direction),\n        dropPosition = _calcDropPosition2.dropPosition,\n        dropLevelOffset = _calcDropPosition2.dropLevelOffset,\n        dropTargetKey = _calcDropPosition2.dropTargetKey,\n        dropContainerKey = _calcDropPosition2.dropContainerKey,\n        dropAllowed = _calcDropPosition2.dropAllowed,\n        dropTargetPos = _calcDropPosition2.dropTargetPos,\n        dragOverNodeKey = _calcDropPosition2.dragOverNodeKey;\n      if (dragChildrenKeys.indexOf(dropTargetKey) !== -1 || !dropAllowed) {\n        // don't allow drop inside its children\n        // don't allow drop when drop is not allowed calculated by calcDropPosition\n        return;\n      }\n\n      // Update drag position\n\n      if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n        if (!(_this.state.dropPosition === null && _this.state.dropLevelOffset === null && _this.state.dropTargetKey === null && _this.state.dropContainerKey === null && _this.state.dropTargetPos === null && _this.state.dropAllowed === false && _this.state.dragOverNodeKey === null)) {\n          _this.resetDragState();\n        }\n      } else if (!(dropPosition === _this.state.dropPosition && dropLevelOffset === _this.state.dropLevelOffset && dropTargetKey === _this.state.dropTargetKey && dropContainerKey === _this.state.dropContainerKey && dropTargetPos === _this.state.dropTargetPos && dropAllowed === _this.state.dropAllowed && dragOverNodeKey === _this.state.dragOverNodeKey)) {\n        _this.setState({\n          dropPosition: dropPosition,\n          dropLevelOffset: dropLevelOffset,\n          dropTargetKey: dropTargetKey,\n          dropContainerKey: dropContainerKey,\n          dropTargetPos: dropTargetPos,\n          dropAllowed: dropAllowed,\n          dragOverNodeKey: dragOverNodeKey\n        });\n      }\n      onDragOver === null || onDragOver === void 0 || onDragOver({\n        event: event,\n        node: convertNodePropsToEventData(node.props)\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragLeave\", function (event, node) {\n      // if it is outside the droppable area\n      // currentMouseOverDroppableNodeKey will be updated in dragenter event when into another droppable receiver.\n      if (_this.currentMouseOverDroppableNodeKey === node.props.eventKey && !event.currentTarget.contains(event.relatedTarget)) {\n        _this.resetDragState();\n        _this.currentMouseOverDroppableNodeKey = null;\n      }\n      var onDragLeave = _this.props.onDragLeave;\n      onDragLeave === null || onDragLeave === void 0 || onDragLeave({\n        event: event,\n        node: convertNodePropsToEventData(node.props)\n      });\n    });\n    // since stopPropagation() is called in treeNode\n    // if onWindowDrag is called, whice means state is keeped, drag state should be cleared\n    _defineProperty(_assertThisInitialized(_this), \"onWindowDragEnd\", function (event) {\n      _this.onNodeDragEnd(event, null, true);\n      window.removeEventListener('dragend', _this.onWindowDragEnd);\n    });\n    // if onNodeDragEnd is called, onWindowDragEnd won't be called since stopPropagation() is called\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragEnd\", function (event, node) {\n      var onDragEnd = _this.props.onDragEnd;\n      _this.setState({\n        dragOverNodeKey: null\n      });\n      _this.cleanDragState();\n      onDragEnd === null || onDragEnd === void 0 || onDragEnd({\n        event: event,\n        node: convertNodePropsToEventData(node.props)\n      });\n      _this.dragNode = null;\n      window.removeEventListener('dragend', _this.onWindowDragEnd);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDrop\", function (event, node) {\n      var _this$getActiveItem;\n      var outsideTree = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var _this$state4 = _this.state,\n        dragChildrenKeys = _this$state4.dragChildrenKeys,\n        dropPosition = _this$state4.dropPosition,\n        dropTargetKey = _this$state4.dropTargetKey,\n        dropTargetPos = _this$state4.dropTargetPos,\n        dropAllowed = _this$state4.dropAllowed;\n      if (!dropAllowed) return;\n      var onDrop = _this.props.onDrop;\n      _this.setState({\n        dragOverNodeKey: null\n      });\n      _this.cleanDragState();\n      if (dropTargetKey === null) return;\n      var abstractDropNodeProps = _objectSpread(_objectSpread({}, getTreeNodeProps(dropTargetKey, _this.getTreeNodeRequiredProps())), {}, {\n        active: ((_this$getActiveItem = _this.getActiveItem()) === null || _this$getActiveItem === void 0 ? void 0 : _this$getActiveItem.key) === dropTargetKey,\n        data: getEntity(_this.state.keyEntities, dropTargetKey).node\n      });\n      var dropToChild = dragChildrenKeys.indexOf(dropTargetKey) !== -1;\n      warning(!dropToChild, \"Can not drop to dragNode's children node. This is a bug of rc-tree. Please report an issue.\");\n      var posArr = posToArr(dropTargetPos);\n      var dropResult = {\n        event: event,\n        node: convertNodePropsToEventData(abstractDropNodeProps),\n        dragNode: _this.dragNode ? convertNodePropsToEventData(_this.dragNode.props) : null,\n        dragNodesKeys: [_this.dragNode.props.eventKey].concat(dragChildrenKeys),\n        dropToGap: dropPosition !== 0,\n        dropPosition: dropPosition + Number(posArr[posArr.length - 1])\n      };\n      if (!outsideTree) {\n        onDrop === null || onDrop === void 0 || onDrop(dropResult);\n      }\n      _this.dragNode = null;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"cleanDragState\", function () {\n      var draggingNodeKey = _this.state.draggingNodeKey;\n      if (draggingNodeKey !== null) {\n        _this.setState({\n          draggingNodeKey: null,\n          dropPosition: null,\n          dropContainerKey: null,\n          dropTargetKey: null,\n          dropLevelOffset: null,\n          dropAllowed: true,\n          dragOverNodeKey: null\n        });\n      }\n      _this.dragStartMousePosition = null;\n      _this.currentMouseOverDroppableNodeKey = null;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"triggerExpandActionExpand\", function (e, treeNode) {\n      var _this$state5 = _this.state,\n        expandedKeys = _this$state5.expandedKeys,\n        flattenNodes = _this$state5.flattenNodes;\n      var expanded = treeNode.expanded,\n        key = treeNode.key,\n        isLeaf = treeNode.isLeaf;\n      if (isLeaf || e.shiftKey || e.metaKey || e.ctrlKey) {\n        return;\n      }\n      var node = flattenNodes.filter(function (nodeItem) {\n        return nodeItem.key === key;\n      })[0];\n      var eventNode = convertNodePropsToEventData(_objectSpread(_objectSpread({}, getTreeNodeProps(key, _this.getTreeNodeRequiredProps())), {}, {\n        data: node.data\n      }));\n      _this.setExpandedKeys(expanded ? arrDel(expandedKeys, key) : arrAdd(expandedKeys, key));\n      _this.onNodeExpand(e, eventNode);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeClick\", function (e, treeNode) {\n      var _this$props3 = _this.props,\n        onClick = _this$props3.onClick,\n        expandAction = _this$props3.expandAction;\n      if (expandAction === 'click') {\n        _this.triggerExpandActionExpand(e, treeNode);\n      }\n      onClick === null || onClick === void 0 || onClick(e, treeNode);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDoubleClick\", function (e, treeNode) {\n      var _this$props4 = _this.props,\n        onDoubleClick = _this$props4.onDoubleClick,\n        expandAction = _this$props4.expandAction;\n      if (expandAction === 'doubleClick') {\n        _this.triggerExpandActionExpand(e, treeNode);\n      }\n      onDoubleClick === null || onDoubleClick === void 0 || onDoubleClick(e, treeNode);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeSelect\", function (e, treeNode) {\n      var selectedKeys = _this.state.selectedKeys;\n      var _this$state6 = _this.state,\n        keyEntities = _this$state6.keyEntities,\n        fieldNames = _this$state6.fieldNames;\n      var _this$props5 = _this.props,\n        onSelect = _this$props5.onSelect,\n        multiple = _this$props5.multiple;\n      var selected = treeNode.selected;\n      var key = treeNode[fieldNames.key];\n      var targetSelected = !selected;\n\n      // Update selected keys\n      if (!targetSelected) {\n        selectedKeys = arrDel(selectedKeys, key);\n      } else if (!multiple) {\n        selectedKeys = [key];\n      } else {\n        selectedKeys = arrAdd(selectedKeys, key);\n      }\n\n      // [Legacy] Not found related usage in doc or upper libs\n      var selectedNodes = selectedKeys.map(function (selectedKey) {\n        var entity = getEntity(keyEntities, selectedKey);\n        if (!entity) return null;\n        return entity.node;\n      }).filter(function (node) {\n        return node;\n      });\n      _this.setUncontrolledState({\n        selectedKeys: selectedKeys\n      });\n      onSelect === null || onSelect === void 0 || onSelect(selectedKeys, {\n        event: 'select',\n        selected: targetSelected,\n        node: treeNode,\n        selectedNodes: selectedNodes,\n        nativeEvent: e.nativeEvent\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeCheck\", function (e, treeNode, checked) {\n      var _this$state7 = _this.state,\n        keyEntities = _this$state7.keyEntities,\n        oriCheckedKeys = _this$state7.checkedKeys,\n        oriHalfCheckedKeys = _this$state7.halfCheckedKeys;\n      var _this$props6 = _this.props,\n        checkStrictly = _this$props6.checkStrictly,\n        onCheck = _this$props6.onCheck;\n      var key = treeNode.key;\n\n      // Prepare trigger arguments\n      var checkedObj;\n      var eventObj = {\n        event: 'check',\n        node: treeNode,\n        checked: checked,\n        nativeEvent: e.nativeEvent\n      };\n      if (checkStrictly) {\n        var checkedKeys = checked ? arrAdd(oriCheckedKeys, key) : arrDel(oriCheckedKeys, key);\n        var halfCheckedKeys = arrDel(oriHalfCheckedKeys, key);\n        checkedObj = {\n          checked: checkedKeys,\n          halfChecked: halfCheckedKeys\n        };\n        eventObj.checkedNodes = checkedKeys.map(function (checkedKey) {\n          return getEntity(keyEntities, checkedKey);\n        }).filter(function (entity) {\n          return entity;\n        }).map(function (entity) {\n          return entity.node;\n        });\n        _this.setUncontrolledState({\n          checkedKeys: checkedKeys\n        });\n      } else {\n        // Always fill first\n        var _conductCheck = conductCheck([].concat(_toConsumableArray(oriCheckedKeys), [key]), true, keyEntities),\n          _checkedKeys = _conductCheck.checkedKeys,\n          _halfCheckedKeys = _conductCheck.halfCheckedKeys;\n\n        // If remove, we do it again to correction\n        if (!checked) {\n          var keySet = new Set(_checkedKeys);\n          keySet.delete(key);\n          var _conductCheck2 = conductCheck(Array.from(keySet), {\n            checked: false,\n            halfCheckedKeys: _halfCheckedKeys\n          }, keyEntities);\n          _checkedKeys = _conductCheck2.checkedKeys;\n          _halfCheckedKeys = _conductCheck2.halfCheckedKeys;\n        }\n        checkedObj = _checkedKeys;\n\n        // [Legacy] This is used for `rc-tree-select`\n        eventObj.checkedNodes = [];\n        eventObj.checkedNodesPositions = [];\n        eventObj.halfCheckedKeys = _halfCheckedKeys;\n        _checkedKeys.forEach(function (checkedKey) {\n          var entity = getEntity(keyEntities, checkedKey);\n          if (!entity) return;\n          var node = entity.node,\n            pos = entity.pos;\n          eventObj.checkedNodes.push(node);\n          eventObj.checkedNodesPositions.push({\n            node: node,\n            pos: pos\n          });\n        });\n        _this.setUncontrolledState({\n          checkedKeys: _checkedKeys\n        }, false, {\n          halfCheckedKeys: _halfCheckedKeys\n        });\n      }\n      onCheck === null || onCheck === void 0 || onCheck(checkedObj, eventObj);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeLoad\", function (treeNode) {\n      var key = treeNode.key;\n      var loadPromise = new Promise(function (resolve, reject) {\n        // We need to get the latest state of loading/loaded keys\n        _this.setState(function (_ref) {\n          var _ref$loadedKeys = _ref.loadedKeys,\n            loadedKeys = _ref$loadedKeys === void 0 ? [] : _ref$loadedKeys,\n            _ref$loadingKeys = _ref.loadingKeys,\n            loadingKeys = _ref$loadingKeys === void 0 ? [] : _ref$loadingKeys;\n          var _this$props7 = _this.props,\n            loadData = _this$props7.loadData,\n            onLoad = _this$props7.onLoad;\n          if (!loadData || loadedKeys.indexOf(key) !== -1 || loadingKeys.indexOf(key) !== -1) {\n            return null;\n          }\n\n          // Process load data\n          var promise = loadData(treeNode);\n          promise.then(function () {\n            var currentLoadedKeys = _this.state.loadedKeys;\n            var newLoadedKeys = arrAdd(currentLoadedKeys, key);\n\n            // onLoad should trigger before internal setState to avoid `loadData` trigger twice.\n            // https://github.com/ant-design/ant-design/issues/12464\n            onLoad === null || onLoad === void 0 || onLoad(newLoadedKeys, {\n              event: 'load',\n              node: treeNode\n            });\n            _this.setUncontrolledState({\n              loadedKeys: newLoadedKeys\n            });\n            _this.setState(function (prevState) {\n              return {\n                loadingKeys: arrDel(prevState.loadingKeys, key)\n              };\n            });\n            resolve();\n          }).catch(function (e) {\n            _this.setState(function (prevState) {\n              return {\n                loadingKeys: arrDel(prevState.loadingKeys, key)\n              };\n            });\n\n            // If exceed max retry times, we give up retry\n            _this.loadingRetryTimes[key] = (_this.loadingRetryTimes[key] || 0) + 1;\n            if (_this.loadingRetryTimes[key] >= MAX_RETRY_TIMES) {\n              var currentLoadedKeys = _this.state.loadedKeys;\n              warning(false, 'Retry for `loadData` many times but still failed. No more retry.');\n              _this.setUncontrolledState({\n                loadedKeys: arrAdd(currentLoadedKeys, key)\n              });\n              resolve();\n            }\n            reject(e);\n          });\n          return {\n            loadingKeys: arrAdd(loadingKeys, key)\n          };\n        });\n      });\n\n      // Not care warning if we ignore this\n      loadPromise.catch(function () {});\n      return loadPromise;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeMouseEnter\", function (event, node) {\n      var onMouseEnter = _this.props.onMouseEnter;\n      onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({\n        event: event,\n        node: node\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeMouseLeave\", function (event, node) {\n      var onMouseLeave = _this.props.onMouseLeave;\n      onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({\n        event: event,\n        node: node\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeContextMenu\", function (event, node) {\n      var onRightClick = _this.props.onRightClick;\n      if (onRightClick) {\n        event.preventDefault();\n        onRightClick({\n          event: event,\n          node: node\n        });\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onFocus\", function () {\n      var onFocus = _this.props.onFocus;\n      _this.setState({\n        focused: true\n      });\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      onFocus === null || onFocus === void 0 || onFocus.apply(void 0, args);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n      var onBlur = _this.props.onBlur;\n      _this.setState({\n        focused: false\n      });\n      _this.onActiveChange(null);\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n      onBlur === null || onBlur === void 0 || onBlur.apply(void 0, args);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getTreeNodeRequiredProps\", function () {\n      var _this$state8 = _this.state,\n        expandedKeys = _this$state8.expandedKeys,\n        selectedKeys = _this$state8.selectedKeys,\n        loadedKeys = _this$state8.loadedKeys,\n        loadingKeys = _this$state8.loadingKeys,\n        checkedKeys = _this$state8.checkedKeys,\n        halfCheckedKeys = _this$state8.halfCheckedKeys,\n        dragOverNodeKey = _this$state8.dragOverNodeKey,\n        dropPosition = _this$state8.dropPosition,\n        keyEntities = _this$state8.keyEntities;\n      return {\n        expandedKeys: expandedKeys || [],\n        selectedKeys: selectedKeys || [],\n        loadedKeys: loadedKeys || [],\n        loadingKeys: loadingKeys || [],\n        checkedKeys: checkedKeys || [],\n        halfCheckedKeys: halfCheckedKeys || [],\n        dragOverNodeKey: dragOverNodeKey,\n        dropPosition: dropPosition,\n        keyEntities: keyEntities\n      };\n    });\n    // =========================== Expanded ===========================\n    /** Set uncontrolled `expandedKeys`. This will also auto update `flattenNodes`. */\n    _defineProperty(_assertThisInitialized(_this), \"setExpandedKeys\", function (expandedKeys) {\n      var _this$state9 = _this.state,\n        treeData = _this$state9.treeData,\n        fieldNames = _this$state9.fieldNames;\n      var flattenNodes = flattenTreeData(treeData, expandedKeys, fieldNames);\n      _this.setUncontrolledState({\n        expandedKeys: expandedKeys,\n        flattenNodes: flattenNodes\n      }, true);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeExpand\", function (e, treeNode) {\n      var expandedKeys = _this.state.expandedKeys;\n      var _this$state10 = _this.state,\n        listChanging = _this$state10.listChanging,\n        fieldNames = _this$state10.fieldNames;\n      var _this$props8 = _this.props,\n        onExpand = _this$props8.onExpand,\n        loadData = _this$props8.loadData;\n      var expanded = treeNode.expanded;\n      var key = treeNode[fieldNames.key];\n\n      // Do nothing when motion is in progress\n      if (listChanging) {\n        return;\n      }\n\n      // Update selected keys\n      var index = expandedKeys.indexOf(key);\n      var targetExpanded = !expanded;\n      warning(expanded && index !== -1 || !expanded && index === -1, 'Expand state not sync with index check');\n      if (targetExpanded) {\n        expandedKeys = arrAdd(expandedKeys, key);\n      } else {\n        expandedKeys = arrDel(expandedKeys, key);\n      }\n      _this.setExpandedKeys(expandedKeys);\n      onExpand === null || onExpand === void 0 || onExpand(expandedKeys, {\n        node: treeNode,\n        expanded: targetExpanded,\n        nativeEvent: e.nativeEvent\n      });\n\n      // Async Load data\n      if (targetExpanded && loadData) {\n        var loadPromise = _this.onNodeLoad(treeNode);\n        if (loadPromise) {\n          loadPromise.then(function () {\n            // [Legacy] Refresh logic\n            var newFlattenTreeData = flattenTreeData(_this.state.treeData, expandedKeys, fieldNames);\n            _this.setUncontrolledState({\n              flattenNodes: newFlattenTreeData\n            });\n          }).catch(function () {\n            var currentExpandedKeys = _this.state.expandedKeys;\n            var expandedKeysToRestore = arrDel(currentExpandedKeys, key);\n            _this.setExpandedKeys(expandedKeysToRestore);\n          });\n        }\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onListChangeStart\", function () {\n      _this.setUncontrolledState({\n        listChanging: true\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onListChangeEnd\", function () {\n      setTimeout(function () {\n        _this.setUncontrolledState({\n          listChanging: false\n        });\n      });\n    });\n    // =========================== Keyboard ===========================\n    _defineProperty(_assertThisInitialized(_this), \"onActiveChange\", function (newActiveKey) {\n      var activeKey = _this.state.activeKey;\n      var _this$props9 = _this.props,\n        onActiveChange = _this$props9.onActiveChange,\n        _this$props9$itemScro = _this$props9.itemScrollOffset,\n        itemScrollOffset = _this$props9$itemScro === void 0 ? 0 : _this$props9$itemScro;\n      if (activeKey === newActiveKey) {\n        return;\n      }\n      _this.setState({\n        activeKey: newActiveKey\n      });\n      if (newActiveKey !== null) {\n        _this.scrollTo({\n          key: newActiveKey,\n          offset: itemScrollOffset\n        });\n      }\n      onActiveChange === null || onActiveChange === void 0 || onActiveChange(newActiveKey);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getActiveItem\", function () {\n      var _this$state11 = _this.state,\n        activeKey = _this$state11.activeKey,\n        flattenNodes = _this$state11.flattenNodes;\n      if (activeKey === null) {\n        return null;\n      }\n      return flattenNodes.find(function (_ref2) {\n        var key = _ref2.key;\n        return key === activeKey;\n      }) || null;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"offsetActiveKey\", function (offset) {\n      var _this$state12 = _this.state,\n        flattenNodes = _this$state12.flattenNodes,\n        activeKey = _this$state12.activeKey;\n      var index = flattenNodes.findIndex(function (_ref3) {\n        var key = _ref3.key;\n        return key === activeKey;\n      });\n\n      // Align with index\n      if (index === -1 && offset < 0) {\n        index = flattenNodes.length;\n      }\n      index = (index + offset + flattenNodes.length) % flattenNodes.length;\n      var item = flattenNodes[index];\n      if (item) {\n        var _key4 = item.key;\n        _this.onActiveChange(_key4);\n      } else {\n        _this.onActiveChange(null);\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n      var _this$state13 = _this.state,\n        activeKey = _this$state13.activeKey,\n        expandedKeys = _this$state13.expandedKeys,\n        checkedKeys = _this$state13.checkedKeys,\n        fieldNames = _this$state13.fieldNames;\n      var _this$props10 = _this.props,\n        onKeyDown = _this$props10.onKeyDown,\n        checkable = _this$props10.checkable,\n        selectable = _this$props10.selectable;\n\n      // >>>>>>>>>> Direction\n      switch (event.which) {\n        case KeyCode.UP:\n          {\n            _this.offsetActiveKey(-1);\n            event.preventDefault();\n            break;\n          }\n        case KeyCode.DOWN:\n          {\n            _this.offsetActiveKey(1);\n            event.preventDefault();\n            break;\n          }\n      }\n\n      // >>>>>>>>>> Expand & Selection\n      var activeItem = _this.getActiveItem();\n      if (activeItem && activeItem.data) {\n        var treeNodeRequiredProps = _this.getTreeNodeRequiredProps();\n        var expandable = activeItem.data.isLeaf === false || !!(activeItem.data[fieldNames.children] || []).length;\n        var eventNode = convertNodePropsToEventData(_objectSpread(_objectSpread({}, getTreeNodeProps(activeKey, treeNodeRequiredProps)), {}, {\n          data: activeItem.data,\n          active: true\n        }));\n        switch (event.which) {\n          // >>> Expand\n          case KeyCode.LEFT:\n            {\n              // Collapse if possible\n              if (expandable && expandedKeys.includes(activeKey)) {\n                _this.onNodeExpand({}, eventNode);\n              } else if (activeItem.parent) {\n                _this.onActiveChange(activeItem.parent.key);\n              }\n              event.preventDefault();\n              break;\n            }\n          case KeyCode.RIGHT:\n            {\n              // Expand if possible\n              if (expandable && !expandedKeys.includes(activeKey)) {\n                _this.onNodeExpand({}, eventNode);\n              } else if (activeItem.children && activeItem.children.length) {\n                _this.onActiveChange(activeItem.children[0].key);\n              }\n              event.preventDefault();\n              break;\n            }\n\n          // Selection\n          case KeyCode.ENTER:\n          case KeyCode.SPACE:\n            {\n              if (checkable && !eventNode.disabled && eventNode.checkable !== false && !eventNode.disableCheckbox) {\n                _this.onNodeCheck({}, eventNode, !checkedKeys.includes(activeKey));\n              } else if (!checkable && selectable && !eventNode.disabled && eventNode.selectable !== false) {\n                _this.onNodeSelect({}, eventNode);\n              }\n              break;\n            }\n        }\n      }\n      onKeyDown === null || onKeyDown === void 0 || onKeyDown(event);\n    });\n    /**\n     * Only update the value which is not in props\n     */\n    _defineProperty(_assertThisInitialized(_this), \"setUncontrolledState\", function (state) {\n      var atomic = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var forceState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n      if (!_this.destroyed) {\n        var needSync = false;\n        var allPassed = true;\n        var newState = {};\n        Object.keys(state).forEach(function (name) {\n          if (name in _this.props) {\n            allPassed = false;\n            return;\n          }\n          needSync = true;\n          newState[name] = state[name];\n        });\n        if (needSync && (!atomic || allPassed)) {\n          _this.setState(_objectSpread(_objectSpread({}, newState), forceState));\n        }\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"scrollTo\", function (scroll) {\n      _this.listRef.current.scrollTo(scroll);\n    });\n    return _this;\n  }\n  _createClass(Tree, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.destroyed = false;\n      this.onUpdated();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.onUpdated();\n    }\n  }, {\n    key: \"onUpdated\",\n    value: function onUpdated() {\n      var _this$props11 = this.props,\n        activeKey = _this$props11.activeKey,\n        _this$props11$itemScr = _this$props11.itemScrollOffset,\n        itemScrollOffset = _this$props11$itemScr === void 0 ? 0 : _this$props11$itemScr;\n      if (activeKey !== undefined && activeKey !== this.state.activeKey) {\n        this.setState({\n          activeKey: activeKey\n        });\n        if (activeKey !== null) {\n          this.scrollTo({\n            key: activeKey,\n            offset: itemScrollOffset\n          });\n        }\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      window.removeEventListener('dragend', this.onWindowDragEnd);\n      this.destroyed = true;\n    }\n  }, {\n    key: \"resetDragState\",\n    value: function resetDragState() {\n      this.setState({\n        dragOverNodeKey: null,\n        dropPosition: null,\n        dropLevelOffset: null,\n        dropTargetKey: null,\n        dropContainerKey: null,\n        dropTargetPos: null,\n        dropAllowed: false\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$state14 = this.state,\n        focused = _this$state14.focused,\n        flattenNodes = _this$state14.flattenNodes,\n        keyEntities = _this$state14.keyEntities,\n        draggingNodeKey = _this$state14.draggingNodeKey,\n        activeKey = _this$state14.activeKey,\n        dropLevelOffset = _this$state14.dropLevelOffset,\n        dropContainerKey = _this$state14.dropContainerKey,\n        dropTargetKey = _this$state14.dropTargetKey,\n        dropPosition = _this$state14.dropPosition,\n        dragOverNodeKey = _this$state14.dragOverNodeKey,\n        indent = _this$state14.indent;\n      var _this$props12 = this.props,\n        prefixCls = _this$props12.prefixCls,\n        className = _this$props12.className,\n        style = _this$props12.style,\n        showLine = _this$props12.showLine,\n        focusable = _this$props12.focusable,\n        _this$props12$tabInde = _this$props12.tabIndex,\n        tabIndex = _this$props12$tabInde === void 0 ? 0 : _this$props12$tabInde,\n        selectable = _this$props12.selectable,\n        showIcon = _this$props12.showIcon,\n        icon = _this$props12.icon,\n        switcherIcon = _this$props12.switcherIcon,\n        draggable = _this$props12.draggable,\n        checkable = _this$props12.checkable,\n        checkStrictly = _this$props12.checkStrictly,\n        disabled = _this$props12.disabled,\n        motion = _this$props12.motion,\n        loadData = _this$props12.loadData,\n        filterTreeNode = _this$props12.filterTreeNode,\n        height = _this$props12.height,\n        itemHeight = _this$props12.itemHeight,\n        virtual = _this$props12.virtual,\n        titleRender = _this$props12.titleRender,\n        dropIndicatorRender = _this$props12.dropIndicatorRender,\n        onContextMenu = _this$props12.onContextMenu,\n        onScroll = _this$props12.onScroll,\n        direction = _this$props12.direction,\n        rootClassName = _this$props12.rootClassName,\n        rootStyle = _this$props12.rootStyle;\n      var domProps = pickAttrs(this.props, {\n        aria: true,\n        data: true\n      });\n\n      // It's better move to hooks but we just simply keep here\n      var draggableConfig;\n      if (draggable) {\n        if (_typeof(draggable) === 'object') {\n          draggableConfig = draggable;\n        } else if (typeof draggable === 'function') {\n          draggableConfig = {\n            nodeDraggable: draggable\n          };\n        } else {\n          draggableConfig = {};\n        }\n      }\n      return /*#__PURE__*/React.createElement(TreeContext.Provider, {\n        value: {\n          prefixCls: prefixCls,\n          selectable: selectable,\n          showIcon: showIcon,\n          icon: icon,\n          switcherIcon: switcherIcon,\n          draggable: draggableConfig,\n          draggingNodeKey: draggingNodeKey,\n          checkable: checkable,\n          checkStrictly: checkStrictly,\n          disabled: disabled,\n          keyEntities: keyEntities,\n          dropLevelOffset: dropLevelOffset,\n          dropContainerKey: dropContainerKey,\n          dropTargetKey: dropTargetKey,\n          dropPosition: dropPosition,\n          dragOverNodeKey: dragOverNodeKey,\n          indent: indent,\n          direction: direction,\n          dropIndicatorRender: dropIndicatorRender,\n          loadData: loadData,\n          filterTreeNode: filterTreeNode,\n          titleRender: titleRender,\n          onNodeClick: this.onNodeClick,\n          onNodeDoubleClick: this.onNodeDoubleClick,\n          onNodeExpand: this.onNodeExpand,\n          onNodeSelect: this.onNodeSelect,\n          onNodeCheck: this.onNodeCheck,\n          onNodeLoad: this.onNodeLoad,\n          onNodeMouseEnter: this.onNodeMouseEnter,\n          onNodeMouseLeave: this.onNodeMouseLeave,\n          onNodeContextMenu: this.onNodeContextMenu,\n          onNodeDragStart: this.onNodeDragStart,\n          onNodeDragEnter: this.onNodeDragEnter,\n          onNodeDragOver: this.onNodeDragOver,\n          onNodeDragLeave: this.onNodeDragLeave,\n          onNodeDragEnd: this.onNodeDragEnd,\n          onNodeDrop: this.onNodeDrop\n        }\n      }, /*#__PURE__*/React.createElement(\"div\", {\n        role: \"tree\",\n        className: classNames(prefixCls, className, rootClassName, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-show-line\"), showLine), \"\".concat(prefixCls, \"-focused\"), focused), \"\".concat(prefixCls, \"-active-focused\"), activeKey !== null)),\n        style: rootStyle\n      }, /*#__PURE__*/React.createElement(NodeList, _extends({\n        ref: this.listRef,\n        prefixCls: prefixCls,\n        style: style,\n        data: flattenNodes,\n        disabled: disabled,\n        selectable: selectable,\n        checkable: !!checkable,\n        motion: motion,\n        dragging: draggingNodeKey !== null,\n        height: height,\n        itemHeight: itemHeight,\n        virtual: virtual,\n        focusable: focusable,\n        focused: focused,\n        tabIndex: tabIndex,\n        activeItem: this.getActiveItem(),\n        onFocus: this.onFocus,\n        onBlur: this.onBlur,\n        onKeyDown: this.onKeyDown,\n        onActiveChange: this.onActiveChange,\n        onListChangeStart: this.onListChangeStart,\n        onListChangeEnd: this.onListChangeEnd,\n        onContextMenu: onContextMenu,\n        onScroll: onScroll\n      }, this.getTreeNodeRequiredProps(), domProps))));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, prevState) {\n      var prevProps = prevState.prevProps;\n      var newState = {\n        prevProps: props\n      };\n      function needSync(name) {\n        return !prevProps && name in props || prevProps && prevProps[name] !== props[name];\n      }\n\n      // ================== Tree Node ==================\n      var treeData;\n\n      // fieldNames\n      var fieldNames = prevState.fieldNames;\n      if (needSync('fieldNames')) {\n        fieldNames = fillFieldNames(props.fieldNames);\n        newState.fieldNames = fieldNames;\n      }\n\n      // Check if `treeData` or `children` changed and save into the state.\n      if (needSync('treeData')) {\n        treeData = props.treeData;\n      } else if (needSync('children')) {\n        warning(false, '`children` of Tree is deprecated. Please use `treeData` instead.');\n        treeData = convertTreeToData(props.children);\n      }\n\n      // Save flatten nodes info and convert `treeData` into keyEntities\n      if (treeData) {\n        newState.treeData = treeData;\n        var entitiesMap = convertDataToEntities(treeData, {\n          fieldNames: fieldNames\n        });\n        newState.keyEntities = _objectSpread(_defineProperty({}, MOTION_KEY, MotionEntity), entitiesMap.keyEntities);\n\n        // Warning if treeNode not provide key\n        if (process.env.NODE_ENV !== 'production') {\n          warningWithoutKey(treeData, fieldNames);\n        }\n      }\n      var keyEntities = newState.keyEntities || prevState.keyEntities;\n\n      // ================ expandedKeys =================\n      if (needSync('expandedKeys') || prevProps && needSync('autoExpandParent')) {\n        newState.expandedKeys = props.autoExpandParent || !prevProps && props.defaultExpandParent ? conductExpandParent(props.expandedKeys, keyEntities) : props.expandedKeys;\n      } else if (!prevProps && props.defaultExpandAll) {\n        var cloneKeyEntities = _objectSpread({}, keyEntities);\n        delete cloneKeyEntities[MOTION_KEY];\n        newState.expandedKeys = Object.keys(cloneKeyEntities).map(function (key) {\n          return cloneKeyEntities[key].key;\n        });\n      } else if (!prevProps && props.defaultExpandedKeys) {\n        newState.expandedKeys = props.autoExpandParent || props.defaultExpandParent ? conductExpandParent(props.defaultExpandedKeys, keyEntities) : props.defaultExpandedKeys;\n      }\n      if (!newState.expandedKeys) {\n        delete newState.expandedKeys;\n      }\n\n      // ================ flattenNodes =================\n      if (treeData || newState.expandedKeys) {\n        var flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys, fieldNames);\n        newState.flattenNodes = flattenNodes;\n      }\n\n      // ================ selectedKeys =================\n      if (props.selectable) {\n        if (needSync('selectedKeys')) {\n          newState.selectedKeys = calcSelectedKeys(props.selectedKeys, props);\n        } else if (!prevProps && props.defaultSelectedKeys) {\n          newState.selectedKeys = calcSelectedKeys(props.defaultSelectedKeys, props);\n        }\n      }\n\n      // ================= checkedKeys =================\n      if (props.checkable) {\n        var checkedKeyEntity;\n        if (needSync('checkedKeys')) {\n          checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {};\n        } else if (!prevProps && props.defaultCheckedKeys) {\n          checkedKeyEntity = parseCheckedKeys(props.defaultCheckedKeys) || {};\n        } else if (treeData) {\n          // If `treeData` changed, we also need check it\n          checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {\n            checkedKeys: prevState.checkedKeys,\n            halfCheckedKeys: prevState.halfCheckedKeys\n          };\n        }\n        if (checkedKeyEntity) {\n          var _checkedKeyEntity = checkedKeyEntity,\n            _checkedKeyEntity$che = _checkedKeyEntity.checkedKeys,\n            checkedKeys = _checkedKeyEntity$che === void 0 ? [] : _checkedKeyEntity$che,\n            _checkedKeyEntity$hal = _checkedKeyEntity.halfCheckedKeys,\n            halfCheckedKeys = _checkedKeyEntity$hal === void 0 ? [] : _checkedKeyEntity$hal;\n          if (!props.checkStrictly) {\n            var conductKeys = conductCheck(checkedKeys, true, keyEntities);\n            checkedKeys = conductKeys.checkedKeys;\n            halfCheckedKeys = conductKeys.halfCheckedKeys;\n          }\n          newState.checkedKeys = checkedKeys;\n          newState.halfCheckedKeys = halfCheckedKeys;\n        }\n      }\n\n      // ================= loadedKeys ==================\n      if (needSync('loadedKeys')) {\n        newState.loadedKeys = props.loadedKeys;\n      }\n      return newState;\n    }\n  }]);\n  return Tree;\n}(React.Component);\n_defineProperty(Tree, \"defaultProps\", {\n  prefixCls: 'rc-tree',\n  showLine: false,\n  showIcon: true,\n  selectable: true,\n  multiple: false,\n  checkable: false,\n  disabled: false,\n  checkStrictly: false,\n  draggable: false,\n  defaultExpandParent: true,\n  autoExpandParent: false,\n  defaultExpandAll: false,\n  defaultExpandedKeys: [],\n  defaultCheckedKeys: [],\n  defaultSelectedKeys: [],\n  dropIndicatorRender: DropIndicator,\n  allowDrop: function allowDrop() {\n    return true;\n  },\n  expandAction: false\n});\n_defineProperty(Tree, \"TreeNode\", TreeNode);\nexport default Tree;","map":{"version":3,"names":["_extends","_typeof","_objectSpread","_toConsumableArray","_classCallCheck","_createClass","_assertThisInitialized","_inherits","_createSuper","_defineProperty","classNames","KeyCode","pickAttrs","warning","React","TreeContext","DropIndicator","NodeList","MotionEntity","MOTION_KEY","TreeNode","arrAdd","arrDel","calcDropPosition","calcSelectedKeys","conductExpandParent","getDragChildrenKeys","parseCheckedKeys","posToArr","conductCheck","getEntity","convertDataToEntities","convertNodePropsToEventData","convertTreeToData","fillFieldNames","flattenTreeData","getTreeNodeProps","warningWithoutKey","MAX_RETRY_TIMES","Tree","_React$Component","_super","_this","_len","arguments","length","_args","Array","_key","call","apply","concat","keyEntities","indent","selectedKeys","checkedKeys","halfCheckedKeys","loadedKeys","loadingKeys","expandedKeys","draggingNodeKey","dragChildrenKeys","dropTargetKey","dropPosition","dropContainerKey","dropLevelOffset","dropTargetPos","dropAllowed","dragOverNodeKey","treeData","flattenNodes","focused","activeKey","listChanging","prevProps","fieldNames","createRef","event","node","_this$state","state","onDragStart","props","eventKey","dragNode","dragStartMousePosition","x","clientX","y","clientY","newExpandedKeys","setState","listRef","current","getIndentWidth","setExpandedKeys","window","addEventListener","onWindowDragEnd","_this$state2","_this$props","onDragEnter","onExpand","allowDrop","direction","_node$props","pos","_assertThisInitialize","currentMouseOverDroppableNodeKey","resetDragState","_calcDropPosition","indexOf","delayedDragEnterLogic","Object","keys","forEach","key","clearTimeout","persist","setTimeout","entity","children","expanded","nativeEvent","_this$state3","_this$props2","onDragOver","_assertThisInitialize2","_calcDropPosition2","currentTarget","contains","relatedTarget","onDragLeave","onNodeDragEnd","removeEventListener","onDragEnd","cleanDragState","_this$getActiveItem","outsideTree","undefined","_this$state4","onDrop","abstractDropNodeProps","getTreeNodeRequiredProps","active","getActiveItem","data","dropToChild","posArr","dropResult","dragNodesKeys","dropToGap","Number","e","treeNode","_this$state5","isLeaf","shiftKey","metaKey","ctrlKey","filter","nodeItem","eventNode","onNodeExpand","_this$props3","onClick","expandAction","triggerExpandActionExpand","_this$props4","onDoubleClick","_this$state6","_this$props5","onSelect","multiple","selected","targetSelected","selectedNodes","map","selectedKey","setUncontrolledState","checked","_this$state7","oriCheckedKeys","oriHalfCheckedKeys","_this$props6","checkStrictly","onCheck","checkedObj","eventObj","halfChecked","checkedNodes","checkedKey","_conductCheck","_checkedKeys","_halfCheckedKeys","keySet","Set","delete","_conductCheck2","from","checkedNodesPositions","push","loadPromise","Promise","resolve","reject","_ref","_ref$loadedKeys","_ref$loadingKeys","_this$props7","loadData","onLoad","promise","then","currentLoadedKeys","newLoadedKeys","prevState","catch","loadingRetryTimes","onMouseEnter","onMouseLeave","onRightClick","preventDefault","onFocus","_len2","args","_key2","onBlur","onActiveChange","_len3","_key3","_this$state8","_this$state9","_this$state10","_this$props8","index","targetExpanded","onNodeLoad","newFlattenTreeData","currentExpandedKeys","expandedKeysToRestore","newActiveKey","_this$props9","_this$props9$itemScro","itemScrollOffset","scrollTo","offset","_this$state11","find","_ref2","_this$state12","findIndex","_ref3","item","_key4","_this$state13","_this$props10","onKeyDown","checkable","selectable","which","UP","offsetActiveKey","DOWN","activeItem","treeNodeRequiredProps","expandable","LEFT","includes","parent","RIGHT","ENTER","SPACE","disabled","disableCheckbox","onNodeCheck","onNodeSelect","atomic","forceState","destroyed","needSync","allPassed","newState","name","scroll","value","componentDidMount","onUpdated","componentDidUpdate","_this$props11","_this$props11$itemScr","componentWillUnmount","render","_this$state14","_this$props12","prefixCls","className","style","showLine","focusable","_this$props12$tabInde","tabIndex","showIcon","icon","switcherIcon","draggable","motion","filterTreeNode","height","itemHeight","virtual","titleRender","dropIndicatorRender","onContextMenu","onScroll","rootClassName","rootStyle","domProps","aria","draggableConfig","nodeDraggable","createElement","Provider","onNodeClick","onNodeDoubleClick","onNodeMouseEnter","onNodeMouseLeave","onNodeContextMenu","onNodeDragStart","onNodeDragEnter","onNodeDragOver","onNodeDragLeave","onNodeDrop","role","ref","dragging","onListChangeStart","onListChangeEnd","getDerivedStateFromProps","entitiesMap","process","env","NODE_ENV","autoExpandParent","defaultExpandParent","defaultExpandAll","cloneKeyEntities","defaultExpandedKeys","defaultSelectedKeys","checkedKeyEntity","defaultCheckedKeys","_checkedKeyEntity","_checkedKeyEntity$che","_checkedKeyEntity$hal","conductKeys","Component"],"sources":["/var/www/gavt/node_modules/rc-tree/es/Tree.js"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _typeof from \"@babel/runtime/helpers/esm/typeof\";\nimport _objectSpread from \"@babel/runtime/helpers/esm/objectSpread2\";\nimport _toConsumableArray from \"@babel/runtime/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime/helpers/esm/createClass\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime/helpers/esm/inherits\";\nimport _createSuper from \"@babel/runtime/helpers/esm/createSuper\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\n// TODO: https://www.w3.org/TR/2017/NOTE-wai-aria-practices-1.1-20171214/examples/treeview/treeview-2/treeview-2a.html\n// Fully accessibility support\n\nimport classNames from 'classnames';\nimport KeyCode from \"rc-util/es/KeyCode\";\nimport pickAttrs from \"rc-util/es/pickAttrs\";\nimport warning from \"rc-util/es/warning\";\nimport * as React from 'react';\nimport { TreeContext } from \"./contextTypes\";\nimport DropIndicator from \"./DropIndicator\";\nimport NodeList, { MotionEntity, MOTION_KEY } from \"./NodeList\";\nimport TreeNode from \"./TreeNode\";\nimport { arrAdd, arrDel, calcDropPosition, calcSelectedKeys, conductExpandParent, getDragChildrenKeys, parseCheckedKeys, posToArr } from \"./util\";\nimport { conductCheck } from \"./utils/conductUtil\";\nimport getEntity from \"./utils/keyUtil\";\nimport { convertDataToEntities, convertNodePropsToEventData, convertTreeToData, fillFieldNames, flattenTreeData, getTreeNodeProps, warningWithoutKey } from \"./utils/treeUtil\";\nvar MAX_RETRY_TIMES = 10;\nvar Tree = /*#__PURE__*/function (_React$Component) {\n  _inherits(Tree, _React$Component);\n  var _super = _createSuper(Tree);\n  function Tree() {\n    var _this;\n    _classCallCheck(this, Tree);\n    for (var _len = arguments.length, _args = new Array(_len), _key = 0; _key < _len; _key++) {\n      _args[_key] = arguments[_key];\n    }\n    _this = _super.call.apply(_super, [this].concat(_args));\n    _defineProperty(_assertThisInitialized(_this), \"destroyed\", false);\n    _defineProperty(_assertThisInitialized(_this), \"delayedDragEnterLogic\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"loadingRetryTimes\", {});\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      keyEntities: {},\n      indent: null,\n      selectedKeys: [],\n      checkedKeys: [],\n      halfCheckedKeys: [],\n      loadedKeys: [],\n      loadingKeys: [],\n      expandedKeys: [],\n      draggingNodeKey: null,\n      dragChildrenKeys: [],\n      // dropTargetKey is the key of abstract-drop-node\n      // the abstract-drop-node is the real drop node when drag and drop\n      // not the DOM drag over node\n      dropTargetKey: null,\n      dropPosition: null,\n      // the drop position of abstract-drop-node, inside 0, top -1, bottom 1\n      dropContainerKey: null,\n      // the container key of abstract-drop-node if dropPosition is -1 or 1\n      dropLevelOffset: null,\n      // the drop level offset of abstract-drag-over-node\n      dropTargetPos: null,\n      // the pos of abstract-drop-node\n      dropAllowed: true,\n      // if drop to abstract-drop-node is allowed\n      // the abstract-drag-over-node\n      // if mouse is on the bottom of top dom node or no the top of the bottom dom node\n      // abstract-drag-over-node is the top node\n      dragOverNodeKey: null,\n      treeData: [],\n      flattenNodes: [],\n      focused: false,\n      activeKey: null,\n      listChanging: false,\n      prevProps: null,\n      fieldNames: fillFieldNames()\n    });\n    _defineProperty(_assertThisInitialized(_this), \"dragStartMousePosition\", null);\n    _defineProperty(_assertThisInitialized(_this), \"dragNode\", void 0);\n    _defineProperty(_assertThisInitialized(_this), \"currentMouseOverDroppableNodeKey\", null);\n    _defineProperty(_assertThisInitialized(_this), \"listRef\", /*#__PURE__*/React.createRef());\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragStart\", function (event, node) {\n      var _this$state = _this.state,\n        expandedKeys = _this$state.expandedKeys,\n        keyEntities = _this$state.keyEntities;\n      var onDragStart = _this.props.onDragStart;\n      var eventKey = node.props.eventKey;\n      _this.dragNode = node;\n      _this.dragStartMousePosition = {\n        x: event.clientX,\n        y: event.clientY\n      };\n      var newExpandedKeys = arrDel(expandedKeys, eventKey);\n      _this.setState({\n        draggingNodeKey: eventKey,\n        dragChildrenKeys: getDragChildrenKeys(eventKey, keyEntities),\n        indent: _this.listRef.current.getIndentWidth()\n      });\n      _this.setExpandedKeys(newExpandedKeys);\n      window.addEventListener('dragend', _this.onWindowDragEnd);\n      onDragStart === null || onDragStart === void 0 || onDragStart({\n        event: event,\n        node: convertNodePropsToEventData(node.props)\n      });\n    });\n    /**\n     * [Legacy] Select handler is smaller than node,\n     * so that this will trigger when drag enter node or select handler.\n     * This is a little tricky if customize css without padding.\n     * Better for use mouse move event to refresh drag state.\n     * But let's just keep it to avoid event trigger logic change.\n     */\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragEnter\", function (event, node) {\n      var _this$state2 = _this.state,\n        expandedKeys = _this$state2.expandedKeys,\n        keyEntities = _this$state2.keyEntities,\n        dragChildrenKeys = _this$state2.dragChildrenKeys,\n        flattenNodes = _this$state2.flattenNodes,\n        indent = _this$state2.indent;\n      var _this$props = _this.props,\n        onDragEnter = _this$props.onDragEnter,\n        onExpand = _this$props.onExpand,\n        allowDrop = _this$props.allowDrop,\n        direction = _this$props.direction;\n      var _node$props = node.props,\n        pos = _node$props.pos,\n        eventKey = _node$props.eventKey;\n      var _assertThisInitialize = _assertThisInitialized(_this),\n        dragNode = _assertThisInitialize.dragNode;\n\n      // record the key of node which is latest entered, used in dragleave event.\n      if (_this.currentMouseOverDroppableNodeKey !== eventKey) {\n        _this.currentMouseOverDroppableNodeKey = eventKey;\n      }\n      if (!dragNode) {\n        _this.resetDragState();\n        return;\n      }\n      var _calcDropPosition = calcDropPosition(event, dragNode, node, indent, _this.dragStartMousePosition, allowDrop, flattenNodes, keyEntities, expandedKeys, direction),\n        dropPosition = _calcDropPosition.dropPosition,\n        dropLevelOffset = _calcDropPosition.dropLevelOffset,\n        dropTargetKey = _calcDropPosition.dropTargetKey,\n        dropContainerKey = _calcDropPosition.dropContainerKey,\n        dropTargetPos = _calcDropPosition.dropTargetPos,\n        dropAllowed = _calcDropPosition.dropAllowed,\n        dragOverNodeKey = _calcDropPosition.dragOverNodeKey;\n      if (\n      // don't allow drop inside its children\n      dragChildrenKeys.indexOf(dropTargetKey) !== -1 ||\n      // don't allow drop when drop is not allowed caculated by calcDropPosition\n      !dropAllowed) {\n        _this.resetDragState();\n        return;\n      }\n\n      // Side effect for delay drag\n      if (!_this.delayedDragEnterLogic) {\n        _this.delayedDragEnterLogic = {};\n      }\n      Object.keys(_this.delayedDragEnterLogic).forEach(function (key) {\n        clearTimeout(_this.delayedDragEnterLogic[key]);\n      });\n      if (dragNode.props.eventKey !== node.props.eventKey) {\n        // hoist expand logic here\n        // since if logic is on the bottom\n        // it will be blocked by abstract dragover node check\n        //   => if you dragenter from top, you mouse will still be consider as in the top node\n        event.persist();\n        _this.delayedDragEnterLogic[pos] = window.setTimeout(function () {\n          if (_this.state.draggingNodeKey === null) return;\n          var newExpandedKeys = _toConsumableArray(expandedKeys);\n          var entity = getEntity(keyEntities, node.props.eventKey);\n          if (entity && (entity.children || []).length) {\n            newExpandedKeys = arrAdd(expandedKeys, node.props.eventKey);\n          }\n          if (!('expandedKeys' in _this.props)) {\n            _this.setExpandedKeys(newExpandedKeys);\n          }\n          onExpand === null || onExpand === void 0 || onExpand(newExpandedKeys, {\n            node: convertNodePropsToEventData(node.props),\n            expanded: true,\n            nativeEvent: event.nativeEvent\n          });\n        }, 800);\n      }\n\n      // Skip if drag node is self\n      if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n        _this.resetDragState();\n        return;\n      }\n\n      // Update drag over node and drag state\n      _this.setState({\n        dragOverNodeKey: dragOverNodeKey,\n        dropPosition: dropPosition,\n        dropLevelOffset: dropLevelOffset,\n        dropTargetKey: dropTargetKey,\n        dropContainerKey: dropContainerKey,\n        dropTargetPos: dropTargetPos,\n        dropAllowed: dropAllowed\n      });\n      onDragEnter === null || onDragEnter === void 0 || onDragEnter({\n        event: event,\n        node: convertNodePropsToEventData(node.props),\n        expandedKeys: expandedKeys\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragOver\", function (event, node) {\n      var _this$state3 = _this.state,\n        dragChildrenKeys = _this$state3.dragChildrenKeys,\n        flattenNodes = _this$state3.flattenNodes,\n        keyEntities = _this$state3.keyEntities,\n        expandedKeys = _this$state3.expandedKeys,\n        indent = _this$state3.indent;\n      var _this$props2 = _this.props,\n        onDragOver = _this$props2.onDragOver,\n        allowDrop = _this$props2.allowDrop,\n        direction = _this$props2.direction;\n      var _assertThisInitialize2 = _assertThisInitialized(_this),\n        dragNode = _assertThisInitialize2.dragNode;\n      if (!dragNode) {\n        return;\n      }\n      var _calcDropPosition2 = calcDropPosition(event, dragNode, node, indent, _this.dragStartMousePosition, allowDrop, flattenNodes, keyEntities, expandedKeys, direction),\n        dropPosition = _calcDropPosition2.dropPosition,\n        dropLevelOffset = _calcDropPosition2.dropLevelOffset,\n        dropTargetKey = _calcDropPosition2.dropTargetKey,\n        dropContainerKey = _calcDropPosition2.dropContainerKey,\n        dropAllowed = _calcDropPosition2.dropAllowed,\n        dropTargetPos = _calcDropPosition2.dropTargetPos,\n        dragOverNodeKey = _calcDropPosition2.dragOverNodeKey;\n      if (dragChildrenKeys.indexOf(dropTargetKey) !== -1 || !dropAllowed) {\n        // don't allow drop inside its children\n        // don't allow drop when drop is not allowed calculated by calcDropPosition\n        return;\n      }\n\n      // Update drag position\n\n      if (dragNode.props.eventKey === dropTargetKey && dropLevelOffset === 0) {\n        if (!(_this.state.dropPosition === null && _this.state.dropLevelOffset === null && _this.state.dropTargetKey === null && _this.state.dropContainerKey === null && _this.state.dropTargetPos === null && _this.state.dropAllowed === false && _this.state.dragOverNodeKey === null)) {\n          _this.resetDragState();\n        }\n      } else if (!(dropPosition === _this.state.dropPosition && dropLevelOffset === _this.state.dropLevelOffset && dropTargetKey === _this.state.dropTargetKey && dropContainerKey === _this.state.dropContainerKey && dropTargetPos === _this.state.dropTargetPos && dropAllowed === _this.state.dropAllowed && dragOverNodeKey === _this.state.dragOverNodeKey)) {\n        _this.setState({\n          dropPosition: dropPosition,\n          dropLevelOffset: dropLevelOffset,\n          dropTargetKey: dropTargetKey,\n          dropContainerKey: dropContainerKey,\n          dropTargetPos: dropTargetPos,\n          dropAllowed: dropAllowed,\n          dragOverNodeKey: dragOverNodeKey\n        });\n      }\n      onDragOver === null || onDragOver === void 0 || onDragOver({\n        event: event,\n        node: convertNodePropsToEventData(node.props)\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragLeave\", function (event, node) {\n      // if it is outside the droppable area\n      // currentMouseOverDroppableNodeKey will be updated in dragenter event when into another droppable receiver.\n      if (_this.currentMouseOverDroppableNodeKey === node.props.eventKey && !event.currentTarget.contains(event.relatedTarget)) {\n        _this.resetDragState();\n        _this.currentMouseOverDroppableNodeKey = null;\n      }\n      var onDragLeave = _this.props.onDragLeave;\n      onDragLeave === null || onDragLeave === void 0 || onDragLeave({\n        event: event,\n        node: convertNodePropsToEventData(node.props)\n      });\n    });\n    // since stopPropagation() is called in treeNode\n    // if onWindowDrag is called, whice means state is keeped, drag state should be cleared\n    _defineProperty(_assertThisInitialized(_this), \"onWindowDragEnd\", function (event) {\n      _this.onNodeDragEnd(event, null, true);\n      window.removeEventListener('dragend', _this.onWindowDragEnd);\n    });\n    // if onNodeDragEnd is called, onWindowDragEnd won't be called since stopPropagation() is called\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDragEnd\", function (event, node) {\n      var onDragEnd = _this.props.onDragEnd;\n      _this.setState({\n        dragOverNodeKey: null\n      });\n      _this.cleanDragState();\n      onDragEnd === null || onDragEnd === void 0 || onDragEnd({\n        event: event,\n        node: convertNodePropsToEventData(node.props)\n      });\n      _this.dragNode = null;\n      window.removeEventListener('dragend', _this.onWindowDragEnd);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDrop\", function (event, node) {\n      var _this$getActiveItem;\n      var outsideTree = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n      var _this$state4 = _this.state,\n        dragChildrenKeys = _this$state4.dragChildrenKeys,\n        dropPosition = _this$state4.dropPosition,\n        dropTargetKey = _this$state4.dropTargetKey,\n        dropTargetPos = _this$state4.dropTargetPos,\n        dropAllowed = _this$state4.dropAllowed;\n      if (!dropAllowed) return;\n      var onDrop = _this.props.onDrop;\n      _this.setState({\n        dragOverNodeKey: null\n      });\n      _this.cleanDragState();\n      if (dropTargetKey === null) return;\n      var abstractDropNodeProps = _objectSpread(_objectSpread({}, getTreeNodeProps(dropTargetKey, _this.getTreeNodeRequiredProps())), {}, {\n        active: ((_this$getActiveItem = _this.getActiveItem()) === null || _this$getActiveItem === void 0 ? void 0 : _this$getActiveItem.key) === dropTargetKey,\n        data: getEntity(_this.state.keyEntities, dropTargetKey).node\n      });\n      var dropToChild = dragChildrenKeys.indexOf(dropTargetKey) !== -1;\n      warning(!dropToChild, \"Can not drop to dragNode's children node. This is a bug of rc-tree. Please report an issue.\");\n      var posArr = posToArr(dropTargetPos);\n      var dropResult = {\n        event: event,\n        node: convertNodePropsToEventData(abstractDropNodeProps),\n        dragNode: _this.dragNode ? convertNodePropsToEventData(_this.dragNode.props) : null,\n        dragNodesKeys: [_this.dragNode.props.eventKey].concat(dragChildrenKeys),\n        dropToGap: dropPosition !== 0,\n        dropPosition: dropPosition + Number(posArr[posArr.length - 1])\n      };\n      if (!outsideTree) {\n        onDrop === null || onDrop === void 0 || onDrop(dropResult);\n      }\n      _this.dragNode = null;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"cleanDragState\", function () {\n      var draggingNodeKey = _this.state.draggingNodeKey;\n      if (draggingNodeKey !== null) {\n        _this.setState({\n          draggingNodeKey: null,\n          dropPosition: null,\n          dropContainerKey: null,\n          dropTargetKey: null,\n          dropLevelOffset: null,\n          dropAllowed: true,\n          dragOverNodeKey: null\n        });\n      }\n      _this.dragStartMousePosition = null;\n      _this.currentMouseOverDroppableNodeKey = null;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"triggerExpandActionExpand\", function (e, treeNode) {\n      var _this$state5 = _this.state,\n        expandedKeys = _this$state5.expandedKeys,\n        flattenNodes = _this$state5.flattenNodes;\n      var expanded = treeNode.expanded,\n        key = treeNode.key,\n        isLeaf = treeNode.isLeaf;\n      if (isLeaf || e.shiftKey || e.metaKey || e.ctrlKey) {\n        return;\n      }\n      var node = flattenNodes.filter(function (nodeItem) {\n        return nodeItem.key === key;\n      })[0];\n      var eventNode = convertNodePropsToEventData(_objectSpread(_objectSpread({}, getTreeNodeProps(key, _this.getTreeNodeRequiredProps())), {}, {\n        data: node.data\n      }));\n      _this.setExpandedKeys(expanded ? arrDel(expandedKeys, key) : arrAdd(expandedKeys, key));\n      _this.onNodeExpand(e, eventNode);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeClick\", function (e, treeNode) {\n      var _this$props3 = _this.props,\n        onClick = _this$props3.onClick,\n        expandAction = _this$props3.expandAction;\n      if (expandAction === 'click') {\n        _this.triggerExpandActionExpand(e, treeNode);\n      }\n      onClick === null || onClick === void 0 || onClick(e, treeNode);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeDoubleClick\", function (e, treeNode) {\n      var _this$props4 = _this.props,\n        onDoubleClick = _this$props4.onDoubleClick,\n        expandAction = _this$props4.expandAction;\n      if (expandAction === 'doubleClick') {\n        _this.triggerExpandActionExpand(e, treeNode);\n      }\n      onDoubleClick === null || onDoubleClick === void 0 || onDoubleClick(e, treeNode);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeSelect\", function (e, treeNode) {\n      var selectedKeys = _this.state.selectedKeys;\n      var _this$state6 = _this.state,\n        keyEntities = _this$state6.keyEntities,\n        fieldNames = _this$state6.fieldNames;\n      var _this$props5 = _this.props,\n        onSelect = _this$props5.onSelect,\n        multiple = _this$props5.multiple;\n      var selected = treeNode.selected;\n      var key = treeNode[fieldNames.key];\n      var targetSelected = !selected;\n\n      // Update selected keys\n      if (!targetSelected) {\n        selectedKeys = arrDel(selectedKeys, key);\n      } else if (!multiple) {\n        selectedKeys = [key];\n      } else {\n        selectedKeys = arrAdd(selectedKeys, key);\n      }\n\n      // [Legacy] Not found related usage in doc or upper libs\n      var selectedNodes = selectedKeys.map(function (selectedKey) {\n        var entity = getEntity(keyEntities, selectedKey);\n        if (!entity) return null;\n        return entity.node;\n      }).filter(function (node) {\n        return node;\n      });\n      _this.setUncontrolledState({\n        selectedKeys: selectedKeys\n      });\n      onSelect === null || onSelect === void 0 || onSelect(selectedKeys, {\n        event: 'select',\n        selected: targetSelected,\n        node: treeNode,\n        selectedNodes: selectedNodes,\n        nativeEvent: e.nativeEvent\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeCheck\", function (e, treeNode, checked) {\n      var _this$state7 = _this.state,\n        keyEntities = _this$state7.keyEntities,\n        oriCheckedKeys = _this$state7.checkedKeys,\n        oriHalfCheckedKeys = _this$state7.halfCheckedKeys;\n      var _this$props6 = _this.props,\n        checkStrictly = _this$props6.checkStrictly,\n        onCheck = _this$props6.onCheck;\n      var key = treeNode.key;\n\n      // Prepare trigger arguments\n      var checkedObj;\n      var eventObj = {\n        event: 'check',\n        node: treeNode,\n        checked: checked,\n        nativeEvent: e.nativeEvent\n      };\n      if (checkStrictly) {\n        var checkedKeys = checked ? arrAdd(oriCheckedKeys, key) : arrDel(oriCheckedKeys, key);\n        var halfCheckedKeys = arrDel(oriHalfCheckedKeys, key);\n        checkedObj = {\n          checked: checkedKeys,\n          halfChecked: halfCheckedKeys\n        };\n        eventObj.checkedNodes = checkedKeys.map(function (checkedKey) {\n          return getEntity(keyEntities, checkedKey);\n        }).filter(function (entity) {\n          return entity;\n        }).map(function (entity) {\n          return entity.node;\n        });\n        _this.setUncontrolledState({\n          checkedKeys: checkedKeys\n        });\n      } else {\n        // Always fill first\n        var _conductCheck = conductCheck([].concat(_toConsumableArray(oriCheckedKeys), [key]), true, keyEntities),\n          _checkedKeys = _conductCheck.checkedKeys,\n          _halfCheckedKeys = _conductCheck.halfCheckedKeys;\n\n        // If remove, we do it again to correction\n        if (!checked) {\n          var keySet = new Set(_checkedKeys);\n          keySet.delete(key);\n          var _conductCheck2 = conductCheck(Array.from(keySet), {\n            checked: false,\n            halfCheckedKeys: _halfCheckedKeys\n          }, keyEntities);\n          _checkedKeys = _conductCheck2.checkedKeys;\n          _halfCheckedKeys = _conductCheck2.halfCheckedKeys;\n        }\n        checkedObj = _checkedKeys;\n\n        // [Legacy] This is used for `rc-tree-select`\n        eventObj.checkedNodes = [];\n        eventObj.checkedNodesPositions = [];\n        eventObj.halfCheckedKeys = _halfCheckedKeys;\n        _checkedKeys.forEach(function (checkedKey) {\n          var entity = getEntity(keyEntities, checkedKey);\n          if (!entity) return;\n          var node = entity.node,\n            pos = entity.pos;\n          eventObj.checkedNodes.push(node);\n          eventObj.checkedNodesPositions.push({\n            node: node,\n            pos: pos\n          });\n        });\n        _this.setUncontrolledState({\n          checkedKeys: _checkedKeys\n        }, false, {\n          halfCheckedKeys: _halfCheckedKeys\n        });\n      }\n      onCheck === null || onCheck === void 0 || onCheck(checkedObj, eventObj);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeLoad\", function (treeNode) {\n      var key = treeNode.key;\n      var loadPromise = new Promise(function (resolve, reject) {\n        // We need to get the latest state of loading/loaded keys\n        _this.setState(function (_ref) {\n          var _ref$loadedKeys = _ref.loadedKeys,\n            loadedKeys = _ref$loadedKeys === void 0 ? [] : _ref$loadedKeys,\n            _ref$loadingKeys = _ref.loadingKeys,\n            loadingKeys = _ref$loadingKeys === void 0 ? [] : _ref$loadingKeys;\n          var _this$props7 = _this.props,\n            loadData = _this$props7.loadData,\n            onLoad = _this$props7.onLoad;\n          if (!loadData || loadedKeys.indexOf(key) !== -1 || loadingKeys.indexOf(key) !== -1) {\n            return null;\n          }\n\n          // Process load data\n          var promise = loadData(treeNode);\n          promise.then(function () {\n            var currentLoadedKeys = _this.state.loadedKeys;\n            var newLoadedKeys = arrAdd(currentLoadedKeys, key);\n\n            // onLoad should trigger before internal setState to avoid `loadData` trigger twice.\n            // https://github.com/ant-design/ant-design/issues/12464\n            onLoad === null || onLoad === void 0 || onLoad(newLoadedKeys, {\n              event: 'load',\n              node: treeNode\n            });\n            _this.setUncontrolledState({\n              loadedKeys: newLoadedKeys\n            });\n            _this.setState(function (prevState) {\n              return {\n                loadingKeys: arrDel(prevState.loadingKeys, key)\n              };\n            });\n            resolve();\n          }).catch(function (e) {\n            _this.setState(function (prevState) {\n              return {\n                loadingKeys: arrDel(prevState.loadingKeys, key)\n              };\n            });\n\n            // If exceed max retry times, we give up retry\n            _this.loadingRetryTimes[key] = (_this.loadingRetryTimes[key] || 0) + 1;\n            if (_this.loadingRetryTimes[key] >= MAX_RETRY_TIMES) {\n              var currentLoadedKeys = _this.state.loadedKeys;\n              warning(false, 'Retry for `loadData` many times but still failed. No more retry.');\n              _this.setUncontrolledState({\n                loadedKeys: arrAdd(currentLoadedKeys, key)\n              });\n              resolve();\n            }\n            reject(e);\n          });\n          return {\n            loadingKeys: arrAdd(loadingKeys, key)\n          };\n        });\n      });\n\n      // Not care warning if we ignore this\n      loadPromise.catch(function () {});\n      return loadPromise;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeMouseEnter\", function (event, node) {\n      var onMouseEnter = _this.props.onMouseEnter;\n      onMouseEnter === null || onMouseEnter === void 0 || onMouseEnter({\n        event: event,\n        node: node\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeMouseLeave\", function (event, node) {\n      var onMouseLeave = _this.props.onMouseLeave;\n      onMouseLeave === null || onMouseLeave === void 0 || onMouseLeave({\n        event: event,\n        node: node\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeContextMenu\", function (event, node) {\n      var onRightClick = _this.props.onRightClick;\n      if (onRightClick) {\n        event.preventDefault();\n        onRightClick({\n          event: event,\n          node: node\n        });\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onFocus\", function () {\n      var onFocus = _this.props.onFocus;\n      _this.setState({\n        focused: true\n      });\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      onFocus === null || onFocus === void 0 || onFocus.apply(void 0, args);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n      var onBlur = _this.props.onBlur;\n      _this.setState({\n        focused: false\n      });\n      _this.onActiveChange(null);\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n      onBlur === null || onBlur === void 0 || onBlur.apply(void 0, args);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getTreeNodeRequiredProps\", function () {\n      var _this$state8 = _this.state,\n        expandedKeys = _this$state8.expandedKeys,\n        selectedKeys = _this$state8.selectedKeys,\n        loadedKeys = _this$state8.loadedKeys,\n        loadingKeys = _this$state8.loadingKeys,\n        checkedKeys = _this$state8.checkedKeys,\n        halfCheckedKeys = _this$state8.halfCheckedKeys,\n        dragOverNodeKey = _this$state8.dragOverNodeKey,\n        dropPosition = _this$state8.dropPosition,\n        keyEntities = _this$state8.keyEntities;\n      return {\n        expandedKeys: expandedKeys || [],\n        selectedKeys: selectedKeys || [],\n        loadedKeys: loadedKeys || [],\n        loadingKeys: loadingKeys || [],\n        checkedKeys: checkedKeys || [],\n        halfCheckedKeys: halfCheckedKeys || [],\n        dragOverNodeKey: dragOverNodeKey,\n        dropPosition: dropPosition,\n        keyEntities: keyEntities\n      };\n    });\n    // =========================== Expanded ===========================\n    /** Set uncontrolled `expandedKeys`. This will also auto update `flattenNodes`. */\n    _defineProperty(_assertThisInitialized(_this), \"setExpandedKeys\", function (expandedKeys) {\n      var _this$state9 = _this.state,\n        treeData = _this$state9.treeData,\n        fieldNames = _this$state9.fieldNames;\n      var flattenNodes = flattenTreeData(treeData, expandedKeys, fieldNames);\n      _this.setUncontrolledState({\n        expandedKeys: expandedKeys,\n        flattenNodes: flattenNodes\n      }, true);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onNodeExpand\", function (e, treeNode) {\n      var expandedKeys = _this.state.expandedKeys;\n      var _this$state10 = _this.state,\n        listChanging = _this$state10.listChanging,\n        fieldNames = _this$state10.fieldNames;\n      var _this$props8 = _this.props,\n        onExpand = _this$props8.onExpand,\n        loadData = _this$props8.loadData;\n      var expanded = treeNode.expanded;\n      var key = treeNode[fieldNames.key];\n\n      // Do nothing when motion is in progress\n      if (listChanging) {\n        return;\n      }\n\n      // Update selected keys\n      var index = expandedKeys.indexOf(key);\n      var targetExpanded = !expanded;\n      warning(expanded && index !== -1 || !expanded && index === -1, 'Expand state not sync with index check');\n      if (targetExpanded) {\n        expandedKeys = arrAdd(expandedKeys, key);\n      } else {\n        expandedKeys = arrDel(expandedKeys, key);\n      }\n      _this.setExpandedKeys(expandedKeys);\n      onExpand === null || onExpand === void 0 || onExpand(expandedKeys, {\n        node: treeNode,\n        expanded: targetExpanded,\n        nativeEvent: e.nativeEvent\n      });\n\n      // Async Load data\n      if (targetExpanded && loadData) {\n        var loadPromise = _this.onNodeLoad(treeNode);\n        if (loadPromise) {\n          loadPromise.then(function () {\n            // [Legacy] Refresh logic\n            var newFlattenTreeData = flattenTreeData(_this.state.treeData, expandedKeys, fieldNames);\n            _this.setUncontrolledState({\n              flattenNodes: newFlattenTreeData\n            });\n          }).catch(function () {\n            var currentExpandedKeys = _this.state.expandedKeys;\n            var expandedKeysToRestore = arrDel(currentExpandedKeys, key);\n            _this.setExpandedKeys(expandedKeysToRestore);\n          });\n        }\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onListChangeStart\", function () {\n      _this.setUncontrolledState({\n        listChanging: true\n      });\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onListChangeEnd\", function () {\n      setTimeout(function () {\n        _this.setUncontrolledState({\n          listChanging: false\n        });\n      });\n    });\n    // =========================== Keyboard ===========================\n    _defineProperty(_assertThisInitialized(_this), \"onActiveChange\", function (newActiveKey) {\n      var activeKey = _this.state.activeKey;\n      var _this$props9 = _this.props,\n        onActiveChange = _this$props9.onActiveChange,\n        _this$props9$itemScro = _this$props9.itemScrollOffset,\n        itemScrollOffset = _this$props9$itemScro === void 0 ? 0 : _this$props9$itemScro;\n      if (activeKey === newActiveKey) {\n        return;\n      }\n      _this.setState({\n        activeKey: newActiveKey\n      });\n      if (newActiveKey !== null) {\n        _this.scrollTo({\n          key: newActiveKey,\n          offset: itemScrollOffset\n        });\n      }\n      onActiveChange === null || onActiveChange === void 0 || onActiveChange(newActiveKey);\n    });\n    _defineProperty(_assertThisInitialized(_this), \"getActiveItem\", function () {\n      var _this$state11 = _this.state,\n        activeKey = _this$state11.activeKey,\n        flattenNodes = _this$state11.flattenNodes;\n      if (activeKey === null) {\n        return null;\n      }\n      return flattenNodes.find(function (_ref2) {\n        var key = _ref2.key;\n        return key === activeKey;\n      }) || null;\n    });\n    _defineProperty(_assertThisInitialized(_this), \"offsetActiveKey\", function (offset) {\n      var _this$state12 = _this.state,\n        flattenNodes = _this$state12.flattenNodes,\n        activeKey = _this$state12.activeKey;\n      var index = flattenNodes.findIndex(function (_ref3) {\n        var key = _ref3.key;\n        return key === activeKey;\n      });\n\n      // Align with index\n      if (index === -1 && offset < 0) {\n        index = flattenNodes.length;\n      }\n      index = (index + offset + flattenNodes.length) % flattenNodes.length;\n      var item = flattenNodes[index];\n      if (item) {\n        var _key4 = item.key;\n        _this.onActiveChange(_key4);\n      } else {\n        _this.onActiveChange(null);\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"onKeyDown\", function (event) {\n      var _this$state13 = _this.state,\n        activeKey = _this$state13.activeKey,\n        expandedKeys = _this$state13.expandedKeys,\n        checkedKeys = _this$state13.checkedKeys,\n        fieldNames = _this$state13.fieldNames;\n      var _this$props10 = _this.props,\n        onKeyDown = _this$props10.onKeyDown,\n        checkable = _this$props10.checkable,\n        selectable = _this$props10.selectable;\n\n      // >>>>>>>>>> Direction\n      switch (event.which) {\n        case KeyCode.UP:\n          {\n            _this.offsetActiveKey(-1);\n            event.preventDefault();\n            break;\n          }\n        case KeyCode.DOWN:\n          {\n            _this.offsetActiveKey(1);\n            event.preventDefault();\n            break;\n          }\n      }\n\n      // >>>>>>>>>> Expand & Selection\n      var activeItem = _this.getActiveItem();\n      if (activeItem && activeItem.data) {\n        var treeNodeRequiredProps = _this.getTreeNodeRequiredProps();\n        var expandable = activeItem.data.isLeaf === false || !!(activeItem.data[fieldNames.children] || []).length;\n        var eventNode = convertNodePropsToEventData(_objectSpread(_objectSpread({}, getTreeNodeProps(activeKey, treeNodeRequiredProps)), {}, {\n          data: activeItem.data,\n          active: true\n        }));\n        switch (event.which) {\n          // >>> Expand\n          case KeyCode.LEFT:\n            {\n              // Collapse if possible\n              if (expandable && expandedKeys.includes(activeKey)) {\n                _this.onNodeExpand({}, eventNode);\n              } else if (activeItem.parent) {\n                _this.onActiveChange(activeItem.parent.key);\n              }\n              event.preventDefault();\n              break;\n            }\n          case KeyCode.RIGHT:\n            {\n              // Expand if possible\n              if (expandable && !expandedKeys.includes(activeKey)) {\n                _this.onNodeExpand({}, eventNode);\n              } else if (activeItem.children && activeItem.children.length) {\n                _this.onActiveChange(activeItem.children[0].key);\n              }\n              event.preventDefault();\n              break;\n            }\n\n          // Selection\n          case KeyCode.ENTER:\n          case KeyCode.SPACE:\n            {\n              if (checkable && !eventNode.disabled && eventNode.checkable !== false && !eventNode.disableCheckbox) {\n                _this.onNodeCheck({}, eventNode, !checkedKeys.includes(activeKey));\n              } else if (!checkable && selectable && !eventNode.disabled && eventNode.selectable !== false) {\n                _this.onNodeSelect({}, eventNode);\n              }\n              break;\n            }\n        }\n      }\n      onKeyDown === null || onKeyDown === void 0 || onKeyDown(event);\n    });\n    /**\n     * Only update the value which is not in props\n     */\n    _defineProperty(_assertThisInitialized(_this), \"setUncontrolledState\", function (state) {\n      var atomic = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n      var forceState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;\n      if (!_this.destroyed) {\n        var needSync = false;\n        var allPassed = true;\n        var newState = {};\n        Object.keys(state).forEach(function (name) {\n          if (name in _this.props) {\n            allPassed = false;\n            return;\n          }\n          needSync = true;\n          newState[name] = state[name];\n        });\n        if (needSync && (!atomic || allPassed)) {\n          _this.setState(_objectSpread(_objectSpread({}, newState), forceState));\n        }\n      }\n    });\n    _defineProperty(_assertThisInitialized(_this), \"scrollTo\", function (scroll) {\n      _this.listRef.current.scrollTo(scroll);\n    });\n    return _this;\n  }\n  _createClass(Tree, [{\n    key: \"componentDidMount\",\n    value: function componentDidMount() {\n      this.destroyed = false;\n      this.onUpdated();\n    }\n  }, {\n    key: \"componentDidUpdate\",\n    value: function componentDidUpdate() {\n      this.onUpdated();\n    }\n  }, {\n    key: \"onUpdated\",\n    value: function onUpdated() {\n      var _this$props11 = this.props,\n        activeKey = _this$props11.activeKey,\n        _this$props11$itemScr = _this$props11.itemScrollOffset,\n        itemScrollOffset = _this$props11$itemScr === void 0 ? 0 : _this$props11$itemScr;\n      if (activeKey !== undefined && activeKey !== this.state.activeKey) {\n        this.setState({\n          activeKey: activeKey\n        });\n        if (activeKey !== null) {\n          this.scrollTo({\n            key: activeKey,\n            offset: itemScrollOffset\n          });\n        }\n      }\n    }\n  }, {\n    key: \"componentWillUnmount\",\n    value: function componentWillUnmount() {\n      window.removeEventListener('dragend', this.onWindowDragEnd);\n      this.destroyed = true;\n    }\n  }, {\n    key: \"resetDragState\",\n    value: function resetDragState() {\n      this.setState({\n        dragOverNodeKey: null,\n        dropPosition: null,\n        dropLevelOffset: null,\n        dropTargetKey: null,\n        dropContainerKey: null,\n        dropTargetPos: null,\n        dropAllowed: false\n      });\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$state14 = this.state,\n        focused = _this$state14.focused,\n        flattenNodes = _this$state14.flattenNodes,\n        keyEntities = _this$state14.keyEntities,\n        draggingNodeKey = _this$state14.draggingNodeKey,\n        activeKey = _this$state14.activeKey,\n        dropLevelOffset = _this$state14.dropLevelOffset,\n        dropContainerKey = _this$state14.dropContainerKey,\n        dropTargetKey = _this$state14.dropTargetKey,\n        dropPosition = _this$state14.dropPosition,\n        dragOverNodeKey = _this$state14.dragOverNodeKey,\n        indent = _this$state14.indent;\n      var _this$props12 = this.props,\n        prefixCls = _this$props12.prefixCls,\n        className = _this$props12.className,\n        style = _this$props12.style,\n        showLine = _this$props12.showLine,\n        focusable = _this$props12.focusable,\n        _this$props12$tabInde = _this$props12.tabIndex,\n        tabIndex = _this$props12$tabInde === void 0 ? 0 : _this$props12$tabInde,\n        selectable = _this$props12.selectable,\n        showIcon = _this$props12.showIcon,\n        icon = _this$props12.icon,\n        switcherIcon = _this$props12.switcherIcon,\n        draggable = _this$props12.draggable,\n        checkable = _this$props12.checkable,\n        checkStrictly = _this$props12.checkStrictly,\n        disabled = _this$props12.disabled,\n        motion = _this$props12.motion,\n        loadData = _this$props12.loadData,\n        filterTreeNode = _this$props12.filterTreeNode,\n        height = _this$props12.height,\n        itemHeight = _this$props12.itemHeight,\n        virtual = _this$props12.virtual,\n        titleRender = _this$props12.titleRender,\n        dropIndicatorRender = _this$props12.dropIndicatorRender,\n        onContextMenu = _this$props12.onContextMenu,\n        onScroll = _this$props12.onScroll,\n        direction = _this$props12.direction,\n        rootClassName = _this$props12.rootClassName,\n        rootStyle = _this$props12.rootStyle;\n      var domProps = pickAttrs(this.props, {\n        aria: true,\n        data: true\n      });\n\n      // It's better move to hooks but we just simply keep here\n      var draggableConfig;\n      if (draggable) {\n        if (_typeof(draggable) === 'object') {\n          draggableConfig = draggable;\n        } else if (typeof draggable === 'function') {\n          draggableConfig = {\n            nodeDraggable: draggable\n          };\n        } else {\n          draggableConfig = {};\n        }\n      }\n      return /*#__PURE__*/React.createElement(TreeContext.Provider, {\n        value: {\n          prefixCls: prefixCls,\n          selectable: selectable,\n          showIcon: showIcon,\n          icon: icon,\n          switcherIcon: switcherIcon,\n          draggable: draggableConfig,\n          draggingNodeKey: draggingNodeKey,\n          checkable: checkable,\n          checkStrictly: checkStrictly,\n          disabled: disabled,\n          keyEntities: keyEntities,\n          dropLevelOffset: dropLevelOffset,\n          dropContainerKey: dropContainerKey,\n          dropTargetKey: dropTargetKey,\n          dropPosition: dropPosition,\n          dragOverNodeKey: dragOverNodeKey,\n          indent: indent,\n          direction: direction,\n          dropIndicatorRender: dropIndicatorRender,\n          loadData: loadData,\n          filterTreeNode: filterTreeNode,\n          titleRender: titleRender,\n          onNodeClick: this.onNodeClick,\n          onNodeDoubleClick: this.onNodeDoubleClick,\n          onNodeExpand: this.onNodeExpand,\n          onNodeSelect: this.onNodeSelect,\n          onNodeCheck: this.onNodeCheck,\n          onNodeLoad: this.onNodeLoad,\n          onNodeMouseEnter: this.onNodeMouseEnter,\n          onNodeMouseLeave: this.onNodeMouseLeave,\n          onNodeContextMenu: this.onNodeContextMenu,\n          onNodeDragStart: this.onNodeDragStart,\n          onNodeDragEnter: this.onNodeDragEnter,\n          onNodeDragOver: this.onNodeDragOver,\n          onNodeDragLeave: this.onNodeDragLeave,\n          onNodeDragEnd: this.onNodeDragEnd,\n          onNodeDrop: this.onNodeDrop\n        }\n      }, /*#__PURE__*/React.createElement(\"div\", {\n        role: \"tree\",\n        className: classNames(prefixCls, className, rootClassName, _defineProperty(_defineProperty(_defineProperty({}, \"\".concat(prefixCls, \"-show-line\"), showLine), \"\".concat(prefixCls, \"-focused\"), focused), \"\".concat(prefixCls, \"-active-focused\"), activeKey !== null)),\n        style: rootStyle\n      }, /*#__PURE__*/React.createElement(NodeList, _extends({\n        ref: this.listRef,\n        prefixCls: prefixCls,\n        style: style,\n        data: flattenNodes,\n        disabled: disabled,\n        selectable: selectable,\n        checkable: !!checkable,\n        motion: motion,\n        dragging: draggingNodeKey !== null,\n        height: height,\n        itemHeight: itemHeight,\n        virtual: virtual,\n        focusable: focusable,\n        focused: focused,\n        tabIndex: tabIndex,\n        activeItem: this.getActiveItem(),\n        onFocus: this.onFocus,\n        onBlur: this.onBlur,\n        onKeyDown: this.onKeyDown,\n        onActiveChange: this.onActiveChange,\n        onListChangeStart: this.onListChangeStart,\n        onListChangeEnd: this.onListChangeEnd,\n        onContextMenu: onContextMenu,\n        onScroll: onScroll\n      }, this.getTreeNodeRequiredProps(), domProps))));\n    }\n  }], [{\n    key: \"getDerivedStateFromProps\",\n    value: function getDerivedStateFromProps(props, prevState) {\n      var prevProps = prevState.prevProps;\n      var newState = {\n        prevProps: props\n      };\n      function needSync(name) {\n        return !prevProps && name in props || prevProps && prevProps[name] !== props[name];\n      }\n\n      // ================== Tree Node ==================\n      var treeData;\n\n      // fieldNames\n      var fieldNames = prevState.fieldNames;\n      if (needSync('fieldNames')) {\n        fieldNames = fillFieldNames(props.fieldNames);\n        newState.fieldNames = fieldNames;\n      }\n\n      // Check if `treeData` or `children` changed and save into the state.\n      if (needSync('treeData')) {\n        treeData = props.treeData;\n      } else if (needSync('children')) {\n        warning(false, '`children` of Tree is deprecated. Please use `treeData` instead.');\n        treeData = convertTreeToData(props.children);\n      }\n\n      // Save flatten nodes info and convert `treeData` into keyEntities\n      if (treeData) {\n        newState.treeData = treeData;\n        var entitiesMap = convertDataToEntities(treeData, {\n          fieldNames: fieldNames\n        });\n        newState.keyEntities = _objectSpread(_defineProperty({}, MOTION_KEY, MotionEntity), entitiesMap.keyEntities);\n\n        // Warning if treeNode not provide key\n        if (process.env.NODE_ENV !== 'production') {\n          warningWithoutKey(treeData, fieldNames);\n        }\n      }\n      var keyEntities = newState.keyEntities || prevState.keyEntities;\n\n      // ================ expandedKeys =================\n      if (needSync('expandedKeys') || prevProps && needSync('autoExpandParent')) {\n        newState.expandedKeys = props.autoExpandParent || !prevProps && props.defaultExpandParent ? conductExpandParent(props.expandedKeys, keyEntities) : props.expandedKeys;\n      } else if (!prevProps && props.defaultExpandAll) {\n        var cloneKeyEntities = _objectSpread({}, keyEntities);\n        delete cloneKeyEntities[MOTION_KEY];\n        newState.expandedKeys = Object.keys(cloneKeyEntities).map(function (key) {\n          return cloneKeyEntities[key].key;\n        });\n      } else if (!prevProps && props.defaultExpandedKeys) {\n        newState.expandedKeys = props.autoExpandParent || props.defaultExpandParent ? conductExpandParent(props.defaultExpandedKeys, keyEntities) : props.defaultExpandedKeys;\n      }\n      if (!newState.expandedKeys) {\n        delete newState.expandedKeys;\n      }\n\n      // ================ flattenNodes =================\n      if (treeData || newState.expandedKeys) {\n        var flattenNodes = flattenTreeData(treeData || prevState.treeData, newState.expandedKeys || prevState.expandedKeys, fieldNames);\n        newState.flattenNodes = flattenNodes;\n      }\n\n      // ================ selectedKeys =================\n      if (props.selectable) {\n        if (needSync('selectedKeys')) {\n          newState.selectedKeys = calcSelectedKeys(props.selectedKeys, props);\n        } else if (!prevProps && props.defaultSelectedKeys) {\n          newState.selectedKeys = calcSelectedKeys(props.defaultSelectedKeys, props);\n        }\n      }\n\n      // ================= checkedKeys =================\n      if (props.checkable) {\n        var checkedKeyEntity;\n        if (needSync('checkedKeys')) {\n          checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {};\n        } else if (!prevProps && props.defaultCheckedKeys) {\n          checkedKeyEntity = parseCheckedKeys(props.defaultCheckedKeys) || {};\n        } else if (treeData) {\n          // If `treeData` changed, we also need check it\n          checkedKeyEntity = parseCheckedKeys(props.checkedKeys) || {\n            checkedKeys: prevState.checkedKeys,\n            halfCheckedKeys: prevState.halfCheckedKeys\n          };\n        }\n        if (checkedKeyEntity) {\n          var _checkedKeyEntity = checkedKeyEntity,\n            _checkedKeyEntity$che = _checkedKeyEntity.checkedKeys,\n            checkedKeys = _checkedKeyEntity$che === void 0 ? [] : _checkedKeyEntity$che,\n            _checkedKeyEntity$hal = _checkedKeyEntity.halfCheckedKeys,\n            halfCheckedKeys = _checkedKeyEntity$hal === void 0 ? [] : _checkedKeyEntity$hal;\n          if (!props.checkStrictly) {\n            var conductKeys = conductCheck(checkedKeys, true, keyEntities);\n            checkedKeys = conductKeys.checkedKeys;\n            halfCheckedKeys = conductKeys.halfCheckedKeys;\n          }\n          newState.checkedKeys = checkedKeys;\n          newState.halfCheckedKeys = halfCheckedKeys;\n        }\n      }\n\n      // ================= loadedKeys ==================\n      if (needSync('loadedKeys')) {\n        newState.loadedKeys = props.loadedKeys;\n      }\n      return newState;\n    }\n  }]);\n  return Tree;\n}(React.Component);\n_defineProperty(Tree, \"defaultProps\", {\n  prefixCls: 'rc-tree',\n  showLine: false,\n  showIcon: true,\n  selectable: true,\n  multiple: false,\n  checkable: false,\n  disabled: false,\n  checkStrictly: false,\n  draggable: false,\n  defaultExpandParent: true,\n  autoExpandParent: false,\n  defaultExpandAll: false,\n  defaultExpandedKeys: [],\n  defaultCheckedKeys: [],\n  defaultSelectedKeys: [],\n  dropIndicatorRender: DropIndicator,\n  allowDrop: function allowDrop() {\n    return true;\n  },\n  expandAction: false\n});\n_defineProperty(Tree, \"TreeNode\", TreeNode);\nexport default Tree;"],"mappings":"AAAA,OAAOA,QAAQ,MAAM,oCAAoC;AACzD,OAAOC,OAAO,MAAM,mCAAmC;AACvD,OAAOC,aAAa,MAAM,0CAA0C;AACpE,OAAOC,kBAAkB,MAAM,8CAA8C;AAC7E,OAAOC,eAAe,MAAM,2CAA2C;AACvE,OAAOC,YAAY,MAAM,wCAAwC;AACjE,OAAOC,sBAAsB,MAAM,kDAAkD;AACrF,OAAOC,SAAS,MAAM,qCAAqC;AAC3D,OAAOC,YAAY,MAAM,wCAAwC;AACjE,OAAOC,eAAe,MAAM,2CAA2C;AACvE;AACA;;AAEA,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,SAAS,MAAM,sBAAsB;AAC5C,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAASC,WAAW,QAAQ,gBAAgB;AAC5C,OAAOC,aAAa,MAAM,iBAAiB;AAC3C,OAAOC,QAAQ,IAAIC,YAAY,EAAEC,UAAU,QAAQ,YAAY;AAC/D,OAAOC,QAAQ,MAAM,YAAY;AACjC,SAASC,MAAM,EAAEC,MAAM,EAAEC,gBAAgB,EAAEC,gBAAgB,EAAEC,mBAAmB,EAAEC,mBAAmB,EAAEC,gBAAgB,EAAEC,QAAQ,QAAQ,QAAQ;AACjJ,SAASC,YAAY,QAAQ,qBAAqB;AAClD,OAAOC,SAAS,MAAM,iBAAiB;AACvC,SAASC,qBAAqB,EAAEC,2BAA2B,EAAEC,iBAAiB,EAAEC,cAAc,EAAEC,eAAe,EAAEC,gBAAgB,EAAEC,iBAAiB,QAAQ,kBAAkB;AAC9K,IAAIC,eAAe,GAAG,EAAE;AACxB,IAAIC,IAAI,GAAG,aAAa,UAAUC,gBAAgB,EAAE;EAClDjC,SAAS,CAACgC,IAAI,EAAEC,gBAAgB,CAAC;EACjC,IAAIC,MAAM,GAAGjC,YAAY,CAAC+B,IAAI,CAAC;EAC/B,SAASA,IAAIA,CAAA,EAAG;IACd,IAAIG,KAAK;IACTtC,eAAe,CAAC,IAAI,EAAEmC,IAAI,CAAC;IAC3B,KAAK,IAAII,IAAI,GAAGC,SAAS,CAACC,MAAM,EAAEC,KAAK,GAAG,IAAIC,KAAK,CAACJ,IAAI,CAAC,EAAEK,IAAI,GAAG,CAAC,EAAEA,IAAI,GAAGL,IAAI,EAAEK,IAAI,EAAE,EAAE;MACxFF,KAAK,CAACE,IAAI,CAAC,GAAGJ,SAAS,CAACI,IAAI,CAAC;IAC/B;IACAN,KAAK,GAAGD,MAAM,CAACQ,IAAI,CAACC,KAAK,CAACT,MAAM,EAAE,CAAC,IAAI,CAAC,CAACU,MAAM,CAACL,KAAK,CAAC,CAAC;IACvDrC,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC;IAClEjC,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;IAC/EjC,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACvEjC,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,OAAO,EAAE;MACtDU,WAAW,EAAE,CAAC,CAAC;MACfC,MAAM,EAAE,IAAI;MACZC,YAAY,EAAE,EAAE;MAChBC,WAAW,EAAE,EAAE;MACfC,eAAe,EAAE,EAAE;MACnBC,UAAU,EAAE,EAAE;MACdC,WAAW,EAAE,EAAE;MACfC,YAAY,EAAE,EAAE;MAChBC,eAAe,EAAE,IAAI;MACrBC,gBAAgB,EAAE,EAAE;MACpB;MACA;MACA;MACAC,aAAa,EAAE,IAAI;MACnBC,YAAY,EAAE,IAAI;MAClB;MACAC,gBAAgB,EAAE,IAAI;MACtB;MACAC,eAAe,EAAE,IAAI;MACrB;MACAC,aAAa,EAAE,IAAI;MACnB;MACAC,WAAW,EAAE,IAAI;MACjB;MACA;MACA;MACA;MACAC,eAAe,EAAE,IAAI;MACrBC,QAAQ,EAAE,EAAE;MACZC,YAAY,EAAE,EAAE;MAChBC,OAAO,EAAE,KAAK;MACdC,SAAS,EAAE,IAAI;MACfC,YAAY,EAAE,KAAK;MACnBC,SAAS,EAAE,IAAI;MACfC,UAAU,EAAEzC,cAAc,CAAC;IAC7B,CAAC,CAAC;IACFzB,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,wBAAwB,EAAE,IAAI,CAAC;IAC9EjC,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;IAClEjC,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,kCAAkC,EAAE,IAAI,CAAC;IACxFjC,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,SAAS,EAAE,aAAa5B,KAAK,CAAC8D,SAAS,CAAC,CAAC,CAAC;IACzFnE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,iBAAiB,EAAE,UAAUmC,KAAK,EAAEC,IAAI,EAAE;MACvF,IAAIC,WAAW,GAAGrC,KAAK,CAACsC,KAAK;QAC3BrB,YAAY,GAAGoB,WAAW,CAACpB,YAAY;QACvCP,WAAW,GAAG2B,WAAW,CAAC3B,WAAW;MACvC,IAAI6B,WAAW,GAAGvC,KAAK,CAACwC,KAAK,CAACD,WAAW;MACzC,IAAIE,QAAQ,GAAGL,IAAI,CAACI,KAAK,CAACC,QAAQ;MAClCzC,KAAK,CAAC0C,QAAQ,GAAGN,IAAI;MACrBpC,KAAK,CAAC2C,sBAAsB,GAAG;QAC7BC,CAAC,EAAET,KAAK,CAACU,OAAO;QAChBC,CAAC,EAAEX,KAAK,CAACY;MACX,CAAC;MACD,IAAIC,eAAe,GAAGpE,MAAM,CAACqC,YAAY,EAAEwB,QAAQ,CAAC;MACpDzC,KAAK,CAACiD,QAAQ,CAAC;QACb/B,eAAe,EAAEuB,QAAQ;QACzBtB,gBAAgB,EAAEnC,mBAAmB,CAACyD,QAAQ,EAAE/B,WAAW,CAAC;QAC5DC,MAAM,EAAEX,KAAK,CAACkD,OAAO,CAACC,OAAO,CAACC,cAAc,CAAC;MAC/C,CAAC,CAAC;MACFpD,KAAK,CAACqD,eAAe,CAACL,eAAe,CAAC;MACtCM,MAAM,CAACC,gBAAgB,CAAC,SAAS,EAAEvD,KAAK,CAACwD,eAAe,CAAC;MACzDjB,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAK,KAAK,CAAC,IAAIA,WAAW,CAAC;QAC5DJ,KAAK,EAAEA,KAAK;QACZC,IAAI,EAAE9C,2BAA2B,CAAC8C,IAAI,CAACI,KAAK;MAC9C,CAAC,CAAC;IACJ,CAAC,CAAC;IACF;AACJ;AACA;AACA;AACA;AACA;AACA;IACIzE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,iBAAiB,EAAE,UAAUmC,KAAK,EAAEC,IAAI,EAAE;MACvF,IAAIqB,YAAY,GAAGzD,KAAK,CAACsC,KAAK;QAC5BrB,YAAY,GAAGwC,YAAY,CAACxC,YAAY;QACxCP,WAAW,GAAG+C,YAAY,CAAC/C,WAAW;QACtCS,gBAAgB,GAAGsC,YAAY,CAACtC,gBAAgB;QAChDS,YAAY,GAAG6B,YAAY,CAAC7B,YAAY;QACxCjB,MAAM,GAAG8C,YAAY,CAAC9C,MAAM;MAC9B,IAAI+C,WAAW,GAAG1D,KAAK,CAACwC,KAAK;QAC3BmB,WAAW,GAAGD,WAAW,CAACC,WAAW;QACrCC,QAAQ,GAAGF,WAAW,CAACE,QAAQ;QAC/BC,SAAS,GAAGH,WAAW,CAACG,SAAS;QACjCC,SAAS,GAAGJ,WAAW,CAACI,SAAS;MACnC,IAAIC,WAAW,GAAG3B,IAAI,CAACI,KAAK;QAC1BwB,GAAG,GAAGD,WAAW,CAACC,GAAG;QACrBvB,QAAQ,GAAGsB,WAAW,CAACtB,QAAQ;MACjC,IAAIwB,qBAAqB,GAAGrG,sBAAsB,CAACoC,KAAK,CAAC;QACvD0C,QAAQ,GAAGuB,qBAAqB,CAACvB,QAAQ;;MAE3C;MACA,IAAI1C,KAAK,CAACkE,gCAAgC,KAAKzB,QAAQ,EAAE;QACvDzC,KAAK,CAACkE,gCAAgC,GAAGzB,QAAQ;MACnD;MACA,IAAI,CAACC,QAAQ,EAAE;QACb1C,KAAK,CAACmE,cAAc,CAAC,CAAC;QACtB;MACF;MACA,IAAIC,iBAAiB,GAAGvF,gBAAgB,CAACsD,KAAK,EAAEO,QAAQ,EAAEN,IAAI,EAAEzB,MAAM,EAAEX,KAAK,CAAC2C,sBAAsB,EAAEkB,SAAS,EAAEjC,YAAY,EAAElB,WAAW,EAAEO,YAAY,EAAE6C,SAAS,CAAC;QAClKzC,YAAY,GAAG+C,iBAAiB,CAAC/C,YAAY;QAC7CE,eAAe,GAAG6C,iBAAiB,CAAC7C,eAAe;QACnDH,aAAa,GAAGgD,iBAAiB,CAAChD,aAAa;QAC/CE,gBAAgB,GAAG8C,iBAAiB,CAAC9C,gBAAgB;QACrDE,aAAa,GAAG4C,iBAAiB,CAAC5C,aAAa;QAC/CC,WAAW,GAAG2C,iBAAiB,CAAC3C,WAAW;QAC3CC,eAAe,GAAG0C,iBAAiB,CAAC1C,eAAe;MACrD;MACA;MACAP,gBAAgB,CAACkD,OAAO,CAACjD,aAAa,CAAC,KAAK,CAAC,CAAC;MAC9C;MACA,CAACK,WAAW,EAAE;QACZzB,KAAK,CAACmE,cAAc,CAAC,CAAC;QACtB;MACF;;MAEA;MACA,IAAI,CAACnE,KAAK,CAACsE,qBAAqB,EAAE;QAChCtE,KAAK,CAACsE,qBAAqB,GAAG,CAAC,CAAC;MAClC;MACAC,MAAM,CAACC,IAAI,CAACxE,KAAK,CAACsE,qBAAqB,CAAC,CAACG,OAAO,CAAC,UAAUC,GAAG,EAAE;QAC9DC,YAAY,CAAC3E,KAAK,CAACsE,qBAAqB,CAACI,GAAG,CAAC,CAAC;MAChD,CAAC,CAAC;MACF,IAAIhC,QAAQ,CAACF,KAAK,CAACC,QAAQ,KAAKL,IAAI,CAACI,KAAK,CAACC,QAAQ,EAAE;QACnD;QACA;QACA;QACA;QACAN,KAAK,CAACyC,OAAO,CAAC,CAAC;QACf5E,KAAK,CAACsE,qBAAqB,CAACN,GAAG,CAAC,GAAGV,MAAM,CAACuB,UAAU,CAAC,YAAY;UAC/D,IAAI7E,KAAK,CAACsC,KAAK,CAACpB,eAAe,KAAK,IAAI,EAAE;UAC1C,IAAI8B,eAAe,GAAGvF,kBAAkB,CAACwD,YAAY,CAAC;UACtD,IAAI6D,MAAM,GAAG1F,SAAS,CAACsB,WAAW,EAAE0B,IAAI,CAACI,KAAK,CAACC,QAAQ,CAAC;UACxD,IAAIqC,MAAM,IAAI,CAACA,MAAM,CAACC,QAAQ,IAAI,EAAE,EAAE5E,MAAM,EAAE;YAC5C6C,eAAe,GAAGrE,MAAM,CAACsC,YAAY,EAAEmB,IAAI,CAACI,KAAK,CAACC,QAAQ,CAAC;UAC7D;UACA,IAAI,EAAE,cAAc,IAAIzC,KAAK,CAACwC,KAAK,CAAC,EAAE;YACpCxC,KAAK,CAACqD,eAAe,CAACL,eAAe,CAAC;UACxC;UACAY,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,KAAK,CAAC,IAAIA,QAAQ,CAACZ,eAAe,EAAE;YACpEZ,IAAI,EAAE9C,2BAA2B,CAAC8C,IAAI,CAACI,KAAK,CAAC;YAC7CwC,QAAQ,EAAE,IAAI;YACdC,WAAW,EAAE9C,KAAK,CAAC8C;UACrB,CAAC,CAAC;QACJ,CAAC,EAAE,GAAG,CAAC;MACT;;MAEA;MACA,IAAIvC,QAAQ,CAACF,KAAK,CAACC,QAAQ,KAAKrB,aAAa,IAAIG,eAAe,KAAK,CAAC,EAAE;QACtEvB,KAAK,CAACmE,cAAc,CAAC,CAAC;QACtB;MACF;;MAEA;MACAnE,KAAK,CAACiD,QAAQ,CAAC;QACbvB,eAAe,EAAEA,eAAe;QAChCL,YAAY,EAAEA,YAAY;QAC1BE,eAAe,EAAEA,eAAe;QAChCH,aAAa,EAAEA,aAAa;QAC5BE,gBAAgB,EAAEA,gBAAgB;QAClCE,aAAa,EAAEA,aAAa;QAC5BC,WAAW,EAAEA;MACf,CAAC,CAAC;MACFkC,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAK,KAAK,CAAC,IAAIA,WAAW,CAAC;QAC5DxB,KAAK,EAAEA,KAAK;QACZC,IAAI,EAAE9C,2BAA2B,CAAC8C,IAAI,CAACI,KAAK,CAAC;QAC7CvB,YAAY,EAAEA;MAChB,CAAC,CAAC;IACJ,CAAC,CAAC;IACFlD,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,gBAAgB,EAAE,UAAUmC,KAAK,EAAEC,IAAI,EAAE;MACtF,IAAI8C,YAAY,GAAGlF,KAAK,CAACsC,KAAK;QAC5BnB,gBAAgB,GAAG+D,YAAY,CAAC/D,gBAAgB;QAChDS,YAAY,GAAGsD,YAAY,CAACtD,YAAY;QACxClB,WAAW,GAAGwE,YAAY,CAACxE,WAAW;QACtCO,YAAY,GAAGiE,YAAY,CAACjE,YAAY;QACxCN,MAAM,GAAGuE,YAAY,CAACvE,MAAM;MAC9B,IAAIwE,YAAY,GAAGnF,KAAK,CAACwC,KAAK;QAC5B4C,UAAU,GAAGD,YAAY,CAACC,UAAU;QACpCvB,SAAS,GAAGsB,YAAY,CAACtB,SAAS;QAClCC,SAAS,GAAGqB,YAAY,CAACrB,SAAS;MACpC,IAAIuB,sBAAsB,GAAGzH,sBAAsB,CAACoC,KAAK,CAAC;QACxD0C,QAAQ,GAAG2C,sBAAsB,CAAC3C,QAAQ;MAC5C,IAAI,CAACA,QAAQ,EAAE;QACb;MACF;MACA,IAAI4C,kBAAkB,GAAGzG,gBAAgB,CAACsD,KAAK,EAAEO,QAAQ,EAAEN,IAAI,EAAEzB,MAAM,EAAEX,KAAK,CAAC2C,sBAAsB,EAAEkB,SAAS,EAAEjC,YAAY,EAAElB,WAAW,EAAEO,YAAY,EAAE6C,SAAS,CAAC;QACnKzC,YAAY,GAAGiE,kBAAkB,CAACjE,YAAY;QAC9CE,eAAe,GAAG+D,kBAAkB,CAAC/D,eAAe;QACpDH,aAAa,GAAGkE,kBAAkB,CAAClE,aAAa;QAChDE,gBAAgB,GAAGgE,kBAAkB,CAAChE,gBAAgB;QACtDG,WAAW,GAAG6D,kBAAkB,CAAC7D,WAAW;QAC5CD,aAAa,GAAG8D,kBAAkB,CAAC9D,aAAa;QAChDE,eAAe,GAAG4D,kBAAkB,CAAC5D,eAAe;MACtD,IAAIP,gBAAgB,CAACkD,OAAO,CAACjD,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,CAACK,WAAW,EAAE;QAClE;QACA;QACA;MACF;;MAEA;;MAEA,IAAIiB,QAAQ,CAACF,KAAK,CAACC,QAAQ,KAAKrB,aAAa,IAAIG,eAAe,KAAK,CAAC,EAAE;QACtE,IAAI,EAAEvB,KAAK,CAACsC,KAAK,CAACjB,YAAY,KAAK,IAAI,IAAIrB,KAAK,CAACsC,KAAK,CAACf,eAAe,KAAK,IAAI,IAAIvB,KAAK,CAACsC,KAAK,CAAClB,aAAa,KAAK,IAAI,IAAIpB,KAAK,CAACsC,KAAK,CAAChB,gBAAgB,KAAK,IAAI,IAAItB,KAAK,CAACsC,KAAK,CAACd,aAAa,KAAK,IAAI,IAAIxB,KAAK,CAACsC,KAAK,CAACb,WAAW,KAAK,KAAK,IAAIzB,KAAK,CAACsC,KAAK,CAACZ,eAAe,KAAK,IAAI,CAAC,EAAE;UAClR1B,KAAK,CAACmE,cAAc,CAAC,CAAC;QACxB;MACF,CAAC,MAAM,IAAI,EAAE9C,YAAY,KAAKrB,KAAK,CAACsC,KAAK,CAACjB,YAAY,IAAIE,eAAe,KAAKvB,KAAK,CAACsC,KAAK,CAACf,eAAe,IAAIH,aAAa,KAAKpB,KAAK,CAACsC,KAAK,CAAClB,aAAa,IAAIE,gBAAgB,KAAKtB,KAAK,CAACsC,KAAK,CAAChB,gBAAgB,IAAIE,aAAa,KAAKxB,KAAK,CAACsC,KAAK,CAACd,aAAa,IAAIC,WAAW,KAAKzB,KAAK,CAACsC,KAAK,CAACb,WAAW,IAAIC,eAAe,KAAK1B,KAAK,CAACsC,KAAK,CAACZ,eAAe,CAAC,EAAE;QAC3V1B,KAAK,CAACiD,QAAQ,CAAC;UACb5B,YAAY,EAAEA,YAAY;UAC1BE,eAAe,EAAEA,eAAe;UAChCH,aAAa,EAAEA,aAAa;UAC5BE,gBAAgB,EAAEA,gBAAgB;UAClCE,aAAa,EAAEA,aAAa;UAC5BC,WAAW,EAAEA,WAAW;UACxBC,eAAe,EAAEA;QACnB,CAAC,CAAC;MACJ;MACA0D,UAAU,KAAK,IAAI,IAAIA,UAAU,KAAK,KAAK,CAAC,IAAIA,UAAU,CAAC;QACzDjD,KAAK,EAAEA,KAAK;QACZC,IAAI,EAAE9C,2BAA2B,CAAC8C,IAAI,CAACI,KAAK;MAC9C,CAAC,CAAC;IACJ,CAAC,CAAC;IACFzE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,iBAAiB,EAAE,UAAUmC,KAAK,EAAEC,IAAI,EAAE;MACvF;MACA;MACA,IAAIpC,KAAK,CAACkE,gCAAgC,KAAK9B,IAAI,CAACI,KAAK,CAACC,QAAQ,IAAI,CAACN,KAAK,CAACoD,aAAa,CAACC,QAAQ,CAACrD,KAAK,CAACsD,aAAa,CAAC,EAAE;QACxHzF,KAAK,CAACmE,cAAc,CAAC,CAAC;QACtBnE,KAAK,CAACkE,gCAAgC,GAAG,IAAI;MAC/C;MACA,IAAIwB,WAAW,GAAG1F,KAAK,CAACwC,KAAK,CAACkD,WAAW;MACzCA,WAAW,KAAK,IAAI,IAAIA,WAAW,KAAK,KAAK,CAAC,IAAIA,WAAW,CAAC;QAC5DvD,KAAK,EAAEA,KAAK;QACZC,IAAI,EAAE9C,2BAA2B,CAAC8C,IAAI,CAACI,KAAK;MAC9C,CAAC,CAAC;IACJ,CAAC,CAAC;IACF;IACA;IACAzE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,iBAAiB,EAAE,UAAUmC,KAAK,EAAE;MACjFnC,KAAK,CAAC2F,aAAa,CAACxD,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;MACtCmB,MAAM,CAACsC,mBAAmB,CAAC,SAAS,EAAE5F,KAAK,CAACwD,eAAe,CAAC;IAC9D,CAAC,CAAC;IACF;IACAzF,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,eAAe,EAAE,UAAUmC,KAAK,EAAEC,IAAI,EAAE;MACrF,IAAIyD,SAAS,GAAG7F,KAAK,CAACwC,KAAK,CAACqD,SAAS;MACrC7F,KAAK,CAACiD,QAAQ,CAAC;QACbvB,eAAe,EAAE;MACnB,CAAC,CAAC;MACF1B,KAAK,CAAC8F,cAAc,CAAC,CAAC;MACtBD,SAAS,KAAK,IAAI,IAAIA,SAAS,KAAK,KAAK,CAAC,IAAIA,SAAS,CAAC;QACtD1D,KAAK,EAAEA,KAAK;QACZC,IAAI,EAAE9C,2BAA2B,CAAC8C,IAAI,CAACI,KAAK;MAC9C,CAAC,CAAC;MACFxC,KAAK,CAAC0C,QAAQ,GAAG,IAAI;MACrBY,MAAM,CAACsC,mBAAmB,CAAC,SAAS,EAAE5F,KAAK,CAACwD,eAAe,CAAC;IAC9D,CAAC,CAAC;IACFzF,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,YAAY,EAAE,UAAUmC,KAAK,EAAEC,IAAI,EAAE;MAClF,IAAI2D,mBAAmB;MACvB,IAAIC,WAAW,GAAG9F,SAAS,CAACC,MAAM,GAAG,CAAC,IAAID,SAAS,CAAC,CAAC,CAAC,KAAK+F,SAAS,GAAG/F,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;MAC3F,IAAIgG,YAAY,GAAGlG,KAAK,CAACsC,KAAK;QAC5BnB,gBAAgB,GAAG+E,YAAY,CAAC/E,gBAAgB;QAChDE,YAAY,GAAG6E,YAAY,CAAC7E,YAAY;QACxCD,aAAa,GAAG8E,YAAY,CAAC9E,aAAa;QAC1CI,aAAa,GAAG0E,YAAY,CAAC1E,aAAa;QAC1CC,WAAW,GAAGyE,YAAY,CAACzE,WAAW;MACxC,IAAI,CAACA,WAAW,EAAE;MAClB,IAAI0E,MAAM,GAAGnG,KAAK,CAACwC,KAAK,CAAC2D,MAAM;MAC/BnG,KAAK,CAACiD,QAAQ,CAAC;QACbvB,eAAe,EAAE;MACnB,CAAC,CAAC;MACF1B,KAAK,CAAC8F,cAAc,CAAC,CAAC;MACtB,IAAI1E,aAAa,KAAK,IAAI,EAAE;MAC5B,IAAIgF,qBAAqB,GAAG5I,aAAa,CAACA,aAAa,CAAC,CAAC,CAAC,EAAEkC,gBAAgB,CAAC0B,aAAa,EAAEpB,KAAK,CAACqG,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QAClIC,MAAM,EAAE,CAAC,CAACP,mBAAmB,GAAG/F,KAAK,CAACuG,aAAa,CAAC,CAAC,MAAM,IAAI,IAAIR,mBAAmB,KAAK,KAAK,CAAC,GAAG,KAAK,CAAC,GAAGA,mBAAmB,CAACrB,GAAG,MAAMtD,aAAa;QACvJoF,IAAI,EAAEpH,SAAS,CAACY,KAAK,CAACsC,KAAK,CAAC5B,WAAW,EAAEU,aAAa,CAAC,CAACgB;MAC1D,CAAC,CAAC;MACF,IAAIqE,WAAW,GAAGtF,gBAAgB,CAACkD,OAAO,CAACjD,aAAa,CAAC,KAAK,CAAC,CAAC;MAChEjD,OAAO,CAAC,CAACsI,WAAW,EAAE,6FAA6F,CAAC;MACpH,IAAIC,MAAM,GAAGxH,QAAQ,CAACsC,aAAa,CAAC;MACpC,IAAImF,UAAU,GAAG;QACfxE,KAAK,EAAEA,KAAK;QACZC,IAAI,EAAE9C,2BAA2B,CAAC8G,qBAAqB,CAAC;QACxD1D,QAAQ,EAAE1C,KAAK,CAAC0C,QAAQ,GAAGpD,2BAA2B,CAACU,KAAK,CAAC0C,QAAQ,CAACF,KAAK,CAAC,GAAG,IAAI;QACnFoE,aAAa,EAAE,CAAC5G,KAAK,CAAC0C,QAAQ,CAACF,KAAK,CAACC,QAAQ,CAAC,CAAChC,MAAM,CAACU,gBAAgB,CAAC;QACvE0F,SAAS,EAAExF,YAAY,KAAK,CAAC;QAC7BA,YAAY,EAAEA,YAAY,GAAGyF,MAAM,CAACJ,MAAM,CAACA,MAAM,CAACvG,MAAM,GAAG,CAAC,CAAC;MAC/D,CAAC;MACD,IAAI,CAAC6F,WAAW,EAAE;QAChBG,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,KAAK,CAAC,IAAIA,MAAM,CAACQ,UAAU,CAAC;MAC5D;MACA3G,KAAK,CAAC0C,QAAQ,GAAG,IAAI;IACvB,CAAC,CAAC;IACF3E,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,gBAAgB,EAAE,YAAY;MAC3E,IAAIkB,eAAe,GAAGlB,KAAK,CAACsC,KAAK,CAACpB,eAAe;MACjD,IAAIA,eAAe,KAAK,IAAI,EAAE;QAC5BlB,KAAK,CAACiD,QAAQ,CAAC;UACb/B,eAAe,EAAE,IAAI;UACrBG,YAAY,EAAE,IAAI;UAClBC,gBAAgB,EAAE,IAAI;UACtBF,aAAa,EAAE,IAAI;UACnBG,eAAe,EAAE,IAAI;UACrBE,WAAW,EAAE,IAAI;UACjBC,eAAe,EAAE;QACnB,CAAC,CAAC;MACJ;MACA1B,KAAK,CAAC2C,sBAAsB,GAAG,IAAI;MACnC3C,KAAK,CAACkE,gCAAgC,GAAG,IAAI;IAC/C,CAAC,CAAC;IACFnG,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,2BAA2B,EAAE,UAAU+G,CAAC,EAAEC,QAAQ,EAAE;MACjG,IAAIC,YAAY,GAAGjH,KAAK,CAACsC,KAAK;QAC5BrB,YAAY,GAAGgG,YAAY,CAAChG,YAAY;QACxCW,YAAY,GAAGqF,YAAY,CAACrF,YAAY;MAC1C,IAAIoD,QAAQ,GAAGgC,QAAQ,CAAChC,QAAQ;QAC9BN,GAAG,GAAGsC,QAAQ,CAACtC,GAAG;QAClBwC,MAAM,GAAGF,QAAQ,CAACE,MAAM;MAC1B,IAAIA,MAAM,IAAIH,CAAC,CAACI,QAAQ,IAAIJ,CAAC,CAACK,OAAO,IAAIL,CAAC,CAACM,OAAO,EAAE;QAClD;MACF;MACA,IAAIjF,IAAI,GAAGR,YAAY,CAAC0F,MAAM,CAAC,UAAUC,QAAQ,EAAE;QACjD,OAAOA,QAAQ,CAAC7C,GAAG,KAAKA,GAAG;MAC7B,CAAC,CAAC,CAAC,CAAC,CAAC;MACL,IAAI8C,SAAS,GAAGlI,2BAA2B,CAAC9B,aAAa,CAACA,aAAa,CAAC,CAAC,CAAC,EAAEkC,gBAAgB,CAACgF,GAAG,EAAE1E,KAAK,CAACqG,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;QACxIG,IAAI,EAAEpE,IAAI,CAACoE;MACb,CAAC,CAAC,CAAC;MACHxG,KAAK,CAACqD,eAAe,CAAC2B,QAAQ,GAAGpG,MAAM,CAACqC,YAAY,EAAEyD,GAAG,CAAC,GAAG/F,MAAM,CAACsC,YAAY,EAAEyD,GAAG,CAAC,CAAC;MACvF1E,KAAK,CAACyH,YAAY,CAACV,CAAC,EAAES,SAAS,CAAC;IAClC,CAAC,CAAC;IACFzJ,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,aAAa,EAAE,UAAU+G,CAAC,EAAEC,QAAQ,EAAE;MACnF,IAAIU,YAAY,GAAG1H,KAAK,CAACwC,KAAK;QAC5BmF,OAAO,GAAGD,YAAY,CAACC,OAAO;QAC9BC,YAAY,GAAGF,YAAY,CAACE,YAAY;MAC1C,IAAIA,YAAY,KAAK,OAAO,EAAE;QAC5B5H,KAAK,CAAC6H,yBAAyB,CAACd,CAAC,EAAEC,QAAQ,CAAC;MAC9C;MACAW,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,KAAK,CAAC,IAAIA,OAAO,CAACZ,CAAC,EAAEC,QAAQ,CAAC;IAChE,CAAC,CAAC;IACFjJ,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,mBAAmB,EAAE,UAAU+G,CAAC,EAAEC,QAAQ,EAAE;MACzF,IAAIc,YAAY,GAAG9H,KAAK,CAACwC,KAAK;QAC5BuF,aAAa,GAAGD,YAAY,CAACC,aAAa;QAC1CH,YAAY,GAAGE,YAAY,CAACF,YAAY;MAC1C,IAAIA,YAAY,KAAK,aAAa,EAAE;QAClC5H,KAAK,CAAC6H,yBAAyB,CAACd,CAAC,EAAEC,QAAQ,CAAC;MAC9C;MACAe,aAAa,KAAK,IAAI,IAAIA,aAAa,KAAK,KAAK,CAAC,IAAIA,aAAa,CAAChB,CAAC,EAAEC,QAAQ,CAAC;IAClF,CAAC,CAAC;IACFjJ,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,cAAc,EAAE,UAAU+G,CAAC,EAAEC,QAAQ,EAAE;MACpF,IAAIpG,YAAY,GAAGZ,KAAK,CAACsC,KAAK,CAAC1B,YAAY;MAC3C,IAAIoH,YAAY,GAAGhI,KAAK,CAACsC,KAAK;QAC5B5B,WAAW,GAAGsH,YAAY,CAACtH,WAAW;QACtCuB,UAAU,GAAG+F,YAAY,CAAC/F,UAAU;MACtC,IAAIgG,YAAY,GAAGjI,KAAK,CAACwC,KAAK;QAC5B0F,QAAQ,GAAGD,YAAY,CAACC,QAAQ;QAChCC,QAAQ,GAAGF,YAAY,CAACE,QAAQ;MAClC,IAAIC,QAAQ,GAAGpB,QAAQ,CAACoB,QAAQ;MAChC,IAAI1D,GAAG,GAAGsC,QAAQ,CAAC/E,UAAU,CAACyC,GAAG,CAAC;MAClC,IAAI2D,cAAc,GAAG,CAACD,QAAQ;;MAE9B;MACA,IAAI,CAACC,cAAc,EAAE;QACnBzH,YAAY,GAAGhC,MAAM,CAACgC,YAAY,EAAE8D,GAAG,CAAC;MAC1C,CAAC,MAAM,IAAI,CAACyD,QAAQ,EAAE;QACpBvH,YAAY,GAAG,CAAC8D,GAAG,CAAC;MACtB,CAAC,MAAM;QACL9D,YAAY,GAAGjC,MAAM,CAACiC,YAAY,EAAE8D,GAAG,CAAC;MAC1C;;MAEA;MACA,IAAI4D,aAAa,GAAG1H,YAAY,CAAC2H,GAAG,CAAC,UAAUC,WAAW,EAAE;QAC1D,IAAI1D,MAAM,GAAG1F,SAAS,CAACsB,WAAW,EAAE8H,WAAW,CAAC;QAChD,IAAI,CAAC1D,MAAM,EAAE,OAAO,IAAI;QACxB,OAAOA,MAAM,CAAC1C,IAAI;MACpB,CAAC,CAAC,CAACkF,MAAM,CAAC,UAAUlF,IAAI,EAAE;QACxB,OAAOA,IAAI;MACb,CAAC,CAAC;MACFpC,KAAK,CAACyI,oBAAoB,CAAC;QACzB7H,YAAY,EAAEA;MAChB,CAAC,CAAC;MACFsH,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,KAAK,CAAC,IAAIA,QAAQ,CAACtH,YAAY,EAAE;QACjEuB,KAAK,EAAE,QAAQ;QACfiG,QAAQ,EAAEC,cAAc;QACxBjG,IAAI,EAAE4E,QAAQ;QACdsB,aAAa,EAAEA,aAAa;QAC5BrD,WAAW,EAAE8B,CAAC,CAAC9B;MACjB,CAAC,CAAC;IACJ,CAAC,CAAC;IACFlH,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,aAAa,EAAE,UAAU+G,CAAC,EAAEC,QAAQ,EAAE0B,OAAO,EAAE;MAC5F,IAAIC,YAAY,GAAG3I,KAAK,CAACsC,KAAK;QAC5B5B,WAAW,GAAGiI,YAAY,CAACjI,WAAW;QACtCkI,cAAc,GAAGD,YAAY,CAAC9H,WAAW;QACzCgI,kBAAkB,GAAGF,YAAY,CAAC7H,eAAe;MACnD,IAAIgI,YAAY,GAAG9I,KAAK,CAACwC,KAAK;QAC5BuG,aAAa,GAAGD,YAAY,CAACC,aAAa;QAC1CC,OAAO,GAAGF,YAAY,CAACE,OAAO;MAChC,IAAItE,GAAG,GAAGsC,QAAQ,CAACtC,GAAG;;MAEtB;MACA,IAAIuE,UAAU;MACd,IAAIC,QAAQ,GAAG;QACb/G,KAAK,EAAE,OAAO;QACdC,IAAI,EAAE4E,QAAQ;QACd0B,OAAO,EAAEA,OAAO;QAChBzD,WAAW,EAAE8B,CAAC,CAAC9B;MACjB,CAAC;MACD,IAAI8D,aAAa,EAAE;QACjB,IAAIlI,WAAW,GAAG6H,OAAO,GAAG/J,MAAM,CAACiK,cAAc,EAAElE,GAAG,CAAC,GAAG9F,MAAM,CAACgK,cAAc,EAAElE,GAAG,CAAC;QACrF,IAAI5D,eAAe,GAAGlC,MAAM,CAACiK,kBAAkB,EAAEnE,GAAG,CAAC;QACrDuE,UAAU,GAAG;UACXP,OAAO,EAAE7H,WAAW;UACpBsI,WAAW,EAAErI;QACf,CAAC;QACDoI,QAAQ,CAACE,YAAY,GAAGvI,WAAW,CAAC0H,GAAG,CAAC,UAAUc,UAAU,EAAE;UAC5D,OAAOjK,SAAS,CAACsB,WAAW,EAAE2I,UAAU,CAAC;QAC3C,CAAC,CAAC,CAAC/B,MAAM,CAAC,UAAUxC,MAAM,EAAE;UAC1B,OAAOA,MAAM;QACf,CAAC,CAAC,CAACyD,GAAG,CAAC,UAAUzD,MAAM,EAAE;UACvB,OAAOA,MAAM,CAAC1C,IAAI;QACpB,CAAC,CAAC;QACFpC,KAAK,CAACyI,oBAAoB,CAAC;UACzB5H,WAAW,EAAEA;QACf,CAAC,CAAC;MACJ,CAAC,MAAM;QACL;QACA,IAAIyI,aAAa,GAAGnK,YAAY,CAAC,EAAE,CAACsB,MAAM,CAAChD,kBAAkB,CAACmL,cAAc,CAAC,EAAE,CAAClE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAEhE,WAAW,CAAC;UACvG6I,YAAY,GAAGD,aAAa,CAACzI,WAAW;UACxC2I,gBAAgB,GAAGF,aAAa,CAACxI,eAAe;;QAElD;QACA,IAAI,CAAC4H,OAAO,EAAE;UACZ,IAAIe,MAAM,GAAG,IAAIC,GAAG,CAACH,YAAY,CAAC;UAClCE,MAAM,CAACE,MAAM,CAACjF,GAAG,CAAC;UAClB,IAAIkF,cAAc,GAAGzK,YAAY,CAACkB,KAAK,CAACwJ,IAAI,CAACJ,MAAM,CAAC,EAAE;YACpDf,OAAO,EAAE,KAAK;YACd5H,eAAe,EAAE0I;UACnB,CAAC,EAAE9I,WAAW,CAAC;UACf6I,YAAY,GAAGK,cAAc,CAAC/I,WAAW;UACzC2I,gBAAgB,GAAGI,cAAc,CAAC9I,eAAe;QACnD;QACAmI,UAAU,GAAGM,YAAY;;QAEzB;QACAL,QAAQ,CAACE,YAAY,GAAG,EAAE;QAC1BF,QAAQ,CAACY,qBAAqB,GAAG,EAAE;QACnCZ,QAAQ,CAACpI,eAAe,GAAG0I,gBAAgB;QAC3CD,YAAY,CAAC9E,OAAO,CAAC,UAAU4E,UAAU,EAAE;UACzC,IAAIvE,MAAM,GAAG1F,SAAS,CAACsB,WAAW,EAAE2I,UAAU,CAAC;UAC/C,IAAI,CAACvE,MAAM,EAAE;UACb,IAAI1C,IAAI,GAAG0C,MAAM,CAAC1C,IAAI;YACpB4B,GAAG,GAAGc,MAAM,CAACd,GAAG;UAClBkF,QAAQ,CAACE,YAAY,CAACW,IAAI,CAAC3H,IAAI,CAAC;UAChC8G,QAAQ,CAACY,qBAAqB,CAACC,IAAI,CAAC;YAClC3H,IAAI,EAAEA,IAAI;YACV4B,GAAG,EAAEA;UACP,CAAC,CAAC;QACJ,CAAC,CAAC;QACFhE,KAAK,CAACyI,oBAAoB,CAAC;UACzB5H,WAAW,EAAE0I;QACf,CAAC,EAAE,KAAK,EAAE;UACRzI,eAAe,EAAE0I;QACnB,CAAC,CAAC;MACJ;MACAR,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,KAAK,CAAC,IAAIA,OAAO,CAACC,UAAU,EAAEC,QAAQ,CAAC;IACzE,CAAC,CAAC;IACFnL,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,YAAY,EAAE,UAAUgH,QAAQ,EAAE;MAC/E,IAAItC,GAAG,GAAGsC,QAAQ,CAACtC,GAAG;MACtB,IAAIsF,WAAW,GAAG,IAAIC,OAAO,CAAC,UAAUC,OAAO,EAAEC,MAAM,EAAE;QACvD;QACAnK,KAAK,CAACiD,QAAQ,CAAC,UAAUmH,IAAI,EAAE;UAC7B,IAAIC,eAAe,GAAGD,IAAI,CAACrJ,UAAU;YACnCA,UAAU,GAAGsJ,eAAe,KAAK,KAAK,CAAC,GAAG,EAAE,GAAGA,eAAe;YAC9DC,gBAAgB,GAAGF,IAAI,CAACpJ,WAAW;YACnCA,WAAW,GAAGsJ,gBAAgB,KAAK,KAAK,CAAC,GAAG,EAAE,GAAGA,gBAAgB;UACnE,IAAIC,YAAY,GAAGvK,KAAK,CAACwC,KAAK;YAC5BgI,QAAQ,GAAGD,YAAY,CAACC,QAAQ;YAChCC,MAAM,GAAGF,YAAY,CAACE,MAAM;UAC9B,IAAI,CAACD,QAAQ,IAAIzJ,UAAU,CAACsD,OAAO,CAACK,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI1D,WAAW,CAACqD,OAAO,CAACK,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;YAClF,OAAO,IAAI;UACb;;UAEA;UACA,IAAIgG,OAAO,GAAGF,QAAQ,CAACxD,QAAQ,CAAC;UAChC0D,OAAO,CAACC,IAAI,CAAC,YAAY;YACvB,IAAIC,iBAAiB,GAAG5K,KAAK,CAACsC,KAAK,CAACvB,UAAU;YAC9C,IAAI8J,aAAa,GAAGlM,MAAM,CAACiM,iBAAiB,EAAElG,GAAG,CAAC;;YAElD;YACA;YACA+F,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,KAAK,CAAC,IAAIA,MAAM,CAACI,aAAa,EAAE;cAC5D1I,KAAK,EAAE,MAAM;cACbC,IAAI,EAAE4E;YACR,CAAC,CAAC;YACFhH,KAAK,CAACyI,oBAAoB,CAAC;cACzB1H,UAAU,EAAE8J;YACd,CAAC,CAAC;YACF7K,KAAK,CAACiD,QAAQ,CAAC,UAAU6H,SAAS,EAAE;cAClC,OAAO;gBACL9J,WAAW,EAAEpC,MAAM,CAACkM,SAAS,CAAC9J,WAAW,EAAE0D,GAAG;cAChD,CAAC;YACH,CAAC,CAAC;YACFwF,OAAO,CAAC,CAAC;UACX,CAAC,CAAC,CAACa,KAAK,CAAC,UAAUhE,CAAC,EAAE;YACpB/G,KAAK,CAACiD,QAAQ,CAAC,UAAU6H,SAAS,EAAE;cAClC,OAAO;gBACL9J,WAAW,EAAEpC,MAAM,CAACkM,SAAS,CAAC9J,WAAW,EAAE0D,GAAG;cAChD,CAAC;YACH,CAAC,CAAC;;YAEF;YACA1E,KAAK,CAACgL,iBAAiB,CAACtG,GAAG,CAAC,GAAG,CAAC1E,KAAK,CAACgL,iBAAiB,CAACtG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YACtE,IAAI1E,KAAK,CAACgL,iBAAiB,CAACtG,GAAG,CAAC,IAAI9E,eAAe,EAAE;cACnD,IAAIgL,iBAAiB,GAAG5K,KAAK,CAACsC,KAAK,CAACvB,UAAU;cAC9C5C,OAAO,CAAC,KAAK,EAAE,kEAAkE,CAAC;cAClF6B,KAAK,CAACyI,oBAAoB,CAAC;gBACzB1H,UAAU,EAAEpC,MAAM,CAACiM,iBAAiB,EAAElG,GAAG;cAC3C,CAAC,CAAC;cACFwF,OAAO,CAAC,CAAC;YACX;YACAC,MAAM,CAACpD,CAAC,CAAC;UACX,CAAC,CAAC;UACF,OAAO;YACL/F,WAAW,EAAErC,MAAM,CAACqC,WAAW,EAAE0D,GAAG;UACtC,CAAC;QACH,CAAC,CAAC;MACJ,CAAC,CAAC;;MAEF;MACAsF,WAAW,CAACe,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;MACjC,OAAOf,WAAW;IACpB,CAAC,CAAC;IACFjM,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,kBAAkB,EAAE,UAAUmC,KAAK,EAAEC,IAAI,EAAE;MACxF,IAAI6I,YAAY,GAAGjL,KAAK,CAACwC,KAAK,CAACyI,YAAY;MAC3CA,YAAY,KAAK,IAAI,IAAIA,YAAY,KAAK,KAAK,CAAC,IAAIA,YAAY,CAAC;QAC/D9I,KAAK,EAAEA,KAAK;QACZC,IAAI,EAAEA;MACR,CAAC,CAAC;IACJ,CAAC,CAAC;IACFrE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,kBAAkB,EAAE,UAAUmC,KAAK,EAAEC,IAAI,EAAE;MACxF,IAAI8I,YAAY,GAAGlL,KAAK,CAACwC,KAAK,CAAC0I,YAAY;MAC3CA,YAAY,KAAK,IAAI,IAAIA,YAAY,KAAK,KAAK,CAAC,IAAIA,YAAY,CAAC;QAC/D/I,KAAK,EAAEA,KAAK;QACZC,IAAI,EAAEA;MACR,CAAC,CAAC;IACJ,CAAC,CAAC;IACFrE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,mBAAmB,EAAE,UAAUmC,KAAK,EAAEC,IAAI,EAAE;MACzF,IAAI+I,YAAY,GAAGnL,KAAK,CAACwC,KAAK,CAAC2I,YAAY;MAC3C,IAAIA,YAAY,EAAE;QAChBhJ,KAAK,CAACiJ,cAAc,CAAC,CAAC;QACtBD,YAAY,CAAC;UACXhJ,KAAK,EAAEA,KAAK;UACZC,IAAI,EAAEA;QACR,CAAC,CAAC;MACJ;IACF,CAAC,CAAC;IACFrE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,SAAS,EAAE,YAAY;MACpE,IAAIqL,OAAO,GAAGrL,KAAK,CAACwC,KAAK,CAAC6I,OAAO;MACjCrL,KAAK,CAACiD,QAAQ,CAAC;QACbpB,OAAO,EAAE;MACX,CAAC,CAAC;MACF,KAAK,IAAIyJ,KAAK,GAAGpL,SAAS,CAACC,MAAM,EAAEoL,IAAI,GAAG,IAAIlL,KAAK,CAACiL,KAAK,CAAC,EAAEE,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGF,KAAK,EAAEE,KAAK,EAAE,EAAE;QAC7FD,IAAI,CAACC,KAAK,CAAC,GAAGtL,SAAS,CAACsL,KAAK,CAAC;MAChC;MACAH,OAAO,KAAK,IAAI,IAAIA,OAAO,KAAK,KAAK,CAAC,IAAIA,OAAO,CAAC7K,KAAK,CAAC,KAAK,CAAC,EAAE+K,IAAI,CAAC;IACvE,CAAC,CAAC;IACFxN,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,QAAQ,EAAE,YAAY;MACnE,IAAIyL,MAAM,GAAGzL,KAAK,CAACwC,KAAK,CAACiJ,MAAM;MAC/BzL,KAAK,CAACiD,QAAQ,CAAC;QACbpB,OAAO,EAAE;MACX,CAAC,CAAC;MACF7B,KAAK,CAAC0L,cAAc,CAAC,IAAI,CAAC;MAC1B,KAAK,IAAIC,KAAK,GAAGzL,SAAS,CAACC,MAAM,EAAEoL,IAAI,GAAG,IAAIlL,KAAK,CAACsL,KAAK,CAAC,EAAEC,KAAK,GAAG,CAAC,EAAEA,KAAK,GAAGD,KAAK,EAAEC,KAAK,EAAE,EAAE;QAC7FL,IAAI,CAACK,KAAK,CAAC,GAAG1L,SAAS,CAAC0L,KAAK,CAAC;MAChC;MACAH,MAAM,KAAK,IAAI,IAAIA,MAAM,KAAK,KAAK,CAAC,IAAIA,MAAM,CAACjL,KAAK,CAAC,KAAK,CAAC,EAAE+K,IAAI,CAAC;IACpE,CAAC,CAAC;IACFxN,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,0BAA0B,EAAE,YAAY;MACrF,IAAI6L,YAAY,GAAG7L,KAAK,CAACsC,KAAK;QAC5BrB,YAAY,GAAG4K,YAAY,CAAC5K,YAAY;QACxCL,YAAY,GAAGiL,YAAY,CAACjL,YAAY;QACxCG,UAAU,GAAG8K,YAAY,CAAC9K,UAAU;QACpCC,WAAW,GAAG6K,YAAY,CAAC7K,WAAW;QACtCH,WAAW,GAAGgL,YAAY,CAAChL,WAAW;QACtCC,eAAe,GAAG+K,YAAY,CAAC/K,eAAe;QAC9CY,eAAe,GAAGmK,YAAY,CAACnK,eAAe;QAC9CL,YAAY,GAAGwK,YAAY,CAACxK,YAAY;QACxCX,WAAW,GAAGmL,YAAY,CAACnL,WAAW;MACxC,OAAO;QACLO,YAAY,EAAEA,YAAY,IAAI,EAAE;QAChCL,YAAY,EAAEA,YAAY,IAAI,EAAE;QAChCG,UAAU,EAAEA,UAAU,IAAI,EAAE;QAC5BC,WAAW,EAAEA,WAAW,IAAI,EAAE;QAC9BH,WAAW,EAAEA,WAAW,IAAI,EAAE;QAC9BC,eAAe,EAAEA,eAAe,IAAI,EAAE;QACtCY,eAAe,EAAEA,eAAe;QAChCL,YAAY,EAAEA,YAAY;QAC1BX,WAAW,EAAEA;MACf,CAAC;IACH,CAAC,CAAC;IACF;IACA;IACA3C,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,iBAAiB,EAAE,UAAUiB,YAAY,EAAE;MACxF,IAAI6K,YAAY,GAAG9L,KAAK,CAACsC,KAAK;QAC5BX,QAAQ,GAAGmK,YAAY,CAACnK,QAAQ;QAChCM,UAAU,GAAG6J,YAAY,CAAC7J,UAAU;MACtC,IAAIL,YAAY,GAAGnC,eAAe,CAACkC,QAAQ,EAAEV,YAAY,EAAEgB,UAAU,CAAC;MACtEjC,KAAK,CAACyI,oBAAoB,CAAC;QACzBxH,YAAY,EAAEA,YAAY;QAC1BW,YAAY,EAAEA;MAChB,CAAC,EAAE,IAAI,CAAC;IACV,CAAC,CAAC;IACF7D,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,cAAc,EAAE,UAAU+G,CAAC,EAAEC,QAAQ,EAAE;MACpF,IAAI/F,YAAY,GAAGjB,KAAK,CAACsC,KAAK,CAACrB,YAAY;MAC3C,IAAI8K,aAAa,GAAG/L,KAAK,CAACsC,KAAK;QAC7BP,YAAY,GAAGgK,aAAa,CAAChK,YAAY;QACzCE,UAAU,GAAG8J,aAAa,CAAC9J,UAAU;MACvC,IAAI+J,YAAY,GAAGhM,KAAK,CAACwC,KAAK;QAC5BoB,QAAQ,GAAGoI,YAAY,CAACpI,QAAQ;QAChC4G,QAAQ,GAAGwB,YAAY,CAACxB,QAAQ;MAClC,IAAIxF,QAAQ,GAAGgC,QAAQ,CAAChC,QAAQ;MAChC,IAAIN,GAAG,GAAGsC,QAAQ,CAAC/E,UAAU,CAACyC,GAAG,CAAC;;MAElC;MACA,IAAI3C,YAAY,EAAE;QAChB;MACF;;MAEA;MACA,IAAIkK,KAAK,GAAGhL,YAAY,CAACoD,OAAO,CAACK,GAAG,CAAC;MACrC,IAAIwH,cAAc,GAAG,CAAClH,QAAQ;MAC9B7G,OAAO,CAAC6G,QAAQ,IAAIiH,KAAK,KAAK,CAAC,CAAC,IAAI,CAACjH,QAAQ,IAAIiH,KAAK,KAAK,CAAC,CAAC,EAAE,wCAAwC,CAAC;MACxG,IAAIC,cAAc,EAAE;QAClBjL,YAAY,GAAGtC,MAAM,CAACsC,YAAY,EAAEyD,GAAG,CAAC;MAC1C,CAAC,MAAM;QACLzD,YAAY,GAAGrC,MAAM,CAACqC,YAAY,EAAEyD,GAAG,CAAC;MAC1C;MACA1E,KAAK,CAACqD,eAAe,CAACpC,YAAY,CAAC;MACnC2C,QAAQ,KAAK,IAAI,IAAIA,QAAQ,KAAK,KAAK,CAAC,IAAIA,QAAQ,CAAC3C,YAAY,EAAE;QACjEmB,IAAI,EAAE4E,QAAQ;QACdhC,QAAQ,EAAEkH,cAAc;QACxBjH,WAAW,EAAE8B,CAAC,CAAC9B;MACjB,CAAC,CAAC;;MAEF;MACA,IAAIiH,cAAc,IAAI1B,QAAQ,EAAE;QAC9B,IAAIR,WAAW,GAAGhK,KAAK,CAACmM,UAAU,CAACnF,QAAQ,CAAC;QAC5C,IAAIgD,WAAW,EAAE;UACfA,WAAW,CAACW,IAAI,CAAC,YAAY;YAC3B;YACA,IAAIyB,kBAAkB,GAAG3M,eAAe,CAACO,KAAK,CAACsC,KAAK,CAACX,QAAQ,EAAEV,YAAY,EAAEgB,UAAU,CAAC;YACxFjC,KAAK,CAACyI,oBAAoB,CAAC;cACzB7G,YAAY,EAAEwK;YAChB,CAAC,CAAC;UACJ,CAAC,CAAC,CAACrB,KAAK,CAAC,YAAY;YACnB,IAAIsB,mBAAmB,GAAGrM,KAAK,CAACsC,KAAK,CAACrB,YAAY;YAClD,IAAIqL,qBAAqB,GAAG1N,MAAM,CAACyN,mBAAmB,EAAE3H,GAAG,CAAC;YAC5D1E,KAAK,CAACqD,eAAe,CAACiJ,qBAAqB,CAAC;UAC9C,CAAC,CAAC;QACJ;MACF;IACF,CAAC,CAAC;IACFvO,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,mBAAmB,EAAE,YAAY;MAC9EA,KAAK,CAACyI,oBAAoB,CAAC;QACzB1G,YAAY,EAAE;MAChB,CAAC,CAAC;IACJ,CAAC,CAAC;IACFhE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,iBAAiB,EAAE,YAAY;MAC5E6E,UAAU,CAAC,YAAY;QACrB7E,KAAK,CAACyI,oBAAoB,CAAC;UACzB1G,YAAY,EAAE;QAChB,CAAC,CAAC;MACJ,CAAC,CAAC;IACJ,CAAC,CAAC;IACF;IACAhE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,gBAAgB,EAAE,UAAUuM,YAAY,EAAE;MACvF,IAAIzK,SAAS,GAAG9B,KAAK,CAACsC,KAAK,CAACR,SAAS;MACrC,IAAI0K,YAAY,GAAGxM,KAAK,CAACwC,KAAK;QAC5BkJ,cAAc,GAAGc,YAAY,CAACd,cAAc;QAC5Ce,qBAAqB,GAAGD,YAAY,CAACE,gBAAgB;QACrDA,gBAAgB,GAAGD,qBAAqB,KAAK,KAAK,CAAC,GAAG,CAAC,GAAGA,qBAAqB;MACjF,IAAI3K,SAAS,KAAKyK,YAAY,EAAE;QAC9B;MACF;MACAvM,KAAK,CAACiD,QAAQ,CAAC;QACbnB,SAAS,EAAEyK;MACb,CAAC,CAAC;MACF,IAAIA,YAAY,KAAK,IAAI,EAAE;QACzBvM,KAAK,CAAC2M,QAAQ,CAAC;UACbjI,GAAG,EAAE6H,YAAY;UACjBK,MAAM,EAAEF;QACV,CAAC,CAAC;MACJ;MACAhB,cAAc,KAAK,IAAI,IAAIA,cAAc,KAAK,KAAK,CAAC,IAAIA,cAAc,CAACa,YAAY,CAAC;IACtF,CAAC,CAAC;IACFxO,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,eAAe,EAAE,YAAY;MAC1E,IAAI6M,aAAa,GAAG7M,KAAK,CAACsC,KAAK;QAC7BR,SAAS,GAAG+K,aAAa,CAAC/K,SAAS;QACnCF,YAAY,GAAGiL,aAAa,CAACjL,YAAY;MAC3C,IAAIE,SAAS,KAAK,IAAI,EAAE;QACtB,OAAO,IAAI;MACb;MACA,OAAOF,YAAY,CAACkL,IAAI,CAAC,UAAUC,KAAK,EAAE;QACxC,IAAIrI,GAAG,GAAGqI,KAAK,CAACrI,GAAG;QACnB,OAAOA,GAAG,KAAK5C,SAAS;MAC1B,CAAC,CAAC,IAAI,IAAI;IACZ,CAAC,CAAC;IACF/D,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,iBAAiB,EAAE,UAAU4M,MAAM,EAAE;MAClF,IAAII,aAAa,GAAGhN,KAAK,CAACsC,KAAK;QAC7BV,YAAY,GAAGoL,aAAa,CAACpL,YAAY;QACzCE,SAAS,GAAGkL,aAAa,CAAClL,SAAS;MACrC,IAAImK,KAAK,GAAGrK,YAAY,CAACqL,SAAS,CAAC,UAAUC,KAAK,EAAE;QAClD,IAAIxI,GAAG,GAAGwI,KAAK,CAACxI,GAAG;QACnB,OAAOA,GAAG,KAAK5C,SAAS;MAC1B,CAAC,CAAC;;MAEF;MACA,IAAImK,KAAK,KAAK,CAAC,CAAC,IAAIW,MAAM,GAAG,CAAC,EAAE;QAC9BX,KAAK,GAAGrK,YAAY,CAACzB,MAAM;MAC7B;MACA8L,KAAK,GAAG,CAACA,KAAK,GAAGW,MAAM,GAAGhL,YAAY,CAACzB,MAAM,IAAIyB,YAAY,CAACzB,MAAM;MACpE,IAAIgN,IAAI,GAAGvL,YAAY,CAACqK,KAAK,CAAC;MAC9B,IAAIkB,IAAI,EAAE;QACR,IAAIC,KAAK,GAAGD,IAAI,CAACzI,GAAG;QACpB1E,KAAK,CAAC0L,cAAc,CAAC0B,KAAK,CAAC;MAC7B,CAAC,MAAM;QACLpN,KAAK,CAAC0L,cAAc,CAAC,IAAI,CAAC;MAC5B;IACF,CAAC,CAAC;IACF3N,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,WAAW,EAAE,UAAUmC,KAAK,EAAE;MAC3E,IAAIkL,aAAa,GAAGrN,KAAK,CAACsC,KAAK;QAC7BR,SAAS,GAAGuL,aAAa,CAACvL,SAAS;QACnCb,YAAY,GAAGoM,aAAa,CAACpM,YAAY;QACzCJ,WAAW,GAAGwM,aAAa,CAACxM,WAAW;QACvCoB,UAAU,GAAGoL,aAAa,CAACpL,UAAU;MACvC,IAAIqL,aAAa,GAAGtN,KAAK,CAACwC,KAAK;QAC7B+K,SAAS,GAAGD,aAAa,CAACC,SAAS;QACnCC,SAAS,GAAGF,aAAa,CAACE,SAAS;QACnCC,UAAU,GAAGH,aAAa,CAACG,UAAU;;MAEvC;MACA,QAAQtL,KAAK,CAACuL,KAAK;QACjB,KAAKzP,OAAO,CAAC0P,EAAE;UACb;YACE3N,KAAK,CAAC4N,eAAe,CAAC,CAAC,CAAC,CAAC;YACzBzL,KAAK,CAACiJ,cAAc,CAAC,CAAC;YACtB;UACF;QACF,KAAKnN,OAAO,CAAC4P,IAAI;UACf;YACE7N,KAAK,CAAC4N,eAAe,CAAC,CAAC,CAAC;YACxBzL,KAAK,CAACiJ,cAAc,CAAC,CAAC;YACtB;UACF;MACJ;;MAEA;MACA,IAAI0C,UAAU,GAAG9N,KAAK,CAACuG,aAAa,CAAC,CAAC;MACtC,IAAIuH,UAAU,IAAIA,UAAU,CAACtH,IAAI,EAAE;QACjC,IAAIuH,qBAAqB,GAAG/N,KAAK,CAACqG,wBAAwB,CAAC,CAAC;QAC5D,IAAI2H,UAAU,GAAGF,UAAU,CAACtH,IAAI,CAACU,MAAM,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC4G,UAAU,CAACtH,IAAI,CAACvE,UAAU,CAAC8C,QAAQ,CAAC,IAAI,EAAE,EAAE5E,MAAM;QAC1G,IAAIqH,SAAS,GAAGlI,2BAA2B,CAAC9B,aAAa,CAACA,aAAa,CAAC,CAAC,CAAC,EAAEkC,gBAAgB,CAACoC,SAAS,EAAEiM,qBAAqB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;UACnIvH,IAAI,EAAEsH,UAAU,CAACtH,IAAI;UACrBF,MAAM,EAAE;QACV,CAAC,CAAC,CAAC;QACH,QAAQnE,KAAK,CAACuL,KAAK;UACjB;UACA,KAAKzP,OAAO,CAACgQ,IAAI;YACf;cACE;cACA,IAAID,UAAU,IAAI/M,YAAY,CAACiN,QAAQ,CAACpM,SAAS,CAAC,EAAE;gBAClD9B,KAAK,CAACyH,YAAY,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC;cACnC,CAAC,MAAM,IAAIsG,UAAU,CAACK,MAAM,EAAE;gBAC5BnO,KAAK,CAAC0L,cAAc,CAACoC,UAAU,CAACK,MAAM,CAACzJ,GAAG,CAAC;cAC7C;cACAvC,KAAK,CAACiJ,cAAc,CAAC,CAAC;cACtB;YACF;UACF,KAAKnN,OAAO,CAACmQ,KAAK;YAChB;cACE;cACA,IAAIJ,UAAU,IAAI,CAAC/M,YAAY,CAACiN,QAAQ,CAACpM,SAAS,CAAC,EAAE;gBACnD9B,KAAK,CAACyH,YAAY,CAAC,CAAC,CAAC,EAAED,SAAS,CAAC;cACnC,CAAC,MAAM,IAAIsG,UAAU,CAAC/I,QAAQ,IAAI+I,UAAU,CAAC/I,QAAQ,CAAC5E,MAAM,EAAE;gBAC5DH,KAAK,CAAC0L,cAAc,CAACoC,UAAU,CAAC/I,QAAQ,CAAC,CAAC,CAAC,CAACL,GAAG,CAAC;cAClD;cACAvC,KAAK,CAACiJ,cAAc,CAAC,CAAC;cACtB;YACF;;UAEF;UACA,KAAKnN,OAAO,CAACoQ,KAAK;UAClB,KAAKpQ,OAAO,CAACqQ,KAAK;YAChB;cACE,IAAId,SAAS,IAAI,CAAChG,SAAS,CAAC+G,QAAQ,IAAI/G,SAAS,CAACgG,SAAS,KAAK,KAAK,IAAI,CAAChG,SAAS,CAACgH,eAAe,EAAE;gBACnGxO,KAAK,CAACyO,WAAW,CAAC,CAAC,CAAC,EAAEjH,SAAS,EAAE,CAAC3G,WAAW,CAACqN,QAAQ,CAACpM,SAAS,CAAC,CAAC;cACpE,CAAC,MAAM,IAAI,CAAC0L,SAAS,IAAIC,UAAU,IAAI,CAACjG,SAAS,CAAC+G,QAAQ,IAAI/G,SAAS,CAACiG,UAAU,KAAK,KAAK,EAAE;gBAC5FzN,KAAK,CAAC0O,YAAY,CAAC,CAAC,CAAC,EAAElH,SAAS,CAAC;cACnC;cACA;YACF;QACJ;MACF;MACA+F,SAAS,KAAK,IAAI,IAAIA,SAAS,KAAK,KAAK,CAAC,IAAIA,SAAS,CAACpL,KAAK,CAAC;IAChE,CAAC,CAAC;IACF;AACJ;AACA;IACIpE,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,sBAAsB,EAAE,UAAUsC,KAAK,EAAE;MACtF,IAAIqM,MAAM,GAAGzO,SAAS,CAACC,MAAM,GAAG,CAAC,IAAID,SAAS,CAAC,CAAC,CAAC,KAAK+F,SAAS,GAAG/F,SAAS,CAAC,CAAC,CAAC,GAAG,KAAK;MACtF,IAAI0O,UAAU,GAAG1O,SAAS,CAACC,MAAM,GAAG,CAAC,IAAID,SAAS,CAAC,CAAC,CAAC,KAAK+F,SAAS,GAAG/F,SAAS,CAAC,CAAC,CAAC,GAAG,IAAI;MACzF,IAAI,CAACF,KAAK,CAAC6O,SAAS,EAAE;QACpB,IAAIC,QAAQ,GAAG,KAAK;QACpB,IAAIC,SAAS,GAAG,IAAI;QACpB,IAAIC,QAAQ,GAAG,CAAC,CAAC;QACjBzK,MAAM,CAACC,IAAI,CAAClC,KAAK,CAAC,CAACmC,OAAO,CAAC,UAAUwK,IAAI,EAAE;UACzC,IAAIA,IAAI,IAAIjP,KAAK,CAACwC,KAAK,EAAE;YACvBuM,SAAS,GAAG,KAAK;YACjB;UACF;UACAD,QAAQ,GAAG,IAAI;UACfE,QAAQ,CAACC,IAAI,CAAC,GAAG3M,KAAK,CAAC2M,IAAI,CAAC;QAC9B,CAAC,CAAC;QACF,IAAIH,QAAQ,KAAK,CAACH,MAAM,IAAII,SAAS,CAAC,EAAE;UACtC/O,KAAK,CAACiD,QAAQ,CAACzF,aAAa,CAACA,aAAa,CAAC,CAAC,CAAC,EAAEwR,QAAQ,CAAC,EAAEJ,UAAU,CAAC,CAAC;QACxE;MACF;IACF,CAAC,CAAC;IACF7Q,eAAe,CAACH,sBAAsB,CAACoC,KAAK,CAAC,EAAE,UAAU,EAAE,UAAUkP,MAAM,EAAE;MAC3ElP,KAAK,CAACkD,OAAO,CAACC,OAAO,CAACwJ,QAAQ,CAACuC,MAAM,CAAC;IACxC,CAAC,CAAC;IACF,OAAOlP,KAAK;EACd;EACArC,YAAY,CAACkC,IAAI,EAAE,CAAC;IAClB6E,GAAG,EAAE,mBAAmB;IACxByK,KAAK,EAAE,SAASC,iBAAiBA,CAAA,EAAG;MAClC,IAAI,CAACP,SAAS,GAAG,KAAK;MACtB,IAAI,CAACQ,SAAS,CAAC,CAAC;IAClB;EACF,CAAC,EAAE;IACD3K,GAAG,EAAE,oBAAoB;IACzByK,KAAK,EAAE,SAASG,kBAAkBA,CAAA,EAAG;MACnC,IAAI,CAACD,SAAS,CAAC,CAAC;IAClB;EACF,CAAC,EAAE;IACD3K,GAAG,EAAE,WAAW;IAChByK,KAAK,EAAE,SAASE,SAASA,CAAA,EAAG;MAC1B,IAAIE,aAAa,GAAG,IAAI,CAAC/M,KAAK;QAC5BV,SAAS,GAAGyN,aAAa,CAACzN,SAAS;QACnC0N,qBAAqB,GAAGD,aAAa,CAAC7C,gBAAgB;QACtDA,gBAAgB,GAAG8C,qBAAqB,KAAK,KAAK,CAAC,GAAG,CAAC,GAAGA,qBAAqB;MACjF,IAAI1N,SAAS,KAAKmE,SAAS,IAAInE,SAAS,KAAK,IAAI,CAACQ,KAAK,CAACR,SAAS,EAAE;QACjE,IAAI,CAACmB,QAAQ,CAAC;UACZnB,SAAS,EAAEA;QACb,CAAC,CAAC;QACF,IAAIA,SAAS,KAAK,IAAI,EAAE;UACtB,IAAI,CAAC6K,QAAQ,CAAC;YACZjI,GAAG,EAAE5C,SAAS;YACd8K,MAAM,EAAEF;UACV,CAAC,CAAC;QACJ;MACF;IACF;EACF,CAAC,EAAE;IACDhI,GAAG,EAAE,sBAAsB;IAC3ByK,KAAK,EAAE,SAASM,oBAAoBA,CAAA,EAAG;MACrCnM,MAAM,CAACsC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAACpC,eAAe,CAAC;MAC3D,IAAI,CAACqL,SAAS,GAAG,IAAI;IACvB;EACF,CAAC,EAAE;IACDnK,GAAG,EAAE,gBAAgB;IACrByK,KAAK,EAAE,SAAShL,cAAcA,CAAA,EAAG;MAC/B,IAAI,CAAClB,QAAQ,CAAC;QACZvB,eAAe,EAAE,IAAI;QACrBL,YAAY,EAAE,IAAI;QAClBE,eAAe,EAAE,IAAI;QACrBH,aAAa,EAAE,IAAI;QACnBE,gBAAgB,EAAE,IAAI;QACtBE,aAAa,EAAE,IAAI;QACnBC,WAAW,EAAE;MACf,CAAC,CAAC;IACJ;EACF,CAAC,EAAE;IACDiD,GAAG,EAAE,QAAQ;IACbyK,KAAK,EAAE,SAASO,MAAMA,CAAA,EAAG;MACvB,IAAIC,aAAa,GAAG,IAAI,CAACrN,KAAK;QAC5BT,OAAO,GAAG8N,aAAa,CAAC9N,OAAO;QAC/BD,YAAY,GAAG+N,aAAa,CAAC/N,YAAY;QACzClB,WAAW,GAAGiP,aAAa,CAACjP,WAAW;QACvCQ,eAAe,GAAGyO,aAAa,CAACzO,eAAe;QAC/CY,SAAS,GAAG6N,aAAa,CAAC7N,SAAS;QACnCP,eAAe,GAAGoO,aAAa,CAACpO,eAAe;QAC/CD,gBAAgB,GAAGqO,aAAa,CAACrO,gBAAgB;QACjDF,aAAa,GAAGuO,aAAa,CAACvO,aAAa;QAC3CC,YAAY,GAAGsO,aAAa,CAACtO,YAAY;QACzCK,eAAe,GAAGiO,aAAa,CAACjO,eAAe;QAC/Cf,MAAM,GAAGgP,aAAa,CAAChP,MAAM;MAC/B,IAAIiP,aAAa,GAAG,IAAI,CAACpN,KAAK;QAC5BqN,SAAS,GAAGD,aAAa,CAACC,SAAS;QACnCC,SAAS,GAAGF,aAAa,CAACE,SAAS;QACnCC,KAAK,GAAGH,aAAa,CAACG,KAAK;QAC3BC,QAAQ,GAAGJ,aAAa,CAACI,QAAQ;QACjCC,SAAS,GAAGL,aAAa,CAACK,SAAS;QACnCC,qBAAqB,GAAGN,aAAa,CAACO,QAAQ;QAC9CA,QAAQ,GAAGD,qBAAqB,KAAK,KAAK,CAAC,GAAG,CAAC,GAAGA,qBAAqB;QACvEzC,UAAU,GAAGmC,aAAa,CAACnC,UAAU;QACrC2C,QAAQ,GAAGR,aAAa,CAACQ,QAAQ;QACjCC,IAAI,GAAGT,aAAa,CAACS,IAAI;QACzBC,YAAY,GAAGV,aAAa,CAACU,YAAY;QACzCC,SAAS,GAAGX,aAAa,CAACW,SAAS;QACnC/C,SAAS,GAAGoC,aAAa,CAACpC,SAAS;QACnCzE,aAAa,GAAG6G,aAAa,CAAC7G,aAAa;QAC3CwF,QAAQ,GAAGqB,aAAa,CAACrB,QAAQ;QACjCiC,MAAM,GAAGZ,aAAa,CAACY,MAAM;QAC7BhG,QAAQ,GAAGoF,aAAa,CAACpF,QAAQ;QACjCiG,cAAc,GAAGb,aAAa,CAACa,cAAc;QAC7CC,MAAM,GAAGd,aAAa,CAACc,MAAM;QAC7BC,UAAU,GAAGf,aAAa,CAACe,UAAU;QACrCC,OAAO,GAAGhB,aAAa,CAACgB,OAAO;QAC/BC,WAAW,GAAGjB,aAAa,CAACiB,WAAW;QACvCC,mBAAmB,GAAGlB,aAAa,CAACkB,mBAAmB;QACvDC,aAAa,GAAGnB,aAAa,CAACmB,aAAa;QAC3CC,QAAQ,GAAGpB,aAAa,CAACoB,QAAQ;QACjClN,SAAS,GAAG8L,aAAa,CAAC9L,SAAS;QACnCmN,aAAa,GAAGrB,aAAa,CAACqB,aAAa;QAC3CC,SAAS,GAAGtB,aAAa,CAACsB,SAAS;MACrC,IAAIC,QAAQ,GAAGjT,SAAS,CAAC,IAAI,CAACsE,KAAK,EAAE;QACnC4O,IAAI,EAAE,IAAI;QACV5K,IAAI,EAAE;MACR,CAAC,CAAC;;MAEF;MACA,IAAI6K,eAAe;MACnB,IAAId,SAAS,EAAE;QACb,IAAIhT,OAAO,CAACgT,SAAS,CAAC,KAAK,QAAQ,EAAE;UACnCc,eAAe,GAAGd,SAAS;QAC7B,CAAC,MAAM,IAAI,OAAOA,SAAS,KAAK,UAAU,EAAE;UAC1Cc,eAAe,GAAG;YAChBC,aAAa,EAAEf;UACjB,CAAC;QACH,CAAC,MAAM;UACLc,eAAe,GAAG,CAAC,CAAC;QACtB;MACF;MACA,OAAO,aAAajT,KAAK,CAACmT,aAAa,CAAClT,WAAW,CAACmT,QAAQ,EAAE;QAC5DrC,KAAK,EAAE;UACLU,SAAS,EAAEA,SAAS;UACpBpC,UAAU,EAAEA,UAAU;UACtB2C,QAAQ,EAAEA,QAAQ;UAClBC,IAAI,EAAEA,IAAI;UACVC,YAAY,EAAEA,YAAY;UAC1BC,SAAS,EAAEc,eAAe;UAC1BnQ,eAAe,EAAEA,eAAe;UAChCsM,SAAS,EAAEA,SAAS;UACpBzE,aAAa,EAAEA,aAAa;UAC5BwF,QAAQ,EAAEA,QAAQ;UAClB7N,WAAW,EAAEA,WAAW;UACxBa,eAAe,EAAEA,eAAe;UAChCD,gBAAgB,EAAEA,gBAAgB;UAClCF,aAAa,EAAEA,aAAa;UAC5BC,YAAY,EAAEA,YAAY;UAC1BK,eAAe,EAAEA,eAAe;UAChCf,MAAM,EAAEA,MAAM;UACdmD,SAAS,EAAEA,SAAS;UACpBgN,mBAAmB,EAAEA,mBAAmB;UACxCtG,QAAQ,EAAEA,QAAQ;UAClBiG,cAAc,EAAEA,cAAc;UAC9BI,WAAW,EAAEA,WAAW;UACxBY,WAAW,EAAE,IAAI,CAACA,WAAW;UAC7BC,iBAAiB,EAAE,IAAI,CAACA,iBAAiB;UACzCjK,YAAY,EAAE,IAAI,CAACA,YAAY;UAC/BiH,YAAY,EAAE,IAAI,CAACA,YAAY;UAC/BD,WAAW,EAAE,IAAI,CAACA,WAAW;UAC7BtC,UAAU,EAAE,IAAI,CAACA,UAAU;UAC3BwF,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;UACvCC,gBAAgB,EAAE,IAAI,CAACA,gBAAgB;UACvCC,iBAAiB,EAAE,IAAI,CAACA,iBAAiB;UACzCC,eAAe,EAAE,IAAI,CAACA,eAAe;UACrCC,eAAe,EAAE,IAAI,CAACA,eAAe;UACrCC,cAAc,EAAE,IAAI,CAACA,cAAc;UACnCC,eAAe,EAAE,IAAI,CAACA,eAAe;UACrCtM,aAAa,EAAE,IAAI,CAACA,aAAa;UACjCuM,UAAU,EAAE,IAAI,CAACA;QACnB;MACF,CAAC,EAAE,aAAa9T,KAAK,CAACmT,aAAa,CAAC,KAAK,EAAE;QACzCY,IAAI,EAAE,MAAM;QACZrC,SAAS,EAAE9R,UAAU,CAAC6R,SAAS,EAAEC,SAAS,EAAEmB,aAAa,EAAElT,eAAe,CAACA,eAAe,CAACA,eAAe,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC0C,MAAM,CAACoP,SAAS,EAAE,YAAY,CAAC,EAAEG,QAAQ,CAAC,EAAE,EAAE,CAACvP,MAAM,CAACoP,SAAS,EAAE,UAAU,CAAC,EAAEhO,OAAO,CAAC,EAAE,EAAE,CAACpB,MAAM,CAACoP,SAAS,EAAE,iBAAiB,CAAC,EAAE/N,SAAS,KAAK,IAAI,CAAC,CAAC;QACvQiO,KAAK,EAAEmB;MACT,CAAC,EAAE,aAAa9S,KAAK,CAACmT,aAAa,CAAChT,QAAQ,EAAEjB,QAAQ,CAAC;QACrD8U,GAAG,EAAE,IAAI,CAAClP,OAAO;QACjB2M,SAAS,EAAEA,SAAS;QACpBE,KAAK,EAAEA,KAAK;QACZvJ,IAAI,EAAE5E,YAAY;QAClB2M,QAAQ,EAAEA,QAAQ;QAClBd,UAAU,EAAEA,UAAU;QACtBD,SAAS,EAAE,CAAC,CAACA,SAAS;QACtBgD,MAAM,EAAEA,MAAM;QACd6B,QAAQ,EAAEnR,eAAe,KAAK,IAAI;QAClCwP,MAAM,EAAEA,MAAM;QACdC,UAAU,EAAEA,UAAU;QACtBC,OAAO,EAAEA,OAAO;QAChBX,SAAS,EAAEA,SAAS;QACpBpO,OAAO,EAAEA,OAAO;QAChBsO,QAAQ,EAAEA,QAAQ;QAClBrC,UAAU,EAAE,IAAI,CAACvH,aAAa,CAAC,CAAC;QAChC8E,OAAO,EAAE,IAAI,CAACA,OAAO;QACrBI,MAAM,EAAE,IAAI,CAACA,MAAM;QACnB8B,SAAS,EAAE,IAAI,CAACA,SAAS;QACzB7B,cAAc,EAAE,IAAI,CAACA,cAAc;QACnC4G,iBAAiB,EAAE,IAAI,CAACA,iBAAiB;QACzCC,eAAe,EAAE,IAAI,CAACA,eAAe;QACrCxB,aAAa,EAAEA,aAAa;QAC5BC,QAAQ,EAAEA;MACZ,CAAC,EAAE,IAAI,CAAC3K,wBAAwB,CAAC,CAAC,EAAE8K,QAAQ,CAAC,CAAC,CAAC,CAAC;IAClD;EACF,CAAC,CAAC,EAAE,CAAC;IACHzM,GAAG,EAAE,0BAA0B;IAC/ByK,KAAK,EAAE,SAASqD,wBAAwBA,CAAChQ,KAAK,EAAEsI,SAAS,EAAE;MACzD,IAAI9I,SAAS,GAAG8I,SAAS,CAAC9I,SAAS;MACnC,IAAIgN,QAAQ,GAAG;QACbhN,SAAS,EAAEQ;MACb,CAAC;MACD,SAASsM,QAAQA,CAACG,IAAI,EAAE;QACtB,OAAO,CAACjN,SAAS,IAAIiN,IAAI,IAAIzM,KAAK,IAAIR,SAAS,IAAIA,SAAS,CAACiN,IAAI,CAAC,KAAKzM,KAAK,CAACyM,IAAI,CAAC;MACpF;;MAEA;MACA,IAAItN,QAAQ;;MAEZ;MACA,IAAIM,UAAU,GAAG6I,SAAS,CAAC7I,UAAU;MACrC,IAAI6M,QAAQ,CAAC,YAAY,CAAC,EAAE;QAC1B7M,UAAU,GAAGzC,cAAc,CAACgD,KAAK,CAACP,UAAU,CAAC;QAC7C+M,QAAQ,CAAC/M,UAAU,GAAGA,UAAU;MAClC;;MAEA;MACA,IAAI6M,QAAQ,CAAC,UAAU,CAAC,EAAE;QACxBnN,QAAQ,GAAGa,KAAK,CAACb,QAAQ;MAC3B,CAAC,MAAM,IAAImN,QAAQ,CAAC,UAAU,CAAC,EAAE;QAC/B3Q,OAAO,CAAC,KAAK,EAAE,kEAAkE,CAAC;QAClFwD,QAAQ,GAAGpC,iBAAiB,CAACiD,KAAK,CAACuC,QAAQ,CAAC;MAC9C;;MAEA;MACA,IAAIpD,QAAQ,EAAE;QACZqN,QAAQ,CAACrN,QAAQ,GAAGA,QAAQ;QAC5B,IAAI8Q,WAAW,GAAGpT,qBAAqB,CAACsC,QAAQ,EAAE;UAChDM,UAAU,EAAEA;QACd,CAAC,CAAC;QACF+M,QAAQ,CAACtO,WAAW,GAAGlD,aAAa,CAACO,eAAe,CAAC,CAAC,CAAC,EAAEU,UAAU,EAAED,YAAY,CAAC,EAAEiU,WAAW,CAAC/R,WAAW,CAAC;;QAE5G;QACA,IAAIgS,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;UACzCjT,iBAAiB,CAACgC,QAAQ,EAAEM,UAAU,CAAC;QACzC;MACF;MACA,IAAIvB,WAAW,GAAGsO,QAAQ,CAACtO,WAAW,IAAIoK,SAAS,CAACpK,WAAW;;MAE/D;MACA,IAAIoO,QAAQ,CAAC,cAAc,CAAC,IAAI9M,SAAS,IAAI8M,QAAQ,CAAC,kBAAkB,CAAC,EAAE;QACzEE,QAAQ,CAAC/N,YAAY,GAAGuB,KAAK,CAACqQ,gBAAgB,IAAI,CAAC7Q,SAAS,IAAIQ,KAAK,CAACsQ,mBAAmB,GAAG/T,mBAAmB,CAACyD,KAAK,CAACvB,YAAY,EAAEP,WAAW,CAAC,GAAG8B,KAAK,CAACvB,YAAY;MACvK,CAAC,MAAM,IAAI,CAACe,SAAS,IAAIQ,KAAK,CAACuQ,gBAAgB,EAAE;QAC/C,IAAIC,gBAAgB,GAAGxV,aAAa,CAAC,CAAC,CAAC,EAAEkD,WAAW,CAAC;QACrD,OAAOsS,gBAAgB,CAACvU,UAAU,CAAC;QACnCuQ,QAAQ,CAAC/N,YAAY,GAAGsD,MAAM,CAACC,IAAI,CAACwO,gBAAgB,CAAC,CAACzK,GAAG,CAAC,UAAU7D,GAAG,EAAE;UACvE,OAAOsO,gBAAgB,CAACtO,GAAG,CAAC,CAACA,GAAG;QAClC,CAAC,CAAC;MACJ,CAAC,MAAM,IAAI,CAAC1C,SAAS,IAAIQ,KAAK,CAACyQ,mBAAmB,EAAE;QAClDjE,QAAQ,CAAC/N,YAAY,GAAGuB,KAAK,CAACqQ,gBAAgB,IAAIrQ,KAAK,CAACsQ,mBAAmB,GAAG/T,mBAAmB,CAACyD,KAAK,CAACyQ,mBAAmB,EAAEvS,WAAW,CAAC,GAAG8B,KAAK,CAACyQ,mBAAmB;MACvK;MACA,IAAI,CAACjE,QAAQ,CAAC/N,YAAY,EAAE;QAC1B,OAAO+N,QAAQ,CAAC/N,YAAY;MAC9B;;MAEA;MACA,IAAIU,QAAQ,IAAIqN,QAAQ,CAAC/N,YAAY,EAAE;QACrC,IAAIW,YAAY,GAAGnC,eAAe,CAACkC,QAAQ,IAAImJ,SAAS,CAACnJ,QAAQ,EAAEqN,QAAQ,CAAC/N,YAAY,IAAI6J,SAAS,CAAC7J,YAAY,EAAEgB,UAAU,CAAC;QAC/H+M,QAAQ,CAACpN,YAAY,GAAGA,YAAY;MACtC;;MAEA;MACA,IAAIY,KAAK,CAACiL,UAAU,EAAE;QACpB,IAAIqB,QAAQ,CAAC,cAAc,CAAC,EAAE;UAC5BE,QAAQ,CAACpO,YAAY,GAAG9B,gBAAgB,CAAC0D,KAAK,CAAC5B,YAAY,EAAE4B,KAAK,CAAC;QACrE,CAAC,MAAM,IAAI,CAACR,SAAS,IAAIQ,KAAK,CAAC0Q,mBAAmB,EAAE;UAClDlE,QAAQ,CAACpO,YAAY,GAAG9B,gBAAgB,CAAC0D,KAAK,CAAC0Q,mBAAmB,EAAE1Q,KAAK,CAAC;QAC5E;MACF;;MAEA;MACA,IAAIA,KAAK,CAACgL,SAAS,EAAE;QACnB,IAAI2F,gBAAgB;QACpB,IAAIrE,QAAQ,CAAC,aAAa,CAAC,EAAE;UAC3BqE,gBAAgB,GAAGlU,gBAAgB,CAACuD,KAAK,CAAC3B,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9D,CAAC,MAAM,IAAI,CAACmB,SAAS,IAAIQ,KAAK,CAAC4Q,kBAAkB,EAAE;UACjDD,gBAAgB,GAAGlU,gBAAgB,CAACuD,KAAK,CAAC4Q,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC,MAAM,IAAIzR,QAAQ,EAAE;UACnB;UACAwR,gBAAgB,GAAGlU,gBAAgB,CAACuD,KAAK,CAAC3B,WAAW,CAAC,IAAI;YACxDA,WAAW,EAAEiK,SAAS,CAACjK,WAAW;YAClCC,eAAe,EAAEgK,SAAS,CAAChK;UAC7B,CAAC;QACH;QACA,IAAIqS,gBAAgB,EAAE;UACpB,IAAIE,iBAAiB,GAAGF,gBAAgB;YACtCG,qBAAqB,GAAGD,iBAAiB,CAACxS,WAAW;YACrDA,WAAW,GAAGyS,qBAAqB,KAAK,KAAK,CAAC,GAAG,EAAE,GAAGA,qBAAqB;YAC3EC,qBAAqB,GAAGF,iBAAiB,CAACvS,eAAe;YACzDA,eAAe,GAAGyS,qBAAqB,KAAK,KAAK,CAAC,GAAG,EAAE,GAAGA,qBAAqB;UACjF,IAAI,CAAC/Q,KAAK,CAACuG,aAAa,EAAE;YACxB,IAAIyK,WAAW,GAAGrU,YAAY,CAAC0B,WAAW,EAAE,IAAI,EAAEH,WAAW,CAAC;YAC9DG,WAAW,GAAG2S,WAAW,CAAC3S,WAAW;YACrCC,eAAe,GAAG0S,WAAW,CAAC1S,eAAe;UAC/C;UACAkO,QAAQ,CAACnO,WAAW,GAAGA,WAAW;UAClCmO,QAAQ,CAAClO,eAAe,GAAGA,eAAe;QAC5C;MACF;;MAEA;MACA,IAAIgO,QAAQ,CAAC,YAAY,CAAC,EAAE;QAC1BE,QAAQ,CAACjO,UAAU,GAAGyB,KAAK,CAACzB,UAAU;MACxC;MACA,OAAOiO,QAAQ;IACjB;EACF,CAAC,CAAC,CAAC;EACH,OAAOnP,IAAI;AACb,CAAC,CAACzB,KAAK,CAACqV,SAAS,CAAC;AAClB1V,eAAe,CAAC8B,IAAI,EAAE,cAAc,EAAE;EACpCgQ,SAAS,EAAE,SAAS;EACpBG,QAAQ,EAAE,KAAK;EACfI,QAAQ,EAAE,IAAI;EACd3C,UAAU,EAAE,IAAI;EAChBtF,QAAQ,EAAE,KAAK;EACfqF,SAAS,EAAE,KAAK;EAChBe,QAAQ,EAAE,KAAK;EACfxF,aAAa,EAAE,KAAK;EACpBwH,SAAS,EAAE,KAAK;EAChBuC,mBAAmB,EAAE,IAAI;EACzBD,gBAAgB,EAAE,KAAK;EACvBE,gBAAgB,EAAE,KAAK;EACvBE,mBAAmB,EAAE,EAAE;EACvBG,kBAAkB,EAAE,EAAE;EACtBF,mBAAmB,EAAE,EAAE;EACvBpC,mBAAmB,EAAExS,aAAa;EAClCuF,SAAS,EAAE,SAASA,SAASA,CAAA,EAAG;IAC9B,OAAO,IAAI;EACb,CAAC;EACD+D,YAAY,EAAE;AAChB,CAAC,CAAC;AACF7J,eAAe,CAAC8B,IAAI,EAAE,UAAU,EAAEnB,QAAQ,CAAC;AAC3C,eAAemB,IAAI","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}