{"version":3,"sources":["../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/virtual-dom.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","../node_modules/react/index.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/helper.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/constant.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/responsive-dialog-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/util.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/svg-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/svg-render/canvas-renderer.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/helper.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-svg-base/src/tooltip/interface.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@rjsf/core/dist/es/utils.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/enum.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js","../node_modules/@syncfusion/ej2-charts/src/common/model/constants.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/prop-types/index.js","../node_modules/@syncfusion/ej2-charts/src/common/model/base.js","../node_modules/@babel/runtime-corejs2/helpers/esm/defineProperty.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime-corejs2/helpers/esm/objectSpread.js","../node_modules/@babel/runtime-corejs2/helpers/esm/extends.js","../node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","../node_modules/uniqid/index.js","../node_modules/@babel/runtime-corejs2/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime-corejs2/core-js/object/keys.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/core-js/library/modules/_core.js","../node_modules/@babel/runtime-corejs2/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime-corejs2/helpers/esm/objectWithoutPropertiesLoose.js","../../modules/HistoryContext.js","../../modules/createNameContext.js","../../modules/RouterContext.js","../../modules/Router.js","../../modules/MemoryRouter.js","../../modules/Lifecycle.js","../../modules/matchPath.js","../../modules/Route.js","../../modules/StaticRouter.js","../../modules/Switch.js","../../modules/hooks.js","../node_modules/react-clamp-lines/lib/index.js","../node_modules/@syncfusion/ej2-charts/src/common/model/theme.js","../node_modules/core-js/library/modules/_export.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime-corejs2/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime-corejs2/helpers/esm/createClass.js","../node_modules/@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime-corejs2/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime-corejs2/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime-corejs2/helpers/esm/inherits.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-base/src/template.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/core-js/library/modules/_global.js","../node_modules/@babel/runtime-corejs2/helpers/esm/typeof.js","../node_modules/core-js/library/modules/_wks.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/lodash/isArray.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/double-range.js","../node_modules/@babel/runtime-corejs2/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime-corejs2/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime-corejs2/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime-corejs2/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime-corejs2/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime-corejs2/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/tiny-invariant/dist/tiny-invariant.esm.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/core-js/library/modules/_is-object.js","../node_modules/core-js/library/modules/_descriptors.js","../node_modules/core-js/library/modules/_object-dp.js","../node_modules/lodash/isObject.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/model/acc-base.js","../node_modules/@rjsf/core/dist/es/validate.js","../node_modules/core-js/library/modules/_an-object.js","../node_modules/lodash/_root.js","../node_modules/lodash/isObjectLike.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/value-formatter.js","../node_modules/core-js/library/modules/_ctx.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/core-js/library/modules/_fails.js","../node_modules/core-js/library/modules/_hide.js","../node_modules/core-js/library/modules/_to-object.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_baseRest.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/core-js/library/modules/_to-iobject.js","../node_modules/core-js/library/modules/_has.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/_baseUnary.js","../node_modules/@syncfusion/ej2-charts/src/common/legend/legend.js","../node_modules/@babel/runtime-corejs2/core-js/symbol.js","../node_modules/@syncfusion/ej2-charts/src/chart/model/chart-base.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/core-js/library/modules/es6.string.iterator.js","../node_modules/core-js/library/modules/_iterators.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/eq.js","../node_modules/lodash/_toKey.js","../node_modules/ajv/lib/compile/util.js","../node_modules/@babel/runtime-corejs2/core-js/set.js","../node_modules/@babel/runtime-corejs2/core-js/array/from.js","../node_modules/@babel/runtime-corejs2/core-js/json/stringify.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/accumulation-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/utils/get-data.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/width-controller.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-symbols.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/core-js/library/modules/_cof.js","../node_modules/core-js/library/modules/_property-desc.js","../node_modules/core-js/library/modules/_a-function.js","../node_modules/core-js/library/modules/_library.js","../node_modules/core-js/library/modules/_set-to-string-tag.js","../node_modules/core-js/library/modules/_object-keys.js","../node_modules/core-js/library/modules/_to-length.js","../node_modules/core-js/library/modules/web.dom.iterable.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/identity.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/isBuffer.js","../node_modules/core-js/library/modules/_for-of.js","../node_modules/lodash/_copyObject.js","../node_modules/lodash/keys.js","../node_modules/lodash/keysIn.js","../node_modules/react-is/index.js","../node_modules/react-dom/index.js","../node_modules/@babel/runtime-corejs2/core-js/parse-int.js","../node_modules/core-js/library/modules/_defined.js","../node_modules/core-js/library/modules/_object-pie.js","../node_modules/core-js/library/modules/_uid.js","../node_modules/core-js/library/modules/_wks-ext.js","../node_modules/core-js/library/modules/_object-create.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_baseFlatten.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/isTypedArray.js","../node_modules/core-js/library/modules/_classof.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_copyArray.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/isArrayLikeObject.js","../node_modules/shortid/lib/alphabet.js","../node_modules/query-string/index.js","../node_modules/@babel/runtime-corejs2/core-js/object/define-property.js","../node_modules/@babel/runtime-corejs2/core-js/object/set-prototype-of.js","../node_modules/@babel/runtime-corejs2/core-js/get-iterator.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/double-axis.js","../node_modules/@syncfusion/ej2-charts/src/common/model/data.js","../node_modules/@syncfusion/ej2-charts/src/common/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/print.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/axis-helper.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/utils.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-main-object-collection.js","../node_modules/@syncfusion/ej2-file-utils/src/encoding.js","../node_modules/@syncfusion/ej2-file-utils/src/save.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-string.js","../node_modules/@syncfusion/ej2-file-utils/src/stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-name.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-operators.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-dictionary-properties.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-number.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-array.js","../node_modules/@syncfusion/ej2-compression/src/compression-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-stream.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-reference.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-catalog.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-cross-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/drawing/pdf-drawing.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-size.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-margins.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-settings.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/pdf-stream-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-layouter.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-color.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-solid-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-pen.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-string-format.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/string-tokenizer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/enum.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transformation-matrix.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/constants.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/collections/object-object-pair/dictionary.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-transparency.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/base/graphics-element.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/automatic-fields/automatic-field-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/byte-array.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-table-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-name-record.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-head-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-horizontal-header-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-OS2-Table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-post-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-long-hor-metric.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-cmap-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-info.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-loca-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-apple-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-microsoft-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-trimmed-cmap-sub-table.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-glyph-header.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/input-output/big-endian-writer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/ttf-reader.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-font-metrics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/unicode-true-type-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-text-shape.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl/rtl-bidirectional.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/rtl-renderer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/primitives/pdf-boolean.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/image-decoder.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-gradient-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/figures/pdf-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/unit-convertor.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-image.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/images/pdf-bitmap.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-resources.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/brushes/pdf-tiling-brush.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/pdf-graphics.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-layer-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-base.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/annotations/annotation-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/page-added-event-arguments.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document-template.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-templates.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-section-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-document-page-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/general/pdf-cache-collection.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font-metrics-factory.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/graphics/fonts/pdf-standard-font.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/document/pdf-document.js","../node_modules/@syncfusion/ej2-pdf-export/src/implementation/pages/pdf-page-template-element.js","../node_modules/@syncfusion/ej2-charts/src/common/utils/export.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/core-js/library/modules/_iobject.js","../node_modules/core-js/library/modules/_object-gopd.js","../node_modules/core-js/library/modules/_to-primitive.js","../node_modules/core-js/library/modules/_dom-create.js","../node_modules/core-js/library/modules/_object-sap.js","../node_modules/core-js/library/modules/_meta.js","../node_modules/core-js/library/modules/_shared.js","../node_modules/core-js/library/modules/_wks-define.js","../node_modules/core-js/library/modules/_to-integer.js","../node_modules/core-js/library/modules/_shared-key.js","../node_modules/core-js/library/modules/_enum-bug-keys.js","../node_modules/core-js/library/modules/_object-gops.js","../node_modules/core-js/library/modules/_is-array.js","../node_modules/core-js/library/modules/_iter-define.js","../node_modules/core-js/library/modules/_add-to-unscopables.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_assignValue.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/isLength.js","../node_modules/lodash/_arrayPush.js","../node_modules/webpack/buildin/module.js","../node_modules/lodash/_nodeUtil.js","../node_modules/core-js/library/modules/_redefine-all.js","../node_modules/core-js/library/modules/_an-instance.js","../node_modules/core-js/library/modules/core.get-iterator-method.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getPrototype.js","../node_modules/lodash/_cloneArrayBuffer.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_isIterateeCall.js","../node_modules/lodash/_baseUniq.js","../node_modules/lodash/_arrayIncludes.js","../node_modules/lodash/_arrayIncludesWith.js","../node_modules/lodash/isPlainObject.js","../node_modules/validate.io-array/lib/index.js","../node_modules/ajv/lib/compile/resolve.js","../node_modules/fast-deep-equal/index.js","../node_modules/ajv/lib/compile/error_classes.js","../node_modules/core-js/library/modules/_new-promise-capability.js","../node_modules/lodash/get.js","../node_modules/@babel/runtime-corejs2/core-js/object/get-prototype-of.js","../node_modules/@babel/runtime-corejs2/core-js/number/is-nan.js","../node_modules/@babel/runtime-corejs2/core-js/promise.js","../node_modules/mini-create-react-context/dist/esm/index.js","../node_modules/path-to-regexp/index.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-grids/src/grid/common/checkbox-filter-base.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/data.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/row.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/cell.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-merge-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/row-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/summary-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/group-model-generator.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/content-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/aria-service.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/stacked-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/indent-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/caption-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-header-indent-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/detail-expand-cell-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-drop-renderer.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/row-drag-header-indent-render.js","../node_modules/@syncfusion/ej2-grids/src/grid/renderer/render.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/cell-render-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/service-locator.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/renderer-factory.js","../node_modules/@syncfusion/ej2-grids/src/grid/services/focus-strategy.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/page-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/column-chooser-settings.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/selection.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/search.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/show-hide.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/scroll.js","../node_modules/@syncfusion/ej2-grids/src/grid/models/aggregate.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/clipboard.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/blazor-action.js","../node_modules/@syncfusion/ej2-grids/src/grid/base/grid.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/object-assign/index.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/core-js/library/modules/_ie8-dom-define.js","../node_modules/core-js/library/modules/es6.symbol.js","../node_modules/core-js/library/modules/_redefine.js","../node_modules/core-js/library/modules/_object-keys-internal.js","../node_modules/core-js/library/modules/_array-includes.js","../node_modules/core-js/library/modules/_to-absolute-index.js","../node_modules/core-js/library/modules/_html.js","../node_modules/core-js/library/modules/_object-gopn.js","../node_modules/core-js/library/modules/_object-gpo.js","../node_modules/core-js/library/modules/_iter-step.js","../node_modules/lodash/_freeGlobal.js","../node_modules/webpack/buildin/global.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/toString.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/flatten.js","../node_modules/lodash/_overRest.js","../node_modules/lodash/_apply.js","../node_modules/lodash/_setToString.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_Set.js","../node_modules/core-js/library/modules/_iter-call.js","../node_modules/core-js/library/modules/_is-array-iter.js","../node_modules/core-js/library/modules/_set-species.js","../node_modules/core-js/library/modules/_validate-collection.js","../node_modules/core-js/library/modules/_iter-detect.js","../node_modules/lodash/_arrayEach.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_cloneBuffer.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/_getSymbolsIn.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_cloneTypedArray.js","../node_modules/lodash/_initCloneObject.js","../node_modules/lodash/isEqual.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/sortBy.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_baseEach.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/uniq.js","../node_modules/lodash/_baseIndexOf.js","../node_modules/lodash/uniqWith.js","../node_modules/lodash/intersectionWith.js","../node_modules/lodash/_baseIntersection.js","../node_modules/lodash/_castArrayLikeObject.js","../node_modules/validate.io-integer-array/lib/index.js","../node_modules/validate.io-function/lib/index.js","../node_modules/lodash/_baseMerge.js","../node_modules/lodash/_assignMergeValue.js","../node_modules/lodash/_safeGet.js","../node_modules/ajv/lib/compile/schema_obj.js","../node_modules/fast-json-stable-stringify/index.js","../node_modules/ajv/lib/dotjs/validate.js","../node_modules/ajv/lib/dotjs/_limit.js","../node_modules/ajv/lib/dotjs/_limitItems.js","../node_modules/ajv/lib/dotjs/_limitLength.js","../node_modules/ajv/lib/dotjs/_limitProperties.js","../node_modules/core-js/library/modules/_string-ws.js","../node_modules/core-js/library/modules/_species-constructor.js","../node_modules/core-js/library/modules/_task.js","../node_modules/core-js/library/modules/_perform.js","../node_modules/core-js/library/modules/_promise-resolve.js","../node_modules/@babel/runtime-corejs2/core-js/object/get-own-property-descriptor.js","../node_modules/@babel/runtime-corejs2/core-js/symbol/iterator.js","../node_modules/@babel/runtime-corejs2/core-js/object/create.js","../node_modules/lodash/pick.js","../node_modules/lodash/isEmpty.js","../node_modules/@babel/runtime-corejs2/core-js/symbol/to-primitive.js","../node_modules/@babel/runtime-corejs2/core-js/is-iterable.js","../node_modules/@babel/runtime-corejs2/core-js/object/assign.js","../node_modules/json-schema-merge-allof/src/index.js","../node_modules/core-js/library/fn/array/fill.js","../node_modules/lodash/toPath.js","../node_modules/ajv/lib/ajv.js","../node_modules/lodash/union.js","../node_modules/jsonpointer/jsonpointer.js","../node_modules/core-js/library/fn/array/includes.js","../node_modules/shortid/index.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../../modules/BrowserRouter.js","../../modules/HashRouter.js","../../modules/utils/locationUtils.js","../../modules/Link.js","../../modules/NavLink.js","../node_modules/@rjsf/core/dist/es/components/Form.js","../node_modules/@rjsf/core/dist/es/components/ErrorList.js","../node_modules/@rjsf/core/dist/es/withTheme.js","../node_modules/@rjsf/core/dist/es/index.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/pie-base.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/pie-series.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/scheduler/index.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/strict-uri-encode/index.js","../node_modules/decode-uri-component/index.js","../node_modules/split-on-first/index.js","../node_modules/process/browser.js","../node_modules/core-js/library/fn/object/get-own-property-descriptor.js","../node_modules/core-js/library/modules/es6.object.get-own-property-descriptor.js","../node_modules/core-js/library/fn/object/get-own-property-symbols.js","../node_modules/core-js/library/modules/_enum-keys.js","../node_modules/core-js/library/modules/_object-dps.js","../node_modules/core-js/library/modules/_object-gopn-ext.js","../node_modules/core-js/library/fn/object/keys.js","../node_modules/core-js/library/modules/es6.object.keys.js","../node_modules/core-js/library/fn/object/define-property.js","../node_modules/core-js/library/modules/es6.object.define-property.js","../node_modules/core-js/library/fn/array/is-array.js","../node_modules/core-js/library/modules/es6.array.is-array.js","../node_modules/core-js/library/fn/symbol/iterator.js","../node_modules/core-js/library/modules/_string-at.js","../node_modules/core-js/library/modules/_iter-create.js","../node_modules/core-js/library/modules/es6.array.iterator.js","../node_modules/core-js/library/fn/symbol/index.js","../node_modules/core-js/library/modules/es7.symbol.async-iterator.js","../node_modules/core-js/library/modules/es7.symbol.observable.js","../node_modules/core-js/library/fn/object/get-prototype-of.js","../node_modules/core-js/library/modules/es6.object.get-prototype-of.js","../node_modules/core-js/library/fn/object/set-prototype-of.js","../node_modules/core-js/library/modules/es6.object.set-prototype-of.js","../node_modules/core-js/library/modules/_set-proto.js","../node_modules/core-js/library/fn/object/create.js","../node_modules/core-js/library/modules/es6.object.create.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/lodash/_basePick.js","../node_modules/lodash/_basePickBy.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/memoize.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseSet.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_flatRest.js","../node_modules/lodash/_isFlattenable.js","../node_modules/lodash/_baseSetToString.js","../node_modules/lodash/constant.js","../node_modules/lodash/_shortOut.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/core-js/library/fn/symbol/to-primitive.js","../node_modules/core-js/library/fn/set.js","../node_modules/core-js/library/modules/es6.set.js","../node_modules/core-js/library/modules/_collection-strong.js","../node_modules/core-js/library/modules/_collection.js","../node_modules/core-js/library/modules/_array-methods.js","../node_modules/core-js/library/modules/_array-species-create.js","../node_modules/core-js/library/modules/_array-species-constructor.js","../node_modules/core-js/library/modules/es7.set.to-json.js","../node_modules/core-js/library/modules/_collection-to-json.js","../node_modules/core-js/library/modules/_array-from-iterable.js","../node_modules/core-js/library/modules/es7.set.of.js","../node_modules/core-js/library/modules/_set-collection-of.js","../node_modules/core-js/library/modules/es7.set.from.js","../node_modules/core-js/library/modules/_set-collection-from.js","../node_modules/core-js/library/fn/array/from.js","../node_modules/core-js/library/modules/es6.array.from.js","../node_modules/core-js/library/modules/_create-property.js","../node_modules/core-js/library/fn/is-iterable.js","../node_modules/core-js/library/modules/core.is-iterable.js","../node_modules/core-js/library/fn/number/is-nan.js","../node_modules/core-js/library/modules/es6.number.is-nan.js","../node_modules/core-js/library/fn/object/assign.js","../node_modules/core-js/library/modules/es6.object.assign.js","../node_modules/core-js/library/modules/_object-assign.js","../node_modules/react-is/cjs/react-is.production.min.js","../node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/lodash/cloneDeep.js","../node_modules/lodash/_baseClone.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_baseAssign.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseAssignIn.js","../node_modules/lodash/_baseKeysIn.js","../node_modules/lodash/_nativeKeysIn.js","../node_modules/lodash/_copySymbols.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_copySymbolsIn.js","../node_modules/lodash/_getAllKeysIn.js","../node_modules/lodash/_initCloneArray.js","../node_modules/lodash/_initCloneByTag.js","../node_modules/lodash/_cloneDataView.js","../node_modules/lodash/_cloneRegExp.js","../node_modules/lodash/_cloneSymbol.js","../node_modules/lodash/_baseCreate.js","../node_modules/lodash/isMap.js","../node_modules/lodash/_baseIsMap.js","../node_modules/lodash/isSet.js","../node_modules/lodash/_baseIsSet.js","../node_modules/json-schema-compare/src/index.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_baseOrderBy.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/property.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_baseMap.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createBaseEach.js","../node_modules/lodash/_baseSortBy.js","../node_modules/lodash/_compareMultiple.js","../node_modules/lodash/_compareAscending.js","../node_modules/lodash/_baseFindIndex.js","../node_modules/lodash/_baseIsNaN.js","../node_modules/lodash/_strictIndexOf.js","../node_modules/lodash/_createSet.js","../node_modules/lodash/noop.js","../node_modules/lodash/defaults.js","../node_modules/lodash/last.js","../node_modules/lodash/isBoolean.js","../node_modules/compute-lcm/lib/index.js","../node_modules/compute-gcd/lib/index.js","../node_modules/validate.io-integer/lib/index.js","../node_modules/validate.io-number/lib/index.js","../node_modules/lodash/defaultsDeep.js","../node_modules/lodash/_customDefaultsMerge.js","../node_modules/lodash/_baseMergeDeep.js","../node_modules/lodash/toPlainObject.js","../node_modules/lodash/mergeWith.js","../node_modules/lodash/_createAssigner.js","../node_modules/lodash/flattenDeep.js","../node_modules/lodash/intersection.js","../node_modules/lodash/pullAll.js","../node_modules/lodash/_basePullAll.js","../node_modules/lodash/_baseIndexOfWith.js","../node_modules/lodash/forEach.js","../node_modules/lodash/_castFunction.js","../node_modules/lodash/without.js","../node_modules/lodash/_baseDifference.js","../node_modules/core-js/library/modules/es6.array.fill.js","../node_modules/core-js/library/modules/_array-fill.js","../node_modules/core-js/library/fn/get-iterator.js","../node_modules/core-js/library/modules/core.get-iterator.js","../node_modules/ajv/lib/compile/index.js","../../../src/util.ts","../../../src/regexps-uri.ts","../../../src/regexps-iri.ts","../../../node_modules/punycode/punycode.es6.js","../../../src/uri.ts","../../../src/schemes/http.ts","../../../src/schemes/https.ts","../../../src/schemes/mailto.ts","../../../src/schemes/urn.ts","../../../src/schemes/urn-uuid.ts","../../../src/index.ts","../node_modules/ajv/lib/compile/ucs2length.js","../node_modules/json-schema-traverse/index.js","../node_modules/ajv/lib/cache.js","../node_modules/ajv/lib/compile/formats.js","../node_modules/ajv/lib/compile/rules.js","../node_modules/ajv/lib/dotjs/index.js","../node_modules/ajv/lib/dotjs/ref.js","../node_modules/ajv/lib/dotjs/allOf.js","../node_modules/ajv/lib/dotjs/anyOf.js","../node_modules/ajv/lib/dotjs/comment.js","../node_modules/ajv/lib/dotjs/const.js","../node_modules/ajv/lib/dotjs/contains.js","../node_modules/ajv/lib/dotjs/dependencies.js","../node_modules/ajv/lib/dotjs/enum.js","../node_modules/ajv/lib/dotjs/format.js","../node_modules/ajv/lib/dotjs/if.js","../node_modules/ajv/lib/dotjs/items.js","../node_modules/ajv/lib/dotjs/multipleOf.js","../node_modules/ajv/lib/dotjs/not.js","../node_modules/ajv/lib/dotjs/oneOf.js","../node_modules/ajv/lib/dotjs/pattern.js","../node_modules/ajv/lib/dotjs/properties.js","../node_modules/ajv/lib/dotjs/propertyNames.js","../node_modules/ajv/lib/dotjs/required.js","../node_modules/ajv/lib/dotjs/uniqueItems.js","../node_modules/ajv/lib/data.js","../node_modules/ajv/lib/compile/async.js","../node_modules/ajv/lib/keyword.js","../node_modules/ajv/lib/dotjs/custom.js","../node_modules/ajv/lib/definition_schema.js","../node_modules/core-js/library/fn/parse-int.js","../node_modules/core-js/library/modules/es6.parse-int.js","../node_modules/core-js/library/modules/_parse-int.js","../node_modules/core-js/library/modules/_string-trim.js","../node_modules/core-js/library/modules/es7.array.includes.js","../node_modules/shortid/lib/index.js","../node_modules/shortid/lib/random/random-from-seed.js","../node_modules/shortid/lib/build.js","../node_modules/shortid/lib/generate.js","../node_modules/shortid/lib/random/random-byte-browser.js","../node_modules/nanoid/format.browser.js","../node_modules/shortid/lib/is-valid.js","../node_modules/shortid/lib/util/cluster-worker-id-browser.js","../node_modules/core-js/library/fn/json/stringify.js","../node_modules/core-js/library/fn/promise.js","../node_modules/core-js/library/modules/es6.promise.js","../node_modules/core-js/library/modules/_invoke.js","../node_modules/core-js/library/modules/_microtask.js","../node_modules/core-js/library/modules/_user-agent.js","../node_modules/core-js/library/modules/es7.promise.finally.js","../node_modules/core-js/library/modules/es7.promise.try.js","../node_modules/isarray/index.js","../node_modules/@rjsf/core/dist/es/components/widgets/AltDateWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/AltDateTimeWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/BaseInput.js","../node_modules/@rjsf/core/dist/es/components/widgets/CheckboxWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/CheckboxesWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/ColorWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/DateWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/DateTimeWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/EmailWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/FileWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/HiddenWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/PasswordWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/RadioWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/RangeWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/SelectWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/TextareaWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/TextWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/URLWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/UpDownWidget.js","../node_modules/@rjsf/core/dist/es/components/widgets/index.js","../node_modules/@rjsf/core/dist/es/components/IconButton.js","../node_modules/@rjsf/core/dist/es/components/AddButton.js","../node_modules/@rjsf/core/dist/es/types.js","../node_modules/@rjsf/core/dist/es/components/fields/ArrayField.js","../node_modules/@rjsf/core/dist/es/components/fields/BooleanField.js","../node_modules/@rjsf/core/dist/es/components/fields/DescriptionField.js","../node_modules/@rjsf/core/dist/es/components/fields/MultiSchemaField.js","../node_modules/@rjsf/core/dist/es/components/fields/NumberField.js","../node_modules/@rjsf/core/dist/es/components/fields/ObjectField.js","../node_modules/@rjsf/core/dist/es/components/fields/SchemaField.js","../node_modules/@rjsf/core/dist/es/components/fields/StringField.js","../node_modules/@rjsf/core/dist/es/components/fields/TitleField.js","../node_modules/@rjsf/core/dist/es/components/fields/NullField.js","../node_modules/@rjsf/core/dist/es/components/fields/UnsupportedField.js","../node_modules/@rjsf/core/dist/es/components/fields/index.js","../node_modules/@syncfusion/ej2-react-charts/src/accumulation-chart/series-directive.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/legend.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/renderer/dataLabel.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/grid.component.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-grids/src/grid/actions/resize.js","../node_modules/@syncfusion/ej2-react-grids/src/grid/columns-directive.js","../node_modules/@syncfusion/ej2-charts/src/chart/user-interaction/tooltip.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/date-time-axis.js","../node_modules/@syncfusion/ej2-charts/src/chart/axis/category-axis.js","../node_modules/@syncfusion/ej2-react-charts/src/chart/series-directive.js","../node_modules/tslib/tslib.es6.js","../../../src/utils/CryptoUtils.ts","../../../src/utils/Constants.ts","../../../src/error/AuthError.ts","../../../src/authority/Authority.ts","../../../src/utils/StringUtils.ts","../../../src/error/ClientAuthError.ts","../../../src/error/ClientConfigurationError.ts","../../src/ScopeSet.ts","../../../src/utils/UrlUtils.ts","../../../src/cache/AccessTokenKey.ts","../../../src/cache/AccessTokenValue.ts","../../src/ServerRequestParameters.ts","../../src/ClientInfo.ts","../../../src/utils/TokenUtils.ts","../../src/IdToken.ts","../../../src/cache/AccessTokenCacheItem.ts","../../../src/cache/AuthCache.ts","../../../src/cache/BrowserStorage.ts","../../src/Account.ts","../../../src/utils/WindowUtils.ts","../../../src/utils/TimeUtils.ts","../../../src/utils/RequestUtils.ts","../../../src/utils/ResponseUtils.ts","../../src/XHRClient.ts","../../../src/telemetry/TelemetryConstants.ts","../../../src/telemetry/TelemetryUtils.ts","../../../src/telemetry/TelemetryEvent.ts","../../../src/telemetry/HttpEvent.ts","../../src/Logger.ts","../../../src/authority/AadAuthority.ts","../../../src/authority/B2cAuthority.ts","../../../src/authority/AuthorityFactory.ts","../../src/Configuration.ts","../../../src/error/ServerError.ts","../../../src/error/InteractionRequiredAuthError.ts","../../src/AuthResponse.ts","../../../src/telemetry/DefaultEvent.ts","../../../src/telemetry/ApiEvent.ts","../../../src/telemetry/TelemetryManager.ts","../../src/UserAgentApplication.ts","../node_modules/@syncfusion/ej2-charts/src/chart/axis/cartesian-panel.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/chart-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker-explode.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/marker.js","../node_modules/@syncfusion/ej2-charts/src/chart/technical-indicators/technical-indicator.js","../node_modules/@syncfusion/ej2-charts/src/chart/chart.js","../node_modules/@syncfusion/ej2-react-charts/src/chart/chart.component.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/column-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/column-series.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/line-base.js","../node_modules/@syncfusion/ej2-charts/src/chart/series/line-series.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-charts/src/accumulation-chart/accumulation.js","../node_modules/@syncfusion/ej2-react-charts/src/accumulation-chart/accumulationchart.component.js"],"names":["uid","isBlazorPlatform","createInstance","classFunction","params","arrayParam","unshift","undefined","Function","prototype","bind","apply","getValue","nameSpace","obj","value","splits","replace","split","i","length","isUndefined","setValue","key","keys","start","fromObj","isNullOrUndefined","deleteObject","isObject","constructor","getEnumValue","enumObject","enumValue","merge","source","destination","temrObj","tempProp","_i","keys_1","Object","indexOf","Array","isArray","extend","copied","first","second","deep","result","arguments","_loop_1","arguments_1","obj1","forEach","clone","src","copy","isArrayChanged","blazorEventExtend","isBlazor","Event","hasOwnProperty","getUniqueID","definedName","debounce","eventFunction","delay","out","_this","this","args","later","clearTimeout","setTimeout","compareElementParent","child","parent","document","parentNode","throwError","message","Error","e","stack","print","element","printWindow","div","createElement","links","slice","call","getElementsByTagName","querySelectorAll","reference","window","open","appendChild","cloneNode","len","outerHTML","write","innerHTML","close","focus","interval","setInterval","ready","clearInterval","formatUnit","match","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","prop","res","propKeys_1","getSymbolRegex","props","regexStr","map","str","join","RegExp","getSymbolMatch","ret","matchKeys_1","constructRegex","val","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","isNumber","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","dateCorrection","getHijriDate","gDate","day","getDate","month","getMonth","year","getFullYear","tMonth","tYear","yPrefix","Math","floor","julilanOffset","julianNumber","b","c","d","tempMonth","modifiedJulianDate","z","cyc","j","iy","im","tempDay","iln","ii","hYear","hmonth","hDate","date","toGregorian","julianDate","a","gDay","gMonth","gYear","Date","abbreviateRegexGlobal","weekdayKey","timeSetter","m","h","H","s","f","datePartMatcher","DateFormat","dateFormat","culture","option","cldr","dependable","base","getDependables","calendar","numObject","dateObject","formatOptions","isIslamic","islamicRegex","test","isServerRendered","compareBlazorDateFormats","resPattern","format","getResultantPattern","skeleton","type","dateSeperator","getDateSeparator","ConvertDateToWeekFormat","pattern","numMapper","parser","parserObject","patternMatch_1","char","weekday","monthIndex","days","designator","eText","era","timeZone","isNaN","intDateFormatter","options","matches","dateParseRegex","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","getDay","curlength","toString","substring","substr","desig","getHours","dec","retu","timezone","getTimezoneOffset","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","getWeekOfYear","checkTwodigitNumber","latnParseRegex","tVal","curPattern","no","abs","ishour","errorText","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","getCurrencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","symbols","formatRegex","customFormat","getProperNumericSkeleton","isCurrency","isPercent","getSymbolPattern","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","defaultCurrency","nData","pData","replaceBlazorCurrency","getFormatData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","isFinite","intNumberFormatter","negativeDataRegex","p","lastIndexOf","temp","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","text","range","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","toExponential","groupNumbers","nlead","nend","min","max","toPrecision","level1","sep","decimalSymbol","level2","flag","prefix","toFixed","lead","latnRegex","minute","hour","milliseconds","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","patternMatch","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","optional","weekData","weekObject","monthData","hour12","periodValur","tzone","hpattern","parseTimeZoneRegx","pos","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","parseInt","getDateObject","setMilliseconds","y","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","getMinutes","num","retOptions","props_1","curObject","matchString","internalNumberParser","toUpperCase","toLowerCase","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","end","Infinity","NaN","exponent","parseFloat","convertMaxFracDigits","decimalSplitValue","Observer","context","ranArray","boundedEvents","on","property","handler","id","cntxt","notExist","isHandlerPresent","push","off","splice","indexLocation","notify","argument","successHandler","errorHandler","name","blazorCallback","curObject_1","objs","index","isTrigger","obj_1","promise","then","data","isJson","JSON","parse","dateReviver","catch","destroy","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","IntlBase","getActualDateTimeFormat","getNumberPattern","isExcel","getActualNumberFormat","getFirstDayOfWeek","getWeekData","setCulture","blazorCultureFormats","customRegex","fractionRegex","patternRegex","'","dateConverterMapper","firstDayMapper","currencyFormatRegex","curWithoutNumberRegex","typeMapper","0","1","blazorCulture","iType","basicPatterns","dPattern","tPattern","mode","calendartype","blazorDefaultObject","defaultObject","dateString","numSystem","convertMapper","tempString","curFormatMapper","patternMatcher","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","sym","currencyCode","customNumberFormat","integerPart","fractionPart","isCurrencyPercent","parts","actual","symbol","part","loc","3","4","5","C","P","N","A","E","formatSplit","dateObj","actualPattern","tLength","timeZonePattern","options_1","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","minDigits","maxDigits","diff","fractionDigitsPattern","integer","x","minimumIntegerPattern","groupingPattern","cPattern","processSymbol","firstDay","iCulture","aCurrency","rCurrency","iCurrency","pData_1","weeknum","newYear","daynum","getTime","nday","headerRegex","Ajax","async","contentType","emitError","url","send","eventArgs","cancel","httpRequest","Promise","resolve","reject","XMLHttpRequest","onreadystatechange","stateChange","onLoad","onload","onProgress","onprogress","onAbort","onabort","onError","onerror","onUploadProgress","upload","setRequestHeader","beforeSend","onSuccess","failureHandler","reason","onFailure","responseText","dataType","error","readyState","status","statusText","getResponseHeader","responseHeaders","header","headers","exec","getAllResponseHeaders","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","userAgent","version","language","navigator","getEvent","event","events","isPointer","isTouch","isDevice","move","isWindows","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","regX","defineProperty","get","uA","set","enumerable","configurable","info","maxTouchPoints","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","add","eventName","listener","bindTo","intDebounce","debounceListener","eventData","isIE","addEventListener","passive","remove","some","removeEventListener","clearEvents","copyData","shift","trigger","eventProp","eventData_1","event_1","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","template","helper","evalExpResult","varCOunt","localKeys","isClass","singleSpace","cnt","offset","matchStr","rlStr","addNameSpace","trim","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","ignoreList","emptyStrCheck","tempStr","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","getRandomId","random","templateString","compiler","engineObj","component","propName","templateId","isStringTemplate","blazorId","className","childNodes","updateBlazorTemplate","templateName","comp","isEmpty","callBack","updateTemplate","resetBlazorTemplate","templateDiv","getElementById","innerTemplates","getElementsByClassName","tempId","getAttribute","tempElement","setTemplateEngine","classObj","getTemplateEngine","VirtualDOM","Engine","render","simpleRegex","multipleSplitRegex","idClassSelector","selectMapper","assigner","tagName","emptyElements","blockElements","inlineElement","selfClosingElements","fillAttrs","cspElement","nameMapper","startRegex","endRegex","attributeRegex","assignParent","childrens","detach","children","processSelector","selector","curMapper","filter","canPush","existValue","accessElement","ele","selectAll","immediateParent","temp_1","matched","mapper_1","expected","actualValue","concat","ConvertHTMLToJSon","htmlString","isText","results","tagArray","nodeArray","lastVal","getLastValue","contains","all","iterateText","iterateEndTag","iterateStartTag","tagIndex","rest","isSelfTag","attrs","names","valArr","vObj","length_3","cVal","styleSplit","tagObject","attributes","parent_3","node","parent_4","parent_5","arr","properties","extended","styles","style","append","fromElements","toElement","prepend","vDomSelector","_a","iSelector","curColl","length_2","isDescendant","parent_2","curSelector","splitSelector_1","dParent","descendent","_b","dSelector_1","sel","descendentChild","_c","dParent_1","iCurSelector","_d","parent_1","curParent","setStyleAttribute","SVG_REG","createElementNS","setAttribute","addClass","elements","classes","classList","getClassList","classList_1","curClass","removeClass","classList_2","classArr","isVisible","visibility","offsetWidth","isEval","docFrag","createDocumentFragment","insertBefore","firstElementChild","executeScript","script","head","removeChild","iKey","select","needsVDOM","querySelectId","querySelector","charRegex","idList","list","splitId","setId","closest","el","nodeType","addClasses","removeClasses","msMatchesSelector","webkitMatchesSelector","isColEName","Base","isRendered","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","setProperties","isDestroyed","muteOnChange","prevDetection","dataBind","serverDataBind","callChildDataBind","clearChanges","getOwnPropertyNames","newChanges","oldChanges","onPropertyChanged","updateModel","saveChanges","newValue","oldValue","unbind","Uint16Array","msCrypto","crypto","getRandomValues","secret","combineArray","messageHandler","postMessage","setImmediate","moduleClass","getModuleName","ej2_instances","getObject","instance","curKey","defaultValue","getObjectArray","isSetter","isFactory","curType","inst","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexArrayGetter","defCollection","ignore","controlParent","extendFunc","descriptor","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","model_1","getArrayModel","model","ejsAction","isControlParent","arrayFunction","modelObject","Property","target","propertyDescriptor","addPropertyCollection","Complex","Collection","eventDescriptor","finalContext","getParentContext","curText","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","propertyName","__extends","extendStatics","setPrototypeOf","__proto__","__","create","__decorate","decorators","desc","r","getOwnPropertyDescriptor","Reflect","decorate","Animation","_super","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","getModel","elements_1","element_1","delayAnimation","stop","animation","removeAttribute","animationId","frameId","cancelAnimationFrame","applyAnimation","timeStamp","step","timerId","prevTimeStamp","duration","startAnimation","begin","avg","timingFunction","progress","requestAnimationFrame","performance","now","fail","newProp","oldProp","rippleEffect","rippleOptions","done","rippleModel","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","getBoundingClientRect","offsetX","pageX","body","scrollLeft","offsetY","pageY","scrollTop","documentElement","left","right","top","bottom","radius","sqrt","diameter","rippleElement","getComputedStyle","getPropertyValue","transform","removeRipple","rippleElements","opacity","lastPageID","ModuleLoader","loadedModules","inject","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","module","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","modules","usedModules","arg","removableModule_1","mod","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","action","parentKey","complexKeys","isFinal","valueLength","componentCount","lastHistoryLen","versionBasedStatePersistence","Component","randomId","uniqueID","needsID","isReactHybrid","enableRtl","locale","moduleLoader","localObserver","detectFunction","appendTo","enablePersistence","setPersistData","refresh","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","localStorage","getItem","ej2StatePersistenceVersion","mergePersistData","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","setState","currentContext","calls","setItem","getPersistData","renderReactTemplates","clearTemplate","isHistoryChanged","pageID","location","href","history","hash","charCodeAt","addOnPersist","persistObj","objValue","getActualProperties","stringify","ignoreOnPersist","iterateJsonProperties","newObj","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","padding","diffX","prevLeft","prevTop","dragProcessStarted","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","handle","enableTapHold","mobileInitialize","initialize","evt","currentTarget","removeTapholdTimer","tapHoldThreshold","getScrollableParent","axis","tempScrollHeight","scrollHeight","tempScrollWidth","scrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abort","abortSelectors","preventDefault","changedTouches","intCoord","getCoordinates","initialPosition","clientX","clientY","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","styleProp","margin","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","position","getMousePosition","isDragScroll","distance","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","offsetTop","offsetLeft","width","height","offsetHeight","pageYOffset","pageXOffset","innerHeight","innerWidth","queryPositionInfo","rect","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","tLeft","tTop","pagex","pagey","dLeft","dTop","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","tempDraEleTop","dragValue","enableAutoScroll","scrollIntoView","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","pointerEvents","elementFromPoint","oldEle","isdragscroll","dragEle","srcElement","isOffsetParent","cursorAt","sender","reset","draggable","draggedElement","dropIns","getDropInstance","parentElement","drop","eleInst","eleInst_1","Droppable","mouseOver","wireEvents","area","accept","isDrag","isDropArea","canDrop","droppedElement","display","coord","keyCode","KeyboardEvents","keyPressHandler","isAltKey","altKey","isCtrlKey","ctrlKey","isShiftKey","shiftKey","curkeyCode","which","keyConfigs","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","config","configCache","keyData","Number","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","load","localeObject","getConstant","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","point","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","cancelEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","originalEvent","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","overflow","overflowX","overflowY","eTapArgs","pnt","newX","newY","newT","xDist","yDist","removeTags","removeAttrs","attribute","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","sanitize","item","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","attr","hasAttribute","exports","require","sort","fields","isDescending","sortData","isBreakLabel","label","getVisiblePoints","series","tempPoint","points","tempPoints","pointIndex","rotateTextSize","font","angle","chart","box","htmlObject","labelText","dy","tspanElement","renderer","SvgRenderer","textCollection","initialClipRect","size","fontStyle","fontFamily","fontWeight","createText","delayRedraw","redraw","svgObject","measureText","createTSpan","Size","getElement","logBase","log","showTooltip","areaWidth","isTitleOrLegendEnabled","tooltip","inside","withIn","logWithIn","valueType","withInRange","previousPoint","currentPoint","nextPoint","mX2","xValue","xAxis","mX1","mX3","xStart","visibleRange","xEnd","ceil","sum","values","values_1","subtractThickness","thickness","subtractRect","degreeToLocation","degree","center","radian","PI","ChartLocation","cos","sin","degreeToRadian","getRotatedRectangleCoordinates","actualPoints","centerX","centerY","coordinatesAfterRotation","tempX","tempY","rotatedX","rotatedY","isRotatedRectIntersect","minA","maxA","projected","i1","minB","maxB","polygons","polygon","i2","p1","p2","normal","getAngle","atan2","subArray","valueToCoefficient","delta","isInversed","TransformToVisible","yAxis","isInverted","labelPlacement","coefficient","startAngle","CoefficientToVector","valueToPolarCoefficient","primaryXAxis","clipRect","indexFinder","isPoint","ids","Index","dateTimeInterval","visibleLabels","createZoomingLabels","isVertical","arrowLocation","direction","opposedPosition","anchor","chartRect","availableSize","scrollBarHeight","scrollbarSettings","enable","zoomingScrollBar","endLabel","startLabel","labelStyle","findDirection","Rect","drawPath","PathOption","themeStyle","crosshairFill","textElement","TextOption","color","crosshairLabel","withInBounds","bounds","getValueXByPoint","getValueYByPoint","findClipRect","requireInvertedAxis","firstToLowerCase","getMinPointsDelta","seriesCollection","xValues","minVal","seriesMin","minDelta","MAX_VALUE","visible","xAxisName","xMin","xMax","index_1","getAnimationFunction","effect","functionName","currentTime","startValue","endValue","markerAnimate","isLabel","pathAnimation","previousDirection","animateDuration","currentDireciton","startDirections","splitDirections","endDirections","startPath","endPath","directions","appendClipElement","clipPath","clipElement","redrawElement","def","createDefs","triggerLabelRender","tempInterval","argsData","axisLabelRender","isLineBreakLabels","text_1","enableTrim","maxWidth","labelCollection","breakLabels","i_1","lineBreakLabelTrim","maximumLabelWidth","textTrim","VisibleLabels","setRange","minimum","maximum","isZoomSet","zoomFactor","zoomPosition","getActualDesiredIntervalsCount","orientation","desiredIntervals","desiredIntervalsCount","maximumLabels","templateAnimate","isRemove","drawSymbol","shape","isChartControl","control","chartRenderer","shapeOption","isChart","dir","isBulletChart","sizeBullet","targetWidth","lx","ly","stroke","fill","xVal","yVal","renderOption","locX","locY","cartesianlarge","cartesiansmall","getAccumulationLegend","calculateLegendShapes","calculateShapes","Int32Array","accReactTemplate","childElement","isTemplate","datalabelGroup","dataLabel","clientRect","accumulationDataLabelModule","calculateLabelSize","chartReactTemplate","labelIndex","category","dataLabelModule","calculateTemplateLabelSize","marker","createTemplate","content","dataLabelId","templateFn","templateElement","templateComplier","getTemplateFunction","tempObject","elementData","reactCallback","isReact","getFontStyle","measureElementRect","findlElement","getPoint","xLength","yLength","appendChildElement","isCanvas","isAnimate","forceAnimate","isRect","previousRect","existChild","currentRect","setStyle","animateRectElement","isDiv","yValue","animateRedrawElement","replaceChild","stopTimer","timer","isOverlap","containsRect","componentToHex","hex","convertHexToColor","ColorValue","colorNameToHex","isRGBValue","g","getSaturationColor","factor","colorCode","rgb","round","stringToNumber","containerSize","setElementAttributes","isMinus","seriesClipRect","labelSize","isRotatedLabelIntersect","renderOptions","labelRotation","baseLine","transX","transY","fontSize","textAnchor","CanvasRenderer","calculateSize","containerWidth","clientWidth","containerHeight","clientHeight","stockChart","marginHeight","tooltipSpace","periodHeight","periodSelectorSettings","periods","enableGrouping","disableRangeSelector","createSvg","canvasRender","enableCanvas","chartObject","selectorObject","createCanvas","getTitle","title","titleCollection","textOverflow","textWrap","titlePositionX","titleStyle","textAlignment","currentLabel","maximumWidth","blazorTemplatesReset","annotations","StackValues","startValues","endValues","RectOption","border","rx","ry","dashArray","ImageOption","preserveAspectRatio","CircleOption","cx","cy","Thickness","PointData","lierIndex","AccPointData","rowDataBound","queryCellInfo","headerCellInfo","actionBegin","actionComplete","actionFailure","dataBound","rowSelecting","rowSelected","rowDeselecting","rowDeselected","cellSelecting","cellSelected","cellDeselecting","cellDeselected","columnSelecting","columnSelected","columnDeselecting","columnDeselected","columnDragStart","columnDrag","columnDrop","beforePrint","printComplete","detailDataBound","batchAdd","batchCancel","batchDelete","recordDoubleClick","recordClick","beforeDataBound","resizeStart","onResize","resizeStop","checkBoxChange","beforeCopy","beforePaste","beforeAutoFill","filterChoiceRequest","filterAfterOpen","filterBeforeOpen","filterSearchBegin","initialLoad","initialEnd","dataReady","contentReady","uiUpdate","onEmpty","inBoundModelChanged","modelChanged","colGroupRefresh","headerRefreshed","searchComplete","groupComplete","groupAggregates","refreshFooterRenderer","rowSelectionComplete","cellSelectionComplete","beforeCellFocused","cellFocused","keyPressed","click","columnVisibilityChanged","scroll","columnWidthChanged","columnPositionChanged","rowsAdded","rowsRemoved","columnDragStop","headerDrop","dataSourceModified","refreshComplete","dblclick","toolbarRefresh","bulkSave","autoCol","tooltipDestroy","updateData","preventBatch","crudAction","addDeleteAction","doubleTap","freezeRender","filterDialogCreated","filterMenuClose","initForeignKeyColumn","getForeignKeyData","generateQuery","showEmptyGrid","foreignKeyData","dataStateChange","dataSourceChanged","rtlUpdated","beforeFragAppend","frozenHeight","textWrapRefresh","recordAdded","cancelBegin","editNextValCell","hierarchyPrint","expandChildGrid","printGridInit","rowPositionChanged","partialRefresh","selectVirtualRow","columnsPrepared","cBoxFltrBegin","cBoxFltrComplete","fltrPrevent","filterCboxValue","componentRendered","detailIndentCellInfo","virtaulCellFocus","virtualScrollEdit","editReset","getVirtualData","refreshInfiniteModeBlocks","resetInfiniteBlocks","infiniteScrollHandler","infinitePageQuery","infiniteShowHide","appendInfiniteContent","removeInfiniteRows","setInfiniteCache","infiniteEditHandler","closeFilterDialog","resetColumns","setGroupCache","lazyLoadScrollHandler","groupCollapse","beforeCheckboxRenderer","refreshHandlers","setFreezeSelection","beforeRefreshOnDataChange","immutableBatchCancel","checkScrollReset","preventFrozenScrollRefresh","refreshInfiniteCurrentViewData","filterDialogClose","setCustomFilterHeader","refreshCustomFilterOkBtn","refreshCustomFilterClearBtn","renderResponsiveCmenu","filterCmenuSelect","customFilterClose","setFullScreenDialog","refreshExpandandCollapse","ResponsiveDialogRenderer","serviceLocator","sortedCols","sortPredicate","closeCustomDialog","renderResponsiveContextMenu","renderCustomFilterDiv","customExFilterClose","isCustomDlgRender","customResponsiveDlg","closeBtn","filterModule","closeDialog","saveBtn","disabled","backBtn","localeObj","customExcelFilterParent","ResponsiveDialogAction","isFilter","isOpen","firstChild","filterClearBtn","span","Button","cssClass","isFiltered","getHeaderTitle","renderResponsiveContent","col","gObj","filterParent","cols","getColumns","customColumnDiv","sortBtnParent","filteredCols","filterSettings","columns","field","cDiv","headerText","isSort","getSortedFieldsAndDirections","button","sortSettings","onclick","sortButtonClickHandler","divIcon","iconSpan","customFilterColumnClickHandler","parentsUntil","allowMultiSorting","isSortApplied","resetSortButtons","txt","textContent","setSortedCols","buttons","getCurrentSortedFields","getColumnByField","isRowResponsive","showResponsiveDialog","colDiv","isDialogClose","clearCustomFilter","removeCustomDlgFilterEle","rowRenderingMode","filteredCol","renderResponsiveDialog","enableAdaptiveUI","setFilterModel","openDialog","createOptions","show","maxHeight","setTopToChildDialog","renderCustomFilterDialog","customFilterDlg","dialogEle","top_1","outerDiv","getDialogOptions","isCustomFilter","Dialog","isModal","showCloseIcon","closeOnEscape","dialogOpen","created","dialogCreated","beforeDialogClose","animationSettings","renderResponsiveHeader","addBiggerDialog","sortField","sortDirection","closeResponsiveDialog","closeCustomFilter","sortColumn","clearSorting","isEdit","primaryKeyValue","isAdd","getDialogName","getButtonText","titleDiv","dialogHdrBtnClickHandler","id_1","clearBtn","clearFiltering","filterClear","endEdit","applyCustomFilter","mainfilterdiv","destroyCustomFilterDialog","elem","customEle","doesImplementInterface","checkFor","valueAccessor","column","DataUtil","getUpdateUsingRaf","updateFunction","iterateArrayOrObject","collection","predicate","pred","iterateExtend","array","baseExtend","templateCompiler","baseTemplateComplier","setStyleAndAttributes","customAttributes","copyAttr","literals","setColumnIndex","columnModel","ind","prepareColumns","autoWidth","Column","allowReordering","foreignKeyValue","foreignKeyField","setCssInGridPopUp","popUp","isBottomTail","popUpSpan","targetPosition","popup","getPosition","getPopupLeftPosition","isID","getActualPropFromColl","coll","getUid","appendChildren","calculateAggregate","customAggregate","aggregates","rowHeight","Global","getScrollBarWidth","divNode","cssText","getRowHeight","table","isActionPrevent","dlg","editSettings","showConfirmDialog","wrap","setFormatter","fmtr","getService","getFormatFunction","setParser","getParserFunction","addRemoveActiveClasses","cells","getFilterMenuPostion","dialogObj","grid","elementVisible","newpos","dlgWidth","calculateRelativeBasedPosition","leftPos","toogleCheckbox","input","previousSibling","checked","setChecked","createCboxWithWrap","removeAddCboxClasses","refreshForeignData","row","getForeignData","isForeignKey","lValue","fField","query","Query","fdata","dataSource","DataManager","json","columnData","where","getDatePredicate","operator","matchCase","executeLocal","getColumnByForeignKeyValue","filterObject","datePredicate","prevDate","nextDate","prevObj","nextObj","Predicate","setSeconds","getSeconds","predicateSt","predicateEnd","and","or","ejpredicate","renderMovable","frzCols","isRowDragable","mEle","childElementCount","isGroupAdaptive","enableVirtualization","groupSettings","isVirtualAdaptive","object","getPrintGridModel","hierarchyPrintMode","printGridModel","isFrozen","isFrozenGrid","getFrozenColumns","Print","printGridProp","printMode","childGrid","expandedRows","rows_1","getRowsObject","isExpand","isDetailRow","allowPaging","pageSettings","currentPage","pageSize","gridModel","getExpandedState","extendObjWithFn","getPrototypeOf","getPrototypesOfObj","cpy","cln","measureColumnDepth","depth","checkDepth","indices","refreshFilteredColsUid","getForeignKeyColumns","eventPromise","state","adaptr","UrlAdaptor","dm","adaptor","processQuery","getStateEventArgument","Deferred","deffered","ispercentageWidth","getVisibleColumns","percentageCol","undefinedWidthCol","showGroupedColumn","resetRowIndex","rows","rowElms","startIndex","isDataRow","isAltRow","enableAltRow","renderModule","emptyRow","compareChanges","changes","keyField","newArray","dataToBeUpdated","reduce","o","assign","k","setRowElements","contentModule","rowElements","cls","getFrozenMode","freezeRowElements","frozenRightRowElements","gridActionHandler","force","rowObj","getCellsByTableName","rowIndex","getFreezeTableName","getMovableDataRows","getFrozenRightDataRows","getDataRows","getCellByColAndRowIndex","getFrozenLeftCount","movable","getMovableColumnsCount","numberFormat","intl","mtch_1","dialogs","performComplexDataOperation","mapObject","returnObj","duplicateMap","rootID","svgLink","rootId","getOptionValue","svgObj","setSVGSize","canvasTranslate","path","drawLine","line","drawRectangle","rectangle","drawCircle","circle","drawPolyline","polyline","drawEllipse","ellipse","drawPolygon","drawImage","img","setAttributeNS","isTSpan","tSpan","createTitle","createClipPath","createForeignObject","foreignObject","createGroup","group","createPattern","createRadialGradient","colors","colorName","colorStop","newOptions","fx","fy","drawGradient","createLinearGradient","x1","y1","x2","y2","gradientType","defs","gradient","stop_1","drawClipPath","drawCircularClipPath","canvasObj","ctx","getContext","setCanvasSize","setAttributes","lineWidth","dashArrayString","setLineDash","strokeStyle","save","beginPath","moveTo","lineTo","restore","canvasCtx","cornerRadius","translate","globalAlpha","drawCornerRadius","fillStyle","fillRect","arcTo","closePath","dataSplit","innerR","q1","q2","quadraticCurveTo","c1","c2","c3","c4","bezierCurveTo","arc","counterClockWise","textAlign","baseline","textBaseline","txtlngth","rotate","fillText","circumference","scaleX","scaleY","scale","imageObj","Image","myGradient","setGradientValues","newColorStop","stopColor","addColorStop","updateCanvasAttributes","dataUrl","img_1","clearRect","canvasClip","clip","canvasRestore","breakText","textArray","whiteSpace","lineHeight","rX","rY","arrowPadding","tipX","tipY","tipRadius","Side","isRight","isBottom","CustomizeOption","TooltipLocation","TextStyle","TooltipBorder","AreaBounds","ToolLocation","Tooltip","initPrivateVariable","removeSVG","createTooltipElement","theme","tooltipFill","tooltipBoldLabel","tooltipLightLabel","tooltipHeaderLine","getTooltipThemeColor","formattedText","isFirst","markerPoint","templateObject","blazorTemplate","fadeOuted","updateTemplateFn","areaBounds","renderText","markerSide","renderTooltipElement","drawMarker","markerSize","textElements","shared","groupElement","pathElement","shapes","count","markerGroup","marginX","palette","tooltipDiv","tipLocation","isTop","isLeft","elementSize","marginY","sharedTooltipLocation","tooltipLocation","inverted","clipBounds","headerSize","isWrap","wrappedText","textStyle","pathElement_1","pointRect","enableAnimation","updateDiv","animateTooltipDiv","tooltipPlacement","enableShadow","shadowId","shadow","defElement","changeText","findFormattedText","isRender","lines","tspanOption","isHeader","subWidth","tspanStyle","leftSpace","rightSpace","headerContent","isBoldTag","headerWidth","isLeftSpace","isRightSpace","headerSpace","isRow","isColumn","subStringLength","markerPadding","labelColor","withoutHeader","pointsLength","isTextWrap","len_1","isRtlText","width_1","firstElement","controlInstance","tooltipRect","tooltipRendered","rect1","thisObject_1","tooltipRect1","getCurrentPosition","symbolLocation","clipX","clipY","markerHeight","boundsX","boundsY","currenDiff","fadeOut","tooltipElement","opacity_1","tooltipGroup_1","progressAnimation","endAnimation","tooltipGroup","consts","GroupGuid","endsWith","startsWith","fnSort","order","fnAscending","fnDescending","localeCompare","extractFields","jsonArray","newData","level","groupDs","isLazyLoad","jsonData","items","indx","childLevels","grouped","groupedArray","records","_loop_2","this_2","getVal","tempObj","_loop_3","fn","aggs","buildHierarchy","fKey","from","lookup","pKey","grp","fKeyData","getFieldList","copyObj","ds","comparer","middle","ignoreDiacritics","diacritics","fieldName","current","callAdaptorFunction","fnName","param1","param2","getAddParams","adp","req","reqParams","isPlainObject","isCors","xhr","getGuid","rand","Uint8Array","isNull","getItemFromComparer","castRequired","distinct","requiresCompleteRecord","tmp","serverTimezoneOffset","timeZoneHandling","average","truecount","falsecount","operatorSymbols","odBiOperator","odUniOperator","odv4UniOperator","fnOperators","equal","ignoreCase","ignoreAccent","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","notnull","isnull","startswith","endswith","processSymbols","processOperator","parseJson","jsonText","jsonReviver","iterateAndReviveArray","iterateAndReviveJson","keys_2","ms","offSet","dateParse","toTimeZone","isUTC","utcFormat","hrs","mins","addSelfOffset","isGuid","replacer","jsonReplacer","arrayReplacer","keys_3","toJSON","jsonDateReplacer","toUTC","utc","unix","toLocalTime","datefn","differenceString","localtimefn","norm","_toPropertyKey","hint","_typeof","prim","_Symbol$toPrimitive","TypeError","String","_toPrimitive","ADDITIONAL_PROPERTY_FLAG","widgetMap","checkbox","radio","hidden","string","password","email","hostname","ipv4","ipv6","uri","textarea","datetime","file","number","updown","checkboxes","files","getDefaultRegistry","widgets","definitions","rootSchema","formContext","getSchemaType","schema","guessType","additionalProperties","includes","find","getWidget","widget","registeredWidgets","mergeOptions","Widget","MergedWidget","defaultOptions","defaultProps","_ref","_ref$options","_objectWithoutProperties","React","_extends","_objectSpread","ReactIs","registeredWidget","_registeredWidget","hasWidget","computeDefaults","_schema","parentDefaults","rawFormData","includeUndefinedValues","formData","defaults","mergeObjects","refSchema","findSchemaDefinition","$ref","resolvedSchema","resolveDependencies","isFixedItems","itemSchema","idx","_Array$isArray","oneOf","getMatchingOption","anyOf","_Object$keys","acc","computedDefault","additionalItems","minItems","isMultiSelect","defaultsLength","defaultEntries","fillerSchema","fillerEntries","getDefaultFormState","retrieveSchema","mergeDefaultsWithFormData","getUiOptions","uiSchema","console","warn","_defineProperty","getDisplayLabel","_uiOptions$label","displayLabel","isFilesArray","thing","File","obj2","concatArrays","asNumber","n","valid","_Number$isNaN","orderProperties","arrayToHash","prev","curr","propertyHash","orderFiltered","orderHash","restIndex","complete","_toConsumableArray","isConstant","isSelect","altSchemas","every","uniqueItems","itemsSchema","allowAdditionalItems","optionsList","enumNames","toConstant","origRef","decodeURIComponent","jsonpointer","stubExistingAdditionalProperties","resolveSchema","resolveReference","allOf","allOfSubschema","$refSchema","localSchema","mergeAllOf","_resolvedSchema","resolvedSchemaWithoutAllOf","hasAdditionalProperties","_schema$dependencies","dependencies","processDependencies","dependencyKey","dependencyValue","remainingDependencies","withDependentProperties","withDependentSchema","additionallyRequired","required","_Array$from","_Set","_retrieveSchema","mergeSchemas","resolvedOneOf","subschema","validSubschemas","conditionPropertySchema","conditionSchema","validateFormData","errors","_subschema$properties","dependentSubschema","dependentSchema","withExactlyOneSubschema","union","isArguments","deepEquals","ca","cb","global","multiline","lastIndex","ka","kb","cal","pop","shouldRender","nextProps","nextState","toIdSchema","idPrefix","idSchema","$id","fieldId","toPathSchema","pathSchema","$name","__rjsf_additionalProperties","parseDateString","includeTime","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","toDateString","_ref2","_ref2$hour","_ref2$minute","_ref2$second","time","utcTime","UTC","utcToLocal","jsonDate","yyyy","pad","MM","dd","hh","mm","ss","SSS","getMilliseconds","localToUTC","dataURItoBlob","dataURI","splitted","param","binary","atob","blob","Blob","rangeSpec","spec","multipleOf","requiresAnyOf","augmentedSchema","shallowClone","isValid","CellType","RenderType","ToolbarItem","ResponsiveToolbarAction","animationComplete","textRender","pointRender","sharedTooltipRender","seriesRender","axisLabelClick","axisRangeCalculated","tooltipRender","chartMouseMove","chartMouseClick","pointClick","pointDoubleClick","pointMove","chartMouseLeave","chartMouseDown","chartMouseUp","resized","beforeResize","regSub","afterExport","ownKeys","enumerableOnly","getOwnPropertySymbols","_objectSpread2","getOwnPropertyDescriptors","defineProperties","_classCallCheck","Constructor","_defineProperties","writable","_createClass","protoProps","staticProps","Connector","Font","Border","Offset","ChartArea","Margin","ContainerPadding","Indexes","CornerRadius","seriesIndex","EmptyPointSettings","DragSettings","TooltipSettings","Theme","tooltipLabelFont","Periods","PeriodSelectorSettings","_getPrototypeOf","_isNativeReflectConstruct","construct","sham","Proxy","Symbol","iterator","_possibleConstructorReturn","self","assertThisInitialized","_createSuper","Derived","Super","NewTarget","_setPrototypeOf","_inherits","subClass","superClass","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","err","pid","process","last","default","suffix","_assertThisInitialized","ReferenceError","subQuery","isChild","distincts","queries","fromTable","lookups","expands","sortedColumns","groupedColumns","lazyLoad","setKey","using","dataManager","execute","always","executeQuery","cloned","subQuerySelector","isCountRequired","tableName","addParams","expand","tables","search","searchKey","fieldNames","sortBy","isFromGroup","sortByForeignKey","sorts","filterQueries","sortByDesc","page","pageIndex","take","nos","skip","hierarchy","selectorFn","foreignKey","requiresCount","aggregate","q","filterQueryLists","singles","filtered","isComplex","condition","predicates","combinePredicates","combine","fromJson","fromJSONData","validate","record","isAnd","toJson","preds","core","__e","excluded","sourceKeys","sourceSymbolKeys","propertyIsEnumerable","historyContext","createContext","createNamedContext","Router","computeRootMatch","isExact","pathname","componentDidMount","_pendingLocation","componentWillUnmount","unlisten","RouterContext","staticContext","HistoryContext","cache","cacheCount","matchPath","exact","strict","sensitive","cacheKey","pathCache","regexp","pathToRegexp","compilePath","memo","Route","addLeadingSlash","stripBasename","basename","createURL","createPath","staticHandler","methodName","invariant","noop","t","l","toStringTag","__esModule","u","original","watch","uuid","expanded","noClamp","ssr","clickHandler","debounced","clampLines","innerText","moveMarkers","getEllipsis","ellipsis","moreText","lessText","onClick","stopPropagation","innerElement","ref","getClassName","getButton","propTypes","isRequired","bool","resetWarningCache","func","any","arrayOf","elementType","instanceOf","objectOf","oneOfType","checkPropTypes","PropTypes","getSeriesColor","getThemeColor","darkBackground","axisLabel","axisTitle","axisLine","majorGridLine","minorGridLine","majorTickLine","minorTickLine","chartTitle","legendLabel","background","areaBorder","errorBar","crosshairLine","markerShadow","selectionRectFill","selectionRectStroke","selectionCircleStroke","axisLabelFont","axisTitleFont","chartTitleFont","chartSubTitleFont","crosshairLabelFont","legendLabelFont","legendTitleFont","stripLineLabelFont","stockEventFont","hide","has","$export","own","IS_FORCED","F","IS_GLOBAL","G","IS_STATIC","S","IS_PROTO","IS_BIND","B","IS_WRAP","W","expProto","virtual","R","U","disableHtmlEncode","allowSorting","allowResizing","allowFiltering","allowGrouping","showColumnMenu","enableGroupByFormat","allowEditing","showInColumnChooser","edit","allowSearching","autoFit","getEditTemplate","editTemplateFn","getFilterTemplate","filterTemplateFn","editType","valueFormatter","ValueFormatter","commands","commandsTemplate","headerTemplate","headerTemplateFn","itemTemplate","fltrTemplateFn","editTemplate","filterTemplate","isForeignColumn","sortComparer","a_1","xObj","yObj","getSortDirection","setSortDirection","freezeTable","refreshReactColumnTemplateByUid","getFormatter","formatFn","getParser","parserFn","getColumnTemplate","getHeaderTemplate","getFilterItemTemplate","getDomSetter","CommandColumnModel","defaulthtmlkeys","delayUpdate","ComponentBase","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","refreshChild","canDelayUpdate","renderReactComponent","portals","reactElement","shouldComponentUpdate","updateProperties","silent","dProps","propkey","isClassName","htmlattributes","compareValues","refreshProperties","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","controlAttributes","reactUid","onChange","syntheticEvent","nativeEvent","value1","value2","tempVal","tempVal2","compareObjects","oldProps","newProps","diffArray","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","changedProps_1","propInstance","callback","forceUpdate","templateNames","tempPortal","indexCount","propIndexCount","portal","childCache","childs_1","toArray","ifield","getChildType","childProps","getChildProps","isDirective","moduleName","subChild","matcher","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","services","applyMixins","derivedClass","baseClass","ComplexBase","stringCompiler","cEle","actTemplate","actData","isLegacyTemplate","ReactDOM","rele","elementRect","popupRect","parentDocument","fixedParent","fixedElement","anchorPos","tempAnchor","calculatePosition","currentElement","positionX","positionY","targetValues","ownerDocument","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","__g","store","USE_SYMBOL","DoubleRange","mStart","mEnd","_arrayLikeToArray","arr2","iter","minLen","_inheritsLoose","isAbsolute","charAt","spliceOne","resolvePathname","to","hasTrailingSlash","toParts","fromParts","isToAbs","isFromAbs","mustEndAbs","up","valueOf","valueEqual","aValue","bValue","stripLeadingSlash","hasBasename","stripTrailingSlash","createLocation","currentLocation","hashIndex","searchIndex","parsePath","decodeURI","URIError","locationsAreEqual","createTransitionManager","prompt","listeners","setPrompt","nextPrompt","confirmTransitionTo","getUserConfirmation","appendListener","isActive","notifyListeners","_len","_key","canUseDOM","getConfirmation","confirm","getHistoryState","createBrowserHistory","globalHistory","canUseHistory","ua","supportsHistory","needsHashChangeListener","_props","_props$forceRefresh","forceRefresh","_props$getUserConfirm","_props$keyLength","keyLength","getDOMLocation","historyState","_window$location","createKey","transitionManager","handlePopState","isExtraneousPopstateEvent","handlePop","handleHashChange","forceNextPop","ok","fromLocation","toLocation","toIndex","allKeys","fromIndex","go","revertPop","initialLocation","createHref","listenerCount","checkDOMListeners","isBlocked","pushState","prevIndex","nextKeys","replaceState","goBack","goForward","block","unblock","listen","HashPathCoders","hashbang","encodePath","decodePath","noslash","slash","stripHash","getHashPath","replaceHashPath","createHashHistory","_props$hashType","hashType","_HashPathCoders$hashT","ignorePath","encodedPath","prevLocation","allPaths","baseTag","pushHashPath","nextPaths","clamp","lowerBound","upperBound","createMemoryHistory","_props$initialEntries","initialEntries","_props$initialIndex","initialIndex","entries","entry","nextIndex","nextEntries","canGo","it","anObject","IE8_DOM_DEFINE","toPrimitive","dP","O","Attributes","AccumulationAnnotationSettings","AccumulationDataLabelSettings","PieCenter","AccPoints","region","labelRegion","labelVisible","regions","isExplode","isClubbed","isSliced","isLabelUpdated","initialLabelRegion","AccumulationSeries","clubbedPoints","sumOfPoints","isRectSeries","rightSidePoints","leftSidePoints","refreshDataManager","accumulation","dateSource","dataModule","getData","dataManagerSuccess","resultData","getPoints","seriesCounts","visibleSeries","refreshChart","findSumOfPoints","sumOfClub","palettes","clubValue","groupTo","setPoints","isClub","pushPoints","lastGroupTo","clubPoint_1","generateClubPoint","pointsLength_1","explode","explodeAll","explodeIndex","clubPoint","originalText","sliceRadius","groupMode","yName","xName","percentage","legendImageUrl","pointColorMapping","tooltipMappingName","separatorY","useGroupingSeparator","setAccEmptyPoint","renderSeries","seriesGroup","renderPoints","animateSeries","renderDataLabel","findMaxBounds","labelBound","accumulationBound","pieSeriesModule","accumulationLegendModule","explodeDistance","pointId","emptyPointSettings","renderPoint","getSeriesElement","findAreaRect","firstQuarter","secondQuarter","showZero","midAngle","drawDataLabels","dataLabelCallBack","totalbound","bound","previous","next","getSeriesFromIndex","visibleSeries_1","pointByIndex","points_1","ajv","createAjvInstance","formerCustomFormats","formerMetaSchema","Ajv","errorDataPath","allErrors","multipleOfPrecision","schemaId","unknownFormats","addFormat","toErrorSchema","errorSchema","toPath","_iteratorNormalCompletion","_didIteratorError","_iteratorError","_step","_iterator","_getIterator","segment","__errors","toErrorList","errorList","createErrorHandler","addError","unwrapErrorHandler","transformAjvErrors","dataPath","keyword","schemaPath","customValidate","transformErrors","additionalMetaSchemas","customFormats","newMetaSchemas","newFormats","addMetaSchema","formatName","validationError","noProperMetaSchema","$schema","userErrorSchema","newErrorSchema","newErrors","freeGlobal","freeSelf","root","fromView","toView","aFunction","that","Row","axes","nearSizes","farSizes","computeSize","internalVisibility","findTickSize","crossInAxis","findLabelSize","lineStyle","MajorGridLines","MinorGridLines","AxisLine","MajorTickLines","MinorTickLines","CrosshairTooltip","Axis","axisBottomLine","intervalDivs","isStack100","crossAt","updatedRect","multiLevelLabelHeight","isIntervalInDecimal","titleSize","crossAxis","tickPosition","isInside","majorTickLines","innerPadding","isHorizontal","labelPosition","titlePadding","labelPadding","maxLabelSize","placeNextToAxisLine","findDifference","updateCrossValue","calculateVisibleRangeOnZooming","baseRange","actualRange","zoomModule","doubleRange","calculateAxisRange","enableAutoIntervalOnBothAxis","zoomSettings","visiblePoints","axisCollections","yMin","yMax","baseModule","calculateRangeAndInterval","_e","_f","_g","triggerRangeRender","getRangePadding","rangePadding","getMaxLabelWidth","pointX","isAxisLabelBreak","previousEnd","isIntersect","labelIntersectAction","breakLabelSize","rotatedLabel","width1","edgeLabelPlacement","findMultiRows","result1","height_1","isHorizontalAngle","multiLevelLabelModule","multiLevelLabels","getMultilevelLabelsHeight","currentX","isBreakLabels","width2","getModule","Double","StripLineSettings","MultiLevelLabels","LabelBorder","ScrollbarSettings","Adaptor","requestType","pvt","processResponse","JsonAdaptor","countFlg","keyCount","agg","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","onPage","formGroupResult","onWhere","aggQuery","batchRequest","deletedRecordsLen","deletedRecords","addedRecords","insert","changedRecords","update","onAggregates","onSearch","onSortBy","fnCompare","onGroup","onRange","onTake","onSkip","onSelect","hierarchyFilters","getQueryRequest","request","groups","filters","searches","getFiltersFrom","getRequestQuery","pvtData","convertToQueryString","request1","selects","handleTimeZone","requests","formRemoteGroupedData","getAggregateResult","childLevel","getGroupedRecords","hasRecords","childGroupedRecords","batchUrl","crudUrl","removeUrl","changed","added","deleted","insertUrl","keyColumn","updateUrl","predicats","aggregateData","isServerGrouping","groupQuery","ODataAdaptor","multipartAccept","batch","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","guid","returnValue","getField","encodeURIComponent","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","reverse","onCount","settings","overrideMimeType","rootUrl","dataUrls","resourceTableName","dataCopy","emptyAndBatch","processBatchResponse","versionCheck","requiresFormat","keys_4","localTimeReplacer","convertObj","localTime","compareAndRemove","initialGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","stat","generateBodyContent","org","method","cIdx","jsonObj","exVal","changeGuid","RemoteSaveAdaptor","ODataV4Adaptor","isDate","onExpand","selected","exArr","ex","onDistinct","distinctFields","WebApiAdaptor","host","Count","Items","WebMethodAdaptor","updateKey","AjaxAdaptor","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","isCrudAction","isInsertAction","cacheAdaptor","guidId","forDel","requestTime","removeItem","generateKey","currentFilter","newQuery","cachedItems","crossDomain","createDesc","defined","iteratee","identity","overRest","setToString","offline","timeTillExpiration","cachingPageSize","enableCaching","jsonp","defaultQuery","isDataAvailable","setDefaultQuery","isAjaxAdaptor","makeRequest","getDeferedArgs","nextTick","extendRequest","fnSuccess","fnFail","processData","isSelector","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","subUrl","childReq","subData","ajaxReqOption","virtualRecords","ajax_1","pResult","cResult","doAjaxRequest","deff_1","ajax_2","successFunc","ajaxDeffered","failureFunc","ajaxFunc","ajax_3","IObject","getRawTag","objectToString","symToStringTag","baseIsNative","isFunction","isLength","Location","LegendSettings","BaseLegend","fivePixel","rowCount","columnCount","pageButtonSize","pageXCollections","maxColumns","isTrimmed","backwardArrowOpacity","forwardArrowOpacity","arrowWidth","arrowHeight","legendTitleCollections","isTitle","currentPageNumber","legendRegions","pagingRegions","legend","legendSettings","legendID","isBulletChartControl","bulletChart","calculateLegendBounds","legendBounds","library","getLegendBounds","containerPadding","getLocation","alignment","setBounds","computedWidth","computedHeight","titleHeight","titlePosition","legendTitleSize","isPaging","enablePages","calculateLegendTitle","maxItemHeight","labelIns","ticklIns","categoryFieldValue","categoryField","legendHeight","legendWidth","alignLegend","legendSize","renderLegend","firstLegend","findFirstLegendPosition","legendCollections","titlePlusArrowWidth","upArrowHeight","textSize","shapeHeight","legendGroup","legendTranslateGroup","createLegendElements","requireLegendBounds","legendSeriesGroup","shapeWidth","isRtlEnabled","textOptions","totalPages","textPadding","shapePadding","previousLegend","bottomSapce","legendOption","accessbilityText","generateId","tabIndex","description","getRenderPoint","renderSymbol","toggleVisibility","selectionMode","highlightMode","renderPagingElements","legendCollection","legendCollection_1","maximumTitleWidth","renderLegendTitle","topPadding","legendTitleTextOptions","legendItemsGroup","clippath","pagingClipRect","borderColor","symbolColor","markerShape","strokewidth","isCustomBorder","seriesBorder","regionPadding","symbolOption","translatePage","markerVisibility","fontcolor","textOption","pageTextElement","paginggroup","iconSize","clipPathHeight","titleWidth","totalNoOfPages","calTotalPage","pagingText","pageNumber","changePage","pageUp","backwardArrow","forwardArrow","pageText","hideArrow","showArrow","arrowElement","mouseX","mouseY","targetId","clearTooltip","LegendOptions","ChartAnnotationSettings","MultiLevelCategories","ScrollbarSettingsRange","targetContainer","fit","viewPortElement","X","Y","elemData","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","topCollideCheck","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","flip","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","removeProperty","edge","updateElementData","setPosition","leftFlip","deepCheck","collideSide","topFlip","setPopup","eStatus","getTargetContainerLeft","getTargetContainerTop","windowWidth","_objectWithoutPropertiesLoose","$at","iterated","_t","other","isSymbol","checkDataType","strictNumbers","negate","EQUAL","AND","OK","NOT","checkDataTypes","dataTypes","code","types","toHash","null","coerceToTypes","optionCoerceTypes","COERCE_TO_TYPES","getProperty","escapeQuotes","ucs2length","varOccurences","dataVar","varReplace","expr","schemaHasRules","rules","schemaHasRulesExcept","exceptKeyword","schemaUnknownRules","toQuotedString","getPathExpr","currentPath","jsonPointers","joinPaths","getPath","escapeJsonPointer","$data","lvl","paths","jsonPointer","JSON_POINTER","RELATIVE_JSON_POINTER","segments","unescapeJsonPointer","unescapeFragment","escapeFragment","IDENTIFIER","SINGLE_QUOTE","AccumulationBase","pieCenter","pieRadius","pieLabelRadius","labelRadius","isCircular","isVariousRadius","isRadiusMapped","processExplode","explodePoints","deExplodeAll","invokeExplode","pointExplode","accumulationSelectionModule","selectedDataIndexes","animationDuration","deExplodeSlice","clubPointsExploded","clubPointExplode","getSum","total","explodeSlice","sliceId","lastChild","performAnimation","setTranslate","setElementTransform","endX","endY","isReverse","ChartData","currentPoints","previousPoints","insideRegion","drawType","dragSettings","isTransposed","markerWidth","getRectPoint","isSelected","selectionModule","rectPoints","fromCenterX","fromCenterY","clickAngle","endAngle","distanceFromCenter","arcAngle","isScrolling","regionData","chartAreaType","currentXPosition","pow","innerRadius","isPointInThresholdRegion","checkRegionContainsPoint","regionRect","isBar","getClosest","xData","xData_1","getClosestX","ColumnWidthService","setWidthToColumns","totalColumnsWidth","indexes","getColumnIndexesInView","wFlag","enableColumnVirtualization","setColumnWidth","detailTemplate","getTableWidth","setMinwidthBycalculation","tWidth","difference","tmWidth","collection_1","minWidth","isWidthUndefined","setUndefinedColumnWidth","setWidth","getColumnIndexByField","getIndentCount","columnIndex","getNormalizedColumnIndex","cWidth","getWidth","tgridWidth","setWidthToTable","clear","headerCol","getHeaderTable","getContentTable","fWidth","isDraggable","contentCol","mHdr","getHeaderContent","mCont","getContent","freezeLeft","getFrozenLeftColumnsCount","freezeRight","getFrozenRightColumnsCount","movableCount","isColFrozen","isXaxis","colGroup","frHdr","getFrozenRightHeader","getColumnLevelFrozenColgroup","frCont","editTableCol","refreshFrozenScrollbar","frzMode","freeze","frozenScrollbar","movableScrollbar","frozencontent","movableContent","frozenWidth","movableWidth","frozenRightScrollbar","frozenRightWidth","placeHolder","getMovableVirtualContent","getSiblingsHeight","getHeightFromDirection","sibling","isWidUndefCount","columns_1","calcMovableOrFreezeColWidth","tableType","setWidthToFrozenRightTable","freezeWidth","isAutoResize","headerTbl","cntTbl","setWidthToFrozenLeftTable","setWidthToMovableTable","isColUndefined","isWidthAuto","setWidthToFrozenEditTable","setWidthToMovableEditTable","resizeSettings","PositionData","CLASSNAMES","Popup","zIndex","setEnableRtl","refreshPosition","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","resolveCollision","checkCollision","orientationOnChange","getRelateToElement","scrollRefresh","relateToElement","relateTo","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","isElementVisible","checkGetBoundingClientRect","win","windowView","scrollY","scrollX","outerWidth","outerHeight","elementView","reposition","collision","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","targetType","callFlip","callFit","viewPortRect","horz","vert","animationOptions","relativeElement","zIndexElement","getZindexPartial","showAnimation","hideAnimation","overflowRegex","parentStyle","parentZindex","defaultView","childrenZindex","isEqualNode","siblingsZindex","finalValue","currentZindexValue","bitmap","TAG","tag","$keys","enumBugKeys","toInteger","Iterators","TO_STRING_TAG","DOMIterables","NAME","proto","baseGetTag","isObjectLike","baseIsArguments","objectProto","DataView","Map","Set","WeakMap","toSource","dataViewCtorString","mapCtorString","promiseCtorString","setCtorString","weakMapCtorString","getTag","ArrayBuffer","Ctor","ctorString","stubFalse","freeExports","freeModule","Buffer","isBuffer","isArrayIter","toLength","getIterFn","BREAK","RETURN","iterable","ITERATOR","iterFn","assignValue","baseAssignValue","customizer","isNew","arrayLikeKeys","baseKeys","isArrayLike","baseKeysIn","checkDCE","__REACT_DEVTOOLS_GLOBAL_HOOK__","px","dPs","IE_PROTO","Empty","createDict","iframeDocument","iframe","contentWindow","lt","Properties","isKey","stringToPath","nativeCreate","getNative","listCacheClear","listCacheDelete","listCacheGet","listCacheHas","listCacheSet","ListCache","eq","isKeyable","__data__","reIsUint","arrayPush","isFlattenable","baseFlatten","isStrict","baseIsTypedArray","baseUnary","nodeUtil","nodeIsTypedArray","isTypedArray","cof","ARG","T","tryGet","callee","stackClear","stackDelete","stackGet","stackHas","stackSet","Stack","MapCache","setCacheAdd","setCacheHas","SetCache","alphabet","previousSeed","shuffled","randomFromSeed","ORIGINAL","setCharacters","_alphabet_","unique","getShuffled","characterIndex","sourceArray","targetArray","nextValue","shuffle","characters","seed","strictUriEncode","decodeComponent","splitOnFirst","validateArrayFormatSeparator","encode","decode","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","parseBooleans","arrayFormat","arrayFormatSeparator","formatter","accumulator","parserForArrayFormat","Boolean","keysSorter","shouldFilter","skipNull","skipEmptyString","encoderForArrayFormat","objectCopy","parseUrl","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","calculateNumericNiceInterval","actualDesiredIntervalsCount","niceInterval","minInterval","currentInterval","getActualRange","initializeDoubleRange","startFromZero","POSITIVE_INFINITY","NEGATIVE_INFINITY","calculateRange","applyRangePadding","calculateVisibleLabels","series_1","paddingInterval","maxPointLength","yAxisRange","findMinMax","dragY","findAdditional","findNormal","updateActualRange","calculateVisibleRange","enableAutoIntervalOnZooming","duplicateTempInterval","getFormat","isCustom","intervalDigits","formatDigits","labelFormat","formatValue","Data","initDataManager","deferred_1","BaseTooltip","getTooltipElement","isTooltip","isStockChart","pushData","enableTooltip","stopAnimation","removeHighlight","highlightPoint","highlight","isSelectedElement","highlightPoints","createTooltip","clipLocation","extraPoints","templatePoint","customTemplate","tooltipModule","accumulationTooltipModule","contentSize","heightPadding","getPositionBySize","svgTooltip","SVGTooltip","findPalette","enableTextWrap","updatePreviousPoint","isTooltipFitPosition","findColor","interior","svgElement","valueX","valueY","removeHighlightedMarker","markerRender","data_1","removeText","toolTipInterval","removeTooltip","tooltipTemplate","isTemplateRendered","scrollModule","isAsyncPrint","defered","isContentReady","isPrintGrid","removeColGroup","printGridObj","printModule","renderPrintGrid","printWind","resizeTo","screen","availWidth","availHeight","printGrid","Grid","isAngular","viewContainerRef","getQuery","isPrinting","injectedModues","setInjectedModules","printgrid","registeredTemplate","selectedRows","cssProps","getCssProperties","contentDiv","headerDiv","waitingPop","printGridElement","groupCaption","colSpan","colGroups","contentColGroups","hideColGroup","NiceInterval","calculateDateTimeNiceInterval","startDate","endDate","totalDays","actualIntervalType","intervalType","getSkeleton","currentValue","previousValue","getDayFormat","getMonthFormat","findCustomFormats","PdfPageOrientation","PdfPageRotateAngle","PdfNumberStyle","PdfDockStyle","PdfAlignmentStyle","TemplateType","PdfWriter","stream","streamWriter","pdfDocument","buffer","overload","tempOverload","defaultToString","ObjectStatus","Dictionary","toStringFunction","nElements","toStr","pair","previousElement","keysArray","namesOfKeys","index1","pair1","valuesArray","namesOfValues","index2","pair2","containsKey","PdfMainObjectCollection","objectCollections","mainObjectCollection","primitiveObjectCollection","objInfo","ObjectInfo","Registered","lookFor","getReference","wasNew","trySetReference","found","setReference","pdfObject","isSaving","objectCollectionIndex","pdfReference","Encoding","includeBom","emitBOM","encodingType","initBOM","getByteCount","chars","validateNullOrUndefined","utf8Len","getByteCountInternal","codePoint","isHighSurrogate","codeUnit","toCodepoint","highCodeUnit","lowCodeUnit","charIndex","charCount","byteCount","isUtf8","charCode","high","low","getBytes","RangeError","getBytesOfUtf8Encoding","getBytesOfUnicodeEncoding","getBytesOfAnsiEncoding","getString","bytes","byteLength","byteCal","getStringOfUtf8Encoding","byteUnicode","getStringofUnicodeEncoding","fromCharCode","bufview","charcode","uint","uint16","byteUni","byte16","InternalEnum","Save","fileName","extension","mimeType","getMimeType","isMicrosoftBrowser","msSaveBlob","downloadLink","saveInternal","hasDownloadAttribute","download","dataUrl_1","URL","createObjectURL","createEvent","initEvent","dispatchEvent","revokeObjectURL","reader_1","FileReader","onloadend","readAsDataURL","StreamWriter","encoding","bufferBlob","bufferText","init","flush","enc","setBomByte","arrayUnicode","uint8","arrayUtf8","utf8","bufferArray","writeLine","PdfDocumentBase","isStreamCopied","PdfDocument","objects","pdfCrossTable","currentSavingObject","pdfCatalog","setMainObjectCollection","setCrossTable","cTable","setCatalog","catalog","filename","SW","encoding_1","SW_1","blobData","docSave","PdfName","stringStartMark","internalValue","isSaving6","position6","normalizeValue","status6","index6","writer","escapeString","crossTable","newName","stringValue","ch","delimiters","replacements","Operators","forTest","endObj","newLine","endStream","xref","trailer","startxref","eof","beginText","endText","appendLineSegment","fillEvenOdd","fillStroke","fillStrokeEvenOdd","appendbeziercurve","appendRectangle","saveState","restoreState","paintXObject","modifyCtm","modifyTM","setLineWidth","setLineCapStyle","setLineJoinStyle","setDashPattern","setFlatnessTolerance","closeStrokePath","closeFillStrokePath","setCharacterSpace","setWordSpace","setHorizontalScaling","setTextLeading","setFont","setRenderingMode","setTextRise","setTextScaling","setCoords","goToNextLine","setText","setTextWithFormatting","setTextOnNewLine","selectcolorspaceforstroking","selectcolorspacefornonstroking","setrbgcolorforstroking","setrbgcolorfornonstroking","setcmykcolorforstroking","setcmykcolorfornonstroking","setgraycolorforstroking","setgraycolorfornonstroking","clipPathEvenOdd","setGraphicsState","comment","evenOdd","setMiterLimit","setColorAndPattern","setColorAndPatternStroking","DictionaryProperties","pages","kids","resources","mediaBox","decodeParms","type1","baseFont","subtype","contents","procset","colorSpace","extGState","xObject","bitsPerComponent","image","dctdecode","blackIs1","predictor","deviceRgb","link","annot","annots","CA","xyz","dest","BM","flatedecode","bBox","form","w","cIDFontType2","cIDToGIDMap","dw","fontDescriptor","cIDSystemInfo","fontName","flags","fontBBox","missingWidth","stemV","italicAngle","capHeight","ascent","descent","leading","avgWidth","fontFile2","xHeight","stemH","registry","ordering","supplement","type0","identityH","toUnicode","descendantFonts","shading","matrix","antiAlias","function","shadingType","coords","domain","functionType","bitsPerSample","patternType","paintType","tilingType","xStep","yStep","PdfDictionary","dictionary","position7","primitiveItems","archive","isFont","encrypt","dictionaryProperties","freezeChanges","status7","isSaving7","index7","getArchive","setArchive","setEncrypt","modify","getEncrypt","freezer","bChanged","onBeginSave","beginSave","onFontDictionaryBeginSave","fontDictionaryBeginSave","onDescendantFontBeginSave","descendantFontBeginSave","onTemplateBeginSave","pageBeginDrawTemplate","pageBeginSave","onBeginAnnotationSave","annotationBeginSave","onSectionBeginSave","saveEvent","sectionBeginSave","bRaiseEvent","saveItems","SaveSectionCollectionEventHandler","SaveDescendantFontEventHandler","SaveFontDictionaryEventHandler","SaveSectionEventHandler","SaveTemplateEventHandler","PdfNumber","position5","status5","isSaving5","index5","intValue","floatToString","returnString","PdfArray","startMark","endMark","position9","clonedObject9","internalElements","tempArray","tempNumberArray","pdfNumber","status9","isSaving9","index9","markedChange","inputElement","getItems","fromRectangle","tempElements","markChanged","removeAt","ARR_LITERAL_CODES","Int16Array","ARR_LITERAL_LENGTHS","ARR_DISTANCE_CODES","ARR_DISTANCE_LENGTHS","CompressedStreamWriter","noWrap","pendingBuffer","pendingBufLength","pendingBufCache","pendingBufBitsInCache","bufferPosition","extraBits","currentHash","matchStart","matchLength","matchPrevAvail","blockStart","stringStart","lookAhead","totalBytesIn","inputOffset","inputEnd","windowSize","windowMask","hashSize","hashMask","hashShift","maxDist","checkSum","isHuffmanTreeInitiated","initHuffmanTree","treeLiteral","CompressorHuffmanTree","treeDistances","treeCodeLengths","arrDistances","arrLiterals","dataWindow","hashHead","hashPrevious","writeZLibHeader","compressedString","inputBuffer","ChecksumCalculator","checksumUpdate","pendingBufferFlush","compressData","headerDate","pendingBufferWriteShortBytes","finish","success","fillWindow","canFlush","compressSlow","lookAheadCompleted","slideWindow","prevMatch","prevLen","discardMatch","matchPreviousBest","matchPreviousAvailable","huffmanIsFull","insertString","findLongestMatch","huffmanTallyLit","huffmanTallyDist","huffmanFlushBlock","lastBlock","more","subarray","updateHash","chainLen","niceLen","scan","bestEnd","bestLength","limit","stringEnd","scanEnd1","scanEnd","literal","codeFrequencies","dist","lc","huffmanLengthCode","dc","huffmanDistanceCode","stored","storedOffset","storedLength","buildTree","calculateBLFreq","blTreeCodes","codeLengths","huffCodeLengthOrders","opt_len","getEncodedLength","static_len","huffmanFlushStoredBlock","pendingBufferWriteBits","setStaticCodes","huffmanCompressBlock","huffmanReset","huffmanSendAllTrees","pendingBufferAlignToByte","pendingBufferWriteShort","pendingBufferWriteByteBlock","buildCodes","treeLength","rank","writeTree","literalLen","writeCodeToStream","bits","Uint32Array","pendingBufferFlushBits","isClose","bitReverse","elementCount","minCodes","maxLength","codeMinCount","codeFrequency","lengthCount","codeCount","codeLength","codes","lengths","lengthTemp","nextCode","bitsCount","reverseBits","blTree","maxCount","minCount","curLen","nextLen","maxRepeatCount","minRepeatCount","currentRepeatCount","currentCodeLength","codesCount","arrTree","freq","pPos","nodesCount","iIndex","constructHuffmanTree","buildLength","minDepth","numNodes","numLeafs","calculateOptimalCodeLength","iIncreasableLength","recreateTree","nodePtr","childPtr","childIndex","bitLength","checksum","checksum_uint","s1","s2","checkSumBitOffset","steps","checksumIterationCount","checksumBase","PdfStream","dicPrefix","dicSuffix","clonedObject2","bCompress","isImageStream","isFontStream","dataStream2","bCompress2","clearStream","internalStream","writeBytes","onCmapBeginSave","cmapBeginSave","onFontProgramBeginSave","fontProgramBeginSave","compressContent","byteArray","dataArray","sw","getCompressedString","addFilter","filterName","PdfReferenceHolder","isImage","bytesToString","output","SaveCmapEventHandler","SaveFontProgramEventHandler","SourceType","ForceEncoding","ObjectType","PdfString","bHex","position1","clonedObject1","bDecrypted","isParentDecrypted","isPacked","isFormField","isColorSpace","isHexString","status1","isSaving1","bConverted","bForceEncoding","bytesToHex","Ascii","pdfEncode","stringMark","escapeSymbols","currentData","CrossTable","newString","toUnicodeArray","bAddPrefix","byteToString","hexStringMark","hexFormatPattern","PdfReference","objNumber","genNumber","index3","position3","status3","isSaving3","index4","position4","objectIndex","status4","isSaving4","primitiveObject","PdfHorizontalAlignment","PdfVerticalAlignment","PdfTextAlignment","TextRenderingMode","PdfLineJoin","PdfLineCap","PdfDashStyle","PdfFillMode","PdfColorSpace","PdfBlendMode","PdfGraphicsUnit","PdfGridImagePosition","PdfTextDirection","PdfFontStyle","PdfFontFamily","PdfFontType","PdfWordWrapType","PdfSubSuperScript","FontEncoding","TtfCmapFormat","TtfCmapEncoding","TtfPlatformID","TtfMicrosoftEncodingID","TtfMacintoshEncodingID","FontDescriptorFlags","TtfCompositeGlyphFlags","PdfCatalog","sections","tempDictionaryProperties","PdfCrossTable","maxGenNumIndex","objectCount","merging","internalTrailer","pdfObjects","saveHead","mappedReferences","markTrailerReferences","saveObjects","saveCount","xrefPos","registerObject","saveSections","saveTrailer","saveTheEndess","objectCollection","prevXRef","objectNum","prepareSubsection","saveSubsection","Free","generation","isFree","addOffsetLength","addGenNumberLength","generateFileVersion","bNew","getSubReference","objnumber","nextObjNumber","tempIndex","tempkey","tempvalue","None","bForceNew","saveIndirectObject","currentSavingObj","doSaveObject","free","RegisteredObject","dereference","tempOffset","offsetNumber","tempReference","Normal","PointF","SizeF","RectangleF","arg1","arg2","arg3","arg4","pointf","sizef","Rectangle","topLeft","PdfPageSize","letter","note","legal","a0","a1","a2","a3","a4","a5","a6","a7","a8","a9","a10","b0","b1","b2","b3","b4","b5","archE","archD","archC","archB","archA","flsa","halfLetter","letter11x17","ledger","PdfMargins","pdfMargin","setMargins","leftMargin","topMargin","rightMargin","bottomMargin","margin1","margin2","margin3","margin4","PdfPageSettings","margins","pageMargins","rotateAngle","RotateAngle0","pageOrientation","Portrait","pageOrigin","isRotation","setSize","updateSize","Landscape","getActualSize","LineType","PdfStreamWriter","dictionaryName","writeOperator","executeObject","useEvenOddRule","fillStrokePath","fillPath","closeFillPath","textScaling","strokePath","restoreGraphicsState","saveGraphicsState","startNextLine","writePoint","showText","checkTextParam","writeText","setLeading","setTextRenderingMode","renderingMode","setCharacterSpacing","charSpacing","setWordSpacing","wordSpacing","showNextLineText","setColorSpace","temparg1","op","temparg2","opcode","updateY","builder","writeComment","setColorAndSpace","forStroking","setLineDashPattern","patternOffset","setLineDashPatternHelper","tempPattern","miterLimit","setLineCap","lineCapStyle","setLineJoin","lineJoinStyle","appendBezierSegment","arg5","arg6","setColourWithPattern","colours","patternName","PdfColor","color1","color2","color3","color4","assignRGB","filled","redColor","greenColor","blueColor","grayColor","gray","alpha","maxColourChannelValue","cyanColor","magentaColor","yellowColor","blackColor","assignCMYK","red","green","blue","black","cyan","magenta","yellow","Rgb","rgbToString","GrayScale","grayScaleToString","Cmyk","cmykToString","ifStroking","colour","grayStringsSroke","grayStringsFill","rgbStrings","PdfBrush","PdfSolidBrush","pdfColor","monitorChanges","brush","getResources","currentColorSpace","resetChanges","PdfPen","dashOffsetValue","penDashPattern","pdfDashStyle","Solid","pdfLineCap","pdfLineJoin","penWidth","internalMiterLimit","setBrush","Custom","Dash","Dot","DashDot","DashDotDot","sBrush","pdfBrush","currentPen","dashControl","lineJoin","lineCap","pen","getPattern","dashOffset","dashPattern","PdfStringFormat","scalingFactor","wordWrapType","Word","internalLineLimit","verticalAlignment","Top","isRightToLeft","internalCharacterSpacing","internalWordSpacing","pdfSubSuperScript","internalParagraphIndent","firstLineIndent","trailingSpaces","isNoClip","initialLineIndent","StringTokenizer","textValue","currentPosition","getCharsCount","numSymbols","readLine","text2","peekLine","readWord","peekWord","word","read","peek","readToEnd","tab","spaces","whiteSpacePattern","PdfStringLayouter","isOverloadWithPosition","layout","arg7","clientSize","doLayout","rectSize","pageHeight","reader","PdfStringLayoutResult","lineResult","lineIndent","getLineIndent","layoutLine","numSymbolsInserted","returnedValue","copyToResult","numInserted","finalizeResult","firstLine","paragraphIndent","getLineHeight","lineSpacing","getLineWidth","layoutLineHeight","lineType","FirstParagraphLine","addToLineResult","NewLineBreak","curLine","curIndent","curLineWidth","getWrapType","WordOnly","textRemainder","wordWrap","Character","ln","LayoutBreak","LastParagraphLine","layoutLines","breakType","LineInfo","actualSize","allowPartialLines","lineLimit","expHeight","trimLine","size1","empty","PdfLayoutType","PdfLayoutBreakType","PathPointType","PdfFont","Regular","metrics","getHeight","Bold","Italic","Strikeout","Underline","fontMetrics","pdfFontInternals","measureString","layoutArea","temparg3","equalsTo","equalsToFont","getInternals","setInternals","internals","applyFormatSettings","realWidth","characterSpacing","charSizeMultiplier","syncObject","PdfTransformationMatrix","radDegFactor","transformationMatrix","Matrix","multiply","degreesToRadians","degreesX","degRadFactor","radiansToDegrees","radians","metrixElements","tempMatrix","dispose","ProcedureSets","pdf","imageB","imageC","imageI","TemporaryDictionary","mKeys","mValues","PdfTransparency","PdfAutomaticFieldInfoCollection","automaticFieldsInformation","fieldInfo","automaticFields","PdfGraphicsElement","drawHelper","graphics","bNeedSave","gState","translateTransform","drawInternal","PdfAutomaticField","internalBounds","internalTemplateSize","internalFont","internalBrush","internalPen","internalStringFormat","performDrawHelper","scalingX","scalingY","getFont","stringFormat","draw","location_1","PdfAutomaticFieldInfo","getSize","getBrush","defaultFont","getPageFromGraphics","pageNumberFieldLocation","pageNumberField","ByteArray","mPosition","dataView","readByte","getBuffer","writeFromBase64String","base64","encodedString","chr1","chr2","chr3","enc2","enc3","keyStr","resultIndex","totalLength","readNextTwoBytes","TtfTableInfo","TtfNameTable","TtfNameRecord","TtfHeadTable","TtfMetrics","macStyle","TtfHorizontalHeaderTable","TtfOS2Table","TtfPostTable","TtfLongHorMetric","TtfCmapSubTable","TtfCmapTable","TtfGlyphInfo","compareTo","glyph","TtfLocaTable","TtfAppleCmapSubTable","TtfMicrosoftCmapSubTable","TtfTrimmedCmapSubTable","TtfGlyphHeader","BigEndianWriter","capacity","int32Size","int16Size","int64Size","bufferLength","internalPosition","writeShort","writeInt","i3","i4","writeUInt","buff","writeString","TtfReader","fontData","isTtcFont","isMacTtf","metricsName","isMacTTF","missedGlyphs","tableNames","entrySelectors","macintoshDictionary","microsoftDictionary","internalMacintoshGlyphs","internalMicrosoftGlyphs","readFontDictionary","nameTable","readNameTable","headTable","readHeadTable","initializeFontName","checkPreambula","numTables","readInt16","tableDirectory","tableKey","readString","readInt32","lowestPosition","fixOffsets","minOffset","tableKeys","tableInfo","getTable","formatSelector","readUInt16","recordsCount","nameRecords","platformID","encodingID","languageID","nameID","unicode","readFixed","fontRevision","checkSumAdjustment","readUInt32","magicNumber","unitsPerEm","readInt64","modified","lowestReadableSize","fontDirectionHint","indexToLocalFormat","glyphDataFormat","readHorizontalHeaderTable","ascender","descender","lineGap","advanceWidthMax","minLeftSideBearing","minRightSideBearing","xMaxExtent","caretSlopeRise","caretSlopeRun","metricDataFormat","numberOfHMetrics","readOS2Table","xAvgCharWidth","usWeightClass","usWidthClass","fsType","ySubscriptXSize","ySubscriptYSize","ySubscriptXOffset","ySubscriptYOffset","ySuperscriptXSize","ySuperscriptYSize","ySuperscriptXOffset","ySuperscriptYOffset","yStrikeoutSize","yStrikeoutPosition","sFamilyClass","panose","readBytes","ulUnicodeRange1","ulUnicodeRange2","ulUnicodeRange3","ulUnicodeRange4","vendorIdentifier","fsSelection","usFirstCharIndex","usLastCharIndex","sTypoAscender","sTypoDescender","sTypoLineGap","usWinAscent","usWinDescent","ulCodePageRange1","ulCodePageRange2","sxHeight","sCapHeight","usDefaultChar","usBreakChar","usMaxContext","readPostTable","formatType","underlinePosition","underlineThickness","isFixedPitch","minType42","maxType42","minType1","maxType1","readWidthTable","glyphCount","advanceWidth","lsb","glyphWidth","readCmapTable","tablesCount","subTables","subTable","readCmapSubTable","getCmapEncoding","Macintosh","Microsoft","Unknown","Apple","readAppleCmapTable","readMicrosoftCmapTable","Trimmed","readTrimmedCmapTable","maxMacIndex","glyphInfo","macintosh","addGlyph","Unicode","microsoft","segCountX2","searchRange","entrySelector","rangeShift","segCount","endCount","readUshortArray","reservedPad","startCount","idDelta","idRangeOffset","glyphID","codeOffset","firstCode","entryCount","postScriptName","glyphCode","Undefined","Roman","microsoftGlyphs","macintoshGlyphs","initializeMetrics","horizontalHeadTable","os2Table","postTable","cmapTables","bSymbol","winAscent","macAscent","winDescent","macDescent","fontBox","widthTable","updateWidth","subScriptSizeFactor","superscriptSizeFactor","getGlyph","byteToProcess","space","getDefaultGlyph","readLocaTable","bShort","offsets","updateGlyphChars","glyphChars","locaTable","glyphCharKeys","nextKey","processCompositeGlyph","glyphOffset","glyphHeader","numberOfContours","skipBytes","glyphIndex","MoreComponents","Arg1And2AreWords","WeHaveScale","WeHaveAnXyScale","WeHaveTwoByTwo","generateGlyphTable","newLocaTable","newGlyphTable","activeGlyphs","glyphSize","glyphSizeAligned","align","nextGlyphOffset","nextGlyphIndex","oldGlyphOffset","oldNextGlyphOffset","glyphTableSize","updateLocaTable","bLocaIsShort","newLocaTableOut","newLocaUpdated","newLocaSize","getFontProgram","locaTableSize","getFontProgramLength","fontProgramLength","writeCheckSums","writeGlyphs","usedTablesSize","nextTableSize","calculateCheckSum","byte1","byte2","byte3","byte4","setOffset","createInternals","bIsLocaShort","isFontPresent","getGlyphChars","charKeys","getAllGlyphs","allGlyphInfo","readFontProgram","result2","convertString","getCharWidth","isUnicode","written","PdfFontMetrics","getAscent","getDescent","getLineGap","clearTypeFonts","clearTypeFontCollection","subSuperScript","SubScript","SuperScript","WidthTable","internalWidthTable","StandardWidthTable","widths","UnicodeTrueTypeFont","base64String","nameString","isCompress","isEmbedFont","cmapPrefix","cmapEndCodespaceRange","cmapBeginRange","cmapEndRange","cmapSuffix","fontString","Initialize","ttfReader","internalBuffer","ttfMetrics","fontDictionary","fontProgram","cmap","descendantFont","subsetName","getFontName","createDescendantFont","createCmap","createFontDictionary","createFontProgram","isBold","createFontDescriptor","systemInfo","createSystemInfo","getDescriptorFlags","getBoundBox","descFonts","usedChars","getDescendantWidth","generateCmap","generateFontProgram","chLen","firstGlyphIndex","lastGlyphIndex","firstGlyphIndexWasSet","widthDetails","middlePart","toHexString","nextRange","FixedPitch","Symbolic","Nonsymbolic","isItalic","ForceBold","isCaseChange","setSymbols","ArabicShapeRenderer","arabicCharTable","alef","alefHamza","alefHamzaBelow","alefMadda","lam","hamza","zeroWidthJoiner","hamzaAbove","hamzaBelow","wawHamza","yehHamza","waw","alefMaksura","yeh","farsiYeh","shadda","madda","lwa","lwawh","lwawhb","lwawm","bwhb","fathatan","superScriptalef","vowel","arabicMapTable","getCharacterShape","doShape","ArabicShape","present","ligature","shapeCount","getShapeCount","Shapes","Value","Ligature","Type","shapeValue","shapeType","shapeVowel","shapeLigature","shapeShapes","Bidi","indexLevels","mirroringShapeCharacters","doMirrorShaping","getLogicalToVisualString","inputText","isRtl","rtlCharacters","RtlCharacters","getVisualOrder","setDefaultIndexLevel","doOrder","resultBuilder","sIndex","eIndex","odd","even","pstart","pend","reArrange","textOrder","rtlCharacterTypes","L","LRE","LRO","AL","RLE","RLO","PDF","EN","ES","ET","AN","CS","NSM","BN","WS","ON","charTypes","getCharacterCode","doVisualOrder","levels","characterCodes","setDefaultLevels","setLevels","updateLevels","getEmbeddedCharactersLength","preview","preType","checkNSM","checkEmbeddedCharacters","startType","endType","charType","checkEuropeanDigits","checkArabicCharacters","checkEuropeanNumberSeparator","checkEuropeanNumberTerminator","getLength","checkOtherNeutrals","checkOtherCharacters","pst","checkCommanCharacters","validSet","byte","tt","rt","RtlRenderer","openBracket","closeBracket","rtl","wordSpace","customLayout","splitLayout","customSplitLayout","getGlyphIndex","glyphs","fontInternal","textDirection","layouted","words","addChars","ImageFormat","PdfBoolean","objectStatus","saving","boolToStr","PdfGradientBrush","mbackground","mbStroking","mfunction","mpatternDictionary","sh","aa","mcolorSpace","csValue","colorSpaceToDeviceName","mshading","patternDictionary","mmatrix","resetFunction","name_1","getName","resetPatternDictionary","cloneAntiAliasingValue","cloneBackgroundValue","PdfTemplate","writeTransformation","tempSize","templateSize","pdfGraphics","gr","GetResourceEventHandler","PdfGraphics","initializeCoordinates","PdfResources","addType","addSubType","ImageDecoder","sof1Marker","sof2Marker","sof3Marker","sof5Marker","sof6Marker","sof7Marker","sof9Marker","sof10Marker","sof11Marker","sof13Marker","sof14Marker","sof15Marker","mFormat","mbitsPerComponent","mStream","mHeight","mWidth","mImageData","checkIfJpeg","Jpeg","parseJpegImage","imgData","isLengthExceed","readExceededJPGImage","mJpegHeader","getImageDictionary","imageData","imageStream","decodedString","imageDataAsNumberArray","compress","getColorSpace","getDecodeParams","decodeParams","isContinueReading","getMarker","skipStream","noOfBytes","markerLength","mPngHeader","GIF_HEADER","BMP_HEADER","PdfUnitConverter","dpi","updateProportionsHelper","convertUnits","convertFromPixels","convertToPixels","proportions","pixelPerInch","horizontalResolution","verticalResolution","PdfImage","imageWidth","imageHeight","imagePhysicalDimension","getPointSize","dpiX","dpiY","ucX","ucY","ptWidth","Pixel","Point","ptHeight","PdfBitmap","imageStatus","loadImage","initializeAsync","decoder","baseDictionary","getNames","primitive","sName","generateName","PdfTilingBrush","pdfNames","fonts","requireProcedureSet","procedureSetName","procSets","removeFont","Guid","getNewGuidString","xobjects","savable","transDic","parentXObjects","hasSameImageStream","oldReference","mStroking","mLocation","mDictionaryProperties","PdfPage","mPage","brushStream","mResources","setBox","setObligatoryFields","mTransformationMatrix","tempBrushStream","tempResource","mBox","tileTransform","mGraphics","name1","previousTextRenderingMode","Fill","previousCharacterSpacing","previousWordSpacing","previousTextScaling","procedureSets","isNormalRender","isUseFontSize","isEmfTextScaled","isEmf","isEmfPlus","isBaselineFormat","emfScalingFactor","colorSpaceChanged","isPointOverload","currentColorSpaces","isImageOptimized","graphicsState","istransparencySet","internalAutomaticFields","startCutIndex","canvasSize","pdfStreamWriter","pdfStringLayoutResult","internalMediaBoxUpperRightBound","pageLayer","bStateSaved","currentBrush","currentFont","bCSInitialized","currentStringFormat","drawPdfTemplate","bNeedScale","getTranslateTransform","getScaleTransform","newLocation","drawString","arg8","arg9","temparg4","temparg5","temparg6","temparg7","temparg8","temparg9","checkCorrectLayoutRectangle","drawStringLayoutResult","stateControl","xOffset","yOffset","layer","drawPathHelper","Winding","isPen","isBrush","isEvenOdd","Alternate","physicalDimension","name_2","setResources","resource","getLineBounds","lineIndex","layoutRectangle","lineCount","getTextVerticalAlignShift","hShift","getHorizontalAlignShift","shouldJustify","layoutedRectangle","Center","Right","lineAlignment","Middle","Bottom","setLayer","pageSave","performDraw","applyStringSettings","horizontalScalingFactor","resultHeight","remainingString","drawLayoutResult","underlineStrikeoutText","getNextPage","section","getPages","setClip","tm","getTextRenderingMode","cs","ws","textHeight","boundsHeight","vAlignShift","ttfFont","lineInfo","hAlignShift","drawUnicodeLine","drawAsciiLine","justifyLine","useWordSpace","Justify","rtlRender","blocks","rightAlign","RightToLeft","drawUnicodeBlocks","breakUnicodeLine","tokens","token","convertToUnicode","getUnicodeString","xShift","spaceWidth","tokenWidth","converted","boundsWidth","hasWordSpacing","whitespacesCount","justifyStyle","goodWidth","hasSpaces","goodLineBreakStyle","underline","strikeout","linePen","createUnderlineStikeoutPen","vShift","underlineYOffset","strikeoutYOffset","FillStroke","Stroke","ClipFlag","layoutBounds","firstParagraphLine","Left","lastDocumentCS","lastGraphicsCS","initCurrentColorSpace","penControl","brushControl","fontControl","colorspace","lgb","curSubSuper","prevSubSuper","setTransparency","trasparencies","transp","td","TransparencyData","name_3","clipTranslateMargins","clipArea","scaleTransform","rotateTransform","getRotateTransform","mediaBoxUpperRightBound","cropBox","PdfGraphicsState","textRenderingMode","doRestoreState","buildUpPath","pathPoints","pathTypes","fillMode","drawArc","constructArcPath","typeValue","pathTypesValuesMask","Start","Bezier3","p3","getBezierPoints","Line","checkFlags","CloseSubpath","startAng","sweepAngle","getBezierArc","pt","numX1","numY1","numX2","numY2","e1","fragAngle1","numFragments","xcen","ycen","halfAng","kappa","pointsList","thetaValue0","thetaValue1","cos0","cos1","sin0","sin1","transparencyObject","internalTextRenderingMode","internalTextScaling","pdfColorSpace","pdfPen","pdfFont","alphaPen","alphaBrush","blendMode","PdfPageLayer","streamClipPageTemplates","sublayer","contentLength","pdfPage","clipPageTemplates","layerid","layerName","initializeGraphics","PdfPageLayerCollection","sign","oPage","sc","isSame","origin","getActualBounds","PdfCollection","parentLayerCount","optionalContent","PdfPageBase","lPage","parseLayers","firstArgument","secondArgument","addLayer","insertLayer","loadedPage","saveStream","restoreStream","saveData","defLayerIndex","pageDictionary","pdfSection","layers","defaultLayerIndex","layerCollection","PdfAnnotationCollection","alreadyExistsAnnotationError","missingAnnotationException","internalAnnotations","lists","annotation","doAdd","setPage","layoutResult","lastPosition","setColor","annotationCollection","defaultLayer","setSection","resetProgress","isProgressOn","getClientSize","doc","drawPageTemplates","containsTemplates","backLayer","drawTemplates","frontLayer","PageAddedEventArgs","PdfSectionPageCollection","PdfDocumentTemplate","leftTemplate","checkElement","topTemplate","rightTemplate","bottomTemplate","evenLeft","evenTop","evenRight","evenBottom","oddLeft","oddTop","oddRight","oddBottom","getLeft","isEven","EvenLeft","OddLeft","getTop","EvenTop","OddTop","getRight","EvenRight","OddRight","getBottom","EvenBottom","OddBottom","pageCollectionIndex","PdfSectionTemplate","leftValue","topValue","rightValue","bottomValue","stampValue","PdfSection","pageAdded","pdfPages","initialSettings","sectionCollection","pagesReferences","pageTemplate","pagesCollection","pointToNativePdf","setPageSettings","PageSettingsState","pageCount","foreground","documentHeaders","getDocumentTemplates","sectionTemplates","getSectionTemplates","templates","applyDocumentTopTemplate","applyDocumentBottomTemplate","applyDocumentLeftTemplate","applyDocumentRightTemplate","page_1","checkPresence","pageAddedMethod","rh","onPageAdded","document_1","getLeftIndentWidth","getTopIndentHeight","getRightIndentWidth","getBottomIndentHeight","includeMargins","templateWidth","docTemplateWidth","templateHeight","docTemplateHeight","temproaryPages","applyPageSettings","container","parentSettings","PdfSectionCollection","rotateFactor","sectionHeaders","drawTemplatesHelper","pageRotate","sectionCount","pdfSectionCollection","section_1","checkSection","countPages","PdfDocumentPageCollection","pdfPageCollectionIndex","getLastSection","getPageByIndex","getPage","sectionStartIndex","numPages","PdfCacheCollection","referenceObjects","pdfFontCollection","getGroup","createNewGroup","tGroup","representative","removeGroup","PdfStandardFontMetricsFactory","getMetrics","Helvetica","getHelveticaMetrics","Courier","getCourierMetrics","TimesRoman","getTimesMetrics","getSymbolMetrics","ZapfDingbats","getZapfDingbatsMetrics","subSuperScriptFactor","helveticaBoldItalicAscent","helveticaBoldItalicDescent","helveticaBoldItalicName","arialBoldWidth","helveticaBoldAscent","helveticaBoldDescent","helveticaBoldName","helveticaItalicAscent","helveticaItalicDescent","helveticaItalicName","arialWidth","helveticaAscent","helveticaDescent","helveticaName","courierBoldItalicAscent","courierBoldItalicDescent","courierBoldItalicName","fixedWidth","courierBoldAscent","courierBoldDescent","courierBoldName","courierItalicAscent","courierItalicDescent","courierItalicName","courierAscent","courierDescent","courierName","timesBoldItalicAscent","timesBoldItalicDescent","timesBoldItalicName","timesRomanBoldItalicWidths","timesBoldAscent","timesBoldDescent","timesBoldName","timesRomanBoldWidth","timesItalicAscent","timesItalicDescent","timesItalicName","timesRomanItalicWidth","timesAscent","timesDescent","timesName","timesRomanWidth","symbolAscent","symbolDescent","symbolName","symbolWidth","zapfDingbatsAscent","zapfDingbatsDescent","zapfDingbatsName","zapfDingbatsWidth","PdfStandardFont","fontFamilyPrototype","encodings","pdfFontFamily","checkStyle","initializeInternals","convert","getCharWidthInternal","stFont","fontFamilyEqual","lineReducer","styleEqual","WinAnsiEncoding","charOffset","isMerging","defaultMargin","isMerge","cacheCollection","documentPageCollection","defaultStandardFont","isCacheEnabled","checkPagesPresence","PdfPageTemplateElement","InitiateBounds","dockStyle","resetAlignment","alignmentStyle","setAlignment","isForeground","pdfTemplate","templateType","updateDocking","dock","canBeSet","TopLeft","MiddleLeft","BottomLeft","TopCenter","TopRight","MiddleRight","BottomRight","BottomCenter","MiddleCenter","calculateBounds","getAlignmentBounds","getDockBounds","getSimpleAlignmentBounds","getTemplateAlignmentBounds","actualBounds","getSimpleDockBounds","getTemplateDockBounds","ExportUtils","htmlContent","getHTMLContent","Element","export","controls","footer","controlValue","getControlsValue","isDownload","svgData","svg","XMLSerializer","serializeToString","msSaveOrOpenBlob","toLocaleLowerCase","triggerDownload","canvas","toDataURL","exportPdf","doexport","image_1","ctx_1","msToBlob","getDataUrl","image_2","ctx_2","blobUrl","MouseEvent","view","bubbles","cancelable","groupEle","exactWidth","exactHeight","pdfDefaultWidth","pdfDefaultHeight","imageString","pdfHeader","pdfFooter","images","fileType","exportImage","buffers","HTMLElement","image1","byteString","intArray","arrayLikeToArray","pIE","toIObject","gOPD","is","fails","KEY","META","setDesc","isExtensible","FREEZE","preventExtensions","setMeta","meta","NEED","fastKey","getWeak","onFreeze","copyright","LIBRARY","wksExt","$Symbol","redefine","$iterCreate","setToStringTag","BUGGY","returnThis","DEFAULT","IS_SET","FORCED","methods","IteratorPrototype","getMethod","kind","DEF_VALUES","VALUES_BUG","$native","$default","$entries","$anyNative","castPath","toKey","reIsDeepProp","reIsPlainProp","mapCacheClear","mapCacheDelete","mapCacheGet","mapCacheHas","mapCacheSet","webpackPolyfill","deprecate","freeProcess","binding","safe","forbiddenField","classof","getIteratorMethod","arrayFilter","stubArray","nativeGetSymbols","getSymbols","getPrototype","overArg","arrayBuffer","baseIsEqualDeep","baseIsEqual","bitmask","isIndex","arrayIncludes","arrayIncludesWith","cacheHas","createSet","setToArray","comparator","isCommon","seen","outer","computed","seenIndex","baseIndexOf","funcProto","funcToString","objectCtorString","URI","util","SchemaObject","traverse","refVal","_refs","_schemas","inlineRef","_opts","inlineRefs","_compile","v","baseId","refPath","_getFullPath","getFullPath","_getId","normalizeId","resolveRecursive","getJsonPointer","parsedRef","resolveUrl","fullPath","baseIds","fullPaths","localRefs","sch","jsonPtr","parentJsonPtr","parentKeyword","parentSchema","keyIndex","PREVENT_SCOPE_CHANGE","fragment","SIMPLE_INLINED","checkNoRef","countKeys","normalize","serialize","TRAILING_SLASH_HASH","MissingRefError","missingRef","missingSchema","errorSubclass","Subclass","Validation","validation","MissingRef","PromiseCapability","$$resolve","$$reject","baseGet","commonjsGlobal","globalThis","createEventEmitter","handlers","changedBits","calculateChangedBits","_Provider$childContex","_Consumer$contextType","contextProp","getUniqueId","Provider","_Component","emitter","_proto","getChildContext","componentWillReceiveProps","childContextTypes","Consumer","_Component2","_this2","onUpdate","observedBits","_proto2","contextTypes","isarray","tokensToFunction","tokensToRegExp","PATH_REGEXP","defaultDelimiter","delimiter","escaped","capture","modifier","asterisk","partial","repeat","escapeGroup","encodeURIComponentPretty","encodeURI","opts","pretty","attachKeys","re","route","endsWithDelimiter","regexpToRegexp","arrayToRegexp","stringToRegexp","globalTimeOut","spinTemplate","spinCSSClass","createSpinner","internalCreateElement","makeElement","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","getTheme","defaultSize","calculateRadius","setTheme","labelEle","createLabel","replaceContent","innerContainer","random_generator","timeOut","create_material_element","mat_calculate_attributes","createMaterialSpinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","svgBoot","bootCircle","CLS_SPINCIRCLE","defaultRadius","create_bootstrap_element","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","generateSeries","increment","formSeries","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","startTime","strokeSize","getStrokeSize","mat_animation","getDashOffset","updatePath","createCircle","easeAnimation","transformOrigin","timestamp","timecount","innerConainer","trgClass","defineCircle","endArc","defineArc","showSpinner","showHideSpinner","isHide","spinnerWrap","inner","svgEle","globalObject","globalVariables","timeOutVar","startMatAnimate","rotation","boot_animate","animateBootstrap","hideSpinner","Input","ROOT","isBlazorTooltip","contentTargetValue","contentEvent","contentAnimation","formatPosition","isServerRender","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tooltipEle","tipClass","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","renderPopup","elePos","mouseTrail","getTooltipPosition","popupObj","openPopupHandler","closePopupHandler","offsetPos","calculateTooltipOffset","collisionFlipFit","needTemplateReposition","findTarget","tooltipEventArgs","tooltipEleWidth","tooltipEleHeight","arrowEle","tipWidth","tipHeight","tipAdjust","showTipPointer","tipHeightAdjust","tipWidthAdjust","updateTipPosition","selEle","removeList","adjustArrow","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","renderContent","tooltipContent","enableHtmlSanitizer","enableHtmlParse","tempArr","templateFunction","isBlazorTemplate","renderCloseIcon","isSticky","tipClose","ICON","onStickyClose","addDescribedBy","describedby","removeDescribedBy","orgdescribedby","tapHoldHandler","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","closeDelay","targetList_1","ctrlId","target_1","restoreElement","showTimer","hideTimer","isInteracted","beforeRenderArgs","beforeRenderCallback","isBlazorTooltipRendered","isHidden","interopAdaptor","invokeMethodAsync","TOOLTIP_WRAP","role","beforeRenderBlazor","afterRenderBlazor","PopupAnimation","contentUpdated","ctrlObj","observedArgs","beforeOpenCallback","openAnimation_1","openDelay","onMouseMove","wireMouseEvents","horizontal","vertical","affectedPos","checkCollideTarget","collidedPosition","eleOffset","arrowleft","windowCollision","targetElement","isTooltipOpen","tooltipHide","blazorHide","popupHide","proxy","closeAnimation","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","relatedTarget","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","touches","colpos","keyDown","touchEnd","scrollHandler","opensOn","triggerList_1","getTriggerList","wireFocusEvents","touchModule","tapHold","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","placeholder","floatType","bindInitialEvent","checkInputValue","floatLabelType","getParentNode","inputValue","_focusFn","_blurFn","wireFloatingEvents","createFloatingInput","inputObject","floatLinelement","floatLabelElement","createInputContainer","customTag","encodePlaceHolder","inputWrap","updateLabelState","checkFloatLabelType","updateIconState","wireClearBtnEvents","readOnly","activeElement","validateLabel","tagClass","spanEle","setCssClass","oldClass","setPlaceholder","setReadonly","isReadonly","readonly","setEnabled","isEnable","inputContainer","disabledAttrs","considerWrapper","removeAttributes","addAttributes","setClearButton","isClear","initial","clearButton","insertAdjacentElement","createClearButton","_internalRipple","isRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","parentEle","createIconEle","iconClass","prependSpan","innerWrapper","appendSpan","validateInputType","containerElement","createInput","showClearButton","enabled","setPropertyValue","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","wrapper","setRipple","addIcon","icons","internalCreate","result_1","result_2","CheckBoxFilterBase","existingPredicate","foreignKeyQuery","filterState","renderEmpty","cBoxTrue","createCheckBox","cBoxFalse","keyupHandler","searchHandler","searchBoxKeyUp","unWireEvents","foreignKeyFilter","fColl","mPredicate","fPredicate","filterCollection","fpred","foreignFilter","isRemote","initalPredicate","searchBoxClick","sInput","refreshCheckboxes","updateSearchIcon","sIcon","getLocalizedLabel","updateDataSource","actualPredicate","filteredColumns","allowCaseSensitive","getAndSetChkElem","sBox","hideSearchbox","searchBox","inputargs","spinner","cBox","showDialog","columnName","columnType","isJsComponent","btnClick","buttonModel","isPrimary","renderResponsiveFilter","isResponsiveFilter","getAllData","filterTemplateCol","filterItemTemplate","destroyTemplate","renderTemplates","clearFilter","fltrBtnHandler","check","optr","ddlValue","isMenuNotEqual","fObj","searchInput","caseSen","isNotEqual","itemsCnt","generateNullValuePredicates","initiateFilter","firstVal","foreignQuery","predicte","parsed","addDistinct","filterModel","filterChoiceCount","filterargs","excelSearchOperator","filterObj","filterEvent","processSearch","getPredicateFromCols","getPredicate","predicateList","isGrid","foreignColumn","processDataOperation","filteredColumn","defObj","dataSuccess","isInitial","allPromise","runArray","colData","fullData","args1","searchSettings","sSettings","filterColumn","filteredData","getDistinct","processDataSource","updateResult","createFilterItems","updateAllCBoxes","updateIndeterminatenBtn","setFocus","prevElem","cBoxes_1","createCheckbox","dummyData","btn","btnObj","indeterminate","cBoxes","nullCounter","selectAllValue","checkBox","isColFiltered","isRndere","args_1","getCheckedState","checkState","foreignDataObj","generatePredicate","updateDateFilter","getCaseValue","dataState","isPending","resolver","foreignKeyDataState","addRows","reorderRows","removeRows","crudActions","refreshFilteredCols","isQueryInvokedFromData","skipPage","columnQueryMode","isPrimaryKey","selectQueryFields","filterQuery","searchQuery","aggregateQuery","sortQuery","virtualGroupPageQuery","pageQuery","isForeign","enableInfiniteScrolling","infiniteScrollModule","enableLazyLoading","isGrpFmt","formatGroupColumn","sortGrp","fcolumn","getSearchColumnFieldNames","needForeignKeySearch","fGeneratePredicate","predList","skipFoerign","foreignColEmpty","actualFilter","colType","foreignCols","defaultFltrCols","gridColumn","grabColumnByFieldFromAllCols","excelPredicate","foreignCols_1","column_1","grabColumnByUidFromAllCols","getKey","getPrimaryKeyFieldNames","crud","pr","previousData","deff","getState","getForeignKeyDataState","setForeignKeyDataState","dataArgs","isDataChanged","editArgs_1","cancelEdit","colFieldNames","columns_2","cell","setRowValue","setRowData","setCellValue","pKeyField","makechanges","getDataModule","Cell","isSpanned","isRowSpanned","CellMergeRender","cellArgs","spannedCell","cellRenderer","getCellRenderer","cellType","cellSpan","rowSpan","targetCell_1","colSpanLen","colSpanRange","rowSpanRange","spanText","backupMergeCells","fName","setMergeCells","generteKey","fname","splitKey","getMergeCells","mergeCells","updateVirtualCells","mCells","getIndexFromAllColumns","vColumnIndices","RowRenderer","isSpan","rowTemplate","refreshRow","isChanged","refreshMergeCells","tr","cells_1","rowArgs","attrCopy","chekBoxEnable","getSelectedRowIndexes","isCheckBoxSelection","checkAllRows","buildAttributeFromRow","cellRendererFact","isColumnSelected","DetailExpand","Filter","CommandColumn","requestTypeAction","prevRowCells","prevRowCell","lazyLoadCssClass","frozenColumns","footerTemplate","summarycell","lastSummaryCell","firstSummaryCell","class","RowModelGenerator","generateRows","getInfiniteIndex","generateRow","ensureColumns","generateCell","RowDragIcon","indent","tIndex","parentUid","getRowUid","parentGid","checkBoxState","selectedRowIndexes","refreshForeignKeyRow","generateCells","foreignKeyColumns","dummies","rowId","oIndex","opt","isDataCell","refreshRows","SummaryModelGenerator","groupFooterTemplate","groupCaptionTemplate","columnSelector","buildSummaryData","getGeneratedRow","summaryRow","raw","indents","getIndentByLevel","isDetailGridAlone","indentLength","getGeneratedCell","getCellType","Indent","DetailFooterIntent","sColumn","scolumn","dummy","summaryRows","single","setTemplate","disp","Summary","GroupSummaryModelGenerator","GroupSummary","CaptionSummaryModelGenerator","CaptionSummary","GroupModelGenerator","summaryModelGen","captionModelGen","isInfiniteScroll","isCollapseStateEnabled","ensureRowVisibility","parentid","childId","isRenderCaption","prevKey","generateDataRows","captionRow","generateCaptionRow","rowCnt","isCaptionRow","aggregatesCount","getCaptionRowCells","visibles","groupedLen","generateIndentCell","Expand","captionCells","cIndex_1","tmpFlag","GroupCaption","GroupCaptionEmpty","parentID","childID","childGid","gSummary","fkValue","cRow","childRow","ContentRender","freezeRows","movableRows","currentInfo","prevCurrentView","isLoaded","viewColIndexes","infiniteCache","visibleRows","visibleFrozenRows","rightFreezeRows","isAddRows","isInfiniteFreeze","useGroupCache","mutableData","rafCallback","mContentRows","fContentRows","getFrozenVirtualContent","getMovableVirtualHeader","fHdr","getFrozenVirtualHeader","ariaService","setBusy","getPanel","renderFrozenRightContent","getFrozenRightRowsObject","allowTextWrap","case","generator","getModelGenerator","setVisible","enableAfterRender","refreshContentRows","droppableDestroy","byKey","keyArgs","pressedKey","renderPanel","setOptions","busy","setPanel","innerDiv","renderTable","virtualTable","virtualTrack","createContentTable","setTable","multiselectable","selectionSettings","initializeContentDrop","frozenRows","cellspacing","setColGroup","getColGroup","currentViewData","currentMovableRows","frag","initialPageRecords","hdrTbody","trElement","hdrfrag","tbdy","modelData","fCont","cont","emptyVcRows","prevInfo","virtualInfo","sentinelInfo","mRow","sRow","borderRightWidth","isPersistSelection","selectRow","removeClassByUid","getRows","addClassByUid","getRowObjectFromUID","getRowElementByUID","renderMovableContent","checkCache","setTbody","getTbody","isFrozenLeft","templatetoclear","rootNodes","tbody","blockLoad","vcRows","offsets_1","vGroupOffsets","bSize","blockIndexes","contentPanel","rowObject","isVFFrozenOnly","bIndex","mhdrData","vgenerator","virtualFrozenHdrRefresh","setRowsInLazyGroup","setInfiniteVisibleRows","rowTemplateID","getRowTemplate","lastElementChild","isTR","nodeName","isVFreorder","ensureFrozenHeaderRender","ensureVirtualFrozenHeaderRender","colcount","splitRows","getFrozenHeader","parentTable","setIsFrozen","isVFTable","appendContent","renderNextFrozentPart","vRows","maintainRows","infiniteScrollSettings","enableCache","frozenCols","getGroupCache","initialGroupRows","getCurrentBlockInfiniteRecords","isFreeze","getReorderedVFRows","getReorderedFrozenRows","getReorderedRows","fhdrData","getInfiniteRows","getInfiniteMovableRows","infiniteCacheRows","panel","contentTable","infiniteRows","getMovableRows","getRowElements","getMovableRowElements","colgroup","testRow","fRows","mRows","rowLen","cellLen","rightRows","rightLen","needFullRefresh","infiniteData","infiniteRowVisibility","contentrows","clen","colIdx","getColumnIndexByUid","displayVal","colG","infiniteFreezeData","mTable","infiniteMovableData","setDisplayNone","invokedFromMedia","hideAtMedia","updateMediaColumns","trs","getHeaderColGroup","droppable","canSkip","setSelection","clearAll","getRowByIndex","getInfiniteRowIndex","firstRowIndex","getVirtualRowIndex","getMovableRowByIndex","setRowObjects","immutableModeRendering","oldKeys","newKeys","newRowObjs","oldIndexes","oldRowObjs","batchChangeKeys","getBatchEditedRecords","newIndexes","hasBatch","oldRowElements","currentLen","oldIndex","refreshImmutableContent","isEqual","objectEqualityChecker","old","primaryKey","getBatchChanges","newRowPosition","isDirty","updateCellIndex","rowEle","HeaderRender","frzIdx","notfrzIdx","isFirstCol","visualElement","headercelldiv","getStackedHeaderColumnByHeaderText","getColumnByUid","lockColumn","colIndex","cloneElement","widthService","colPosRefresh","renderCustomToolbar","updateCustomResponsiveToolbar","toggleStackClass","createHeaderTable","initializeHeaderDrag","initializeHeaderDrop","headerPanel","headerTable","tHead","skipDom","createTable","createHeader","tableEle","tblName","findHeaderRow","createHeaderContent","thead","caption","bodyCell","rowBody","Header","updateColGroup","frozenMode","colHeader","rowRenderer","headerRow","colDepth","getHeaderCells","colFreezeMode","len_2","HeaderIndent","DetailHeader","RowDragHIcon","lockcolPositionCount","lockColsRendered","appendCells","isFirstObj","isLastCol","isMovable","lastCol","isLockColumn","isFrozenLockColumn","scrollbar","getCellCnt","stackedLockColsCount","getStackedLockColsCount","isStackedLockColumn","isFrozenStack","ensureStackedFrozen","StackedHeader","getColSpan","isFirstCol_1","isLaststackedCol","inViewIndexes","isTrue","lockColsCount","getFrozenColSpan","normalizedfrzCols","mTblColGrp","mTbl","refreshUI","freezeReorder","setFrozenTable","getVirtualFreezeHeader","updateDefaultCursor","gCells","textWrapSettings","wrapMode","showDropArea","toolbar","toolbarItems","toolbarLeft","toolbarItem","showResponsiveCustomSort","showResponsiveCustomFilter","resToolbar","CellRenderer","locator","localizer","tabindex","rowChkBox","getGui","evaluate","fData","isReactCompiler","templateID","rNumber","invokeFormatter","refreshCell","refreshTD","cellIndex","parentRow","newTD","cloneAttributes","innerHtml","displayAsCheckBox","localeStr","fromFormatter","appendHtml","persistSelection","checkWrap","buildAttributeFromCell","clipMode","isCheckBoxType","AriaService","setStateAndProperties","setExpand","setSort","isBusy","invalid","setGrabbed","isGrabbed","grabbed","setDropTarget","isTarget","dropeffect","haspopup","rowcount","HeaderCellRenderer","hTxtEle","sortEle","gui","chkAllBox","fltrMenuEle","prepareHeader","hValueAccer","ariaAttr","innerDIV","headerValueAccessor","checkAllWrap","matchFlColumns","extendPrepareHeader","gridObj","headerTempID","headerTextAlign","matchFilteredColumns","StackedHeaderCellRenderer","toolTip","IndentCellRenderer","GroupCaptionCellRenderer","fKeyValue","captionTemplate","tempID","isVue","GroupCaptionEmptyCellRenderer","ExpandCellRenderer","HeaderIndentCellRenderer","DetailHeaderIndentCellRenderer","DetailExpandCellRenderer","RowDragDropRenderer","nodeElement","RowDragDropHeaderRenderer","Render","emptyGrid","counter","l10n","headerRenderer","getRenderer","contentRenderer","Content","isLayoutRendered","setHeight","setPadding","resetTemplates","tempPreventUpdate","commandDelIndex","getSelectedRecords","tempSelectedRecord","dataLength","totalRecordsCount","getCurrentViewRecords","prevPageMoving","pagerModule","pagerObj","gridColumns","detailTemplateID","toolbarTemplate","isFActon","isNeedForeignAction","getFData","deffered_1","disablePageWiseAggregates","validateGroupRecords","dataManagerFailure","deferred","sendBulkRequest","query_1","dmSuccess","dmFailure","renderEmptyRow","spanCount","colspan","dynamicColumnChange","updateColumnType","validationRules","isColTypeDef","isServerDateMap","actionArgs","isInfiniteDelete","isInfiniteEnd","updatesOnInitialRender","isInitialLoad","enableImmutableMode","alert","setRowCount","dataRowCount","buildColumns","isAutoGen","iterateComplexColumns","complexCols","instantiateRenderer","addRenderer","cellrender","addCellRenderer","group0","groupN","addWhere","curFilter","rPredicate","updateGroupInfo","untouched","uGroup","itemGroup","uGroupItem","CellRendererFactory","cellRenderMap","ServiceLocator","register","RendererFactory","rendererMap","rName","FocusStrategy","oneTime","swap","forget","skipFocus","focusByClick","prevIndexes","refMatrix","refreshMatrix","actions","isVirtualScroll","rowModelGen","focusCheck","onFocus","setActive","enableHeaderFocus","editModule","generate","validator","passiveFocus","skipAction","onBlur","removeFocus","getFocusInfo","elementToFocus","isContent","isFrozenRight","beforeArgs","byClick","clickArgs","clearOutline","onKeyPress","skipOn","activeKey","outline","swapInfo","jump","toHeader","toFrozen","toFrozenRight","getNextCurrent","active","setActiveByKey","lastIdxCell","clearIndicator","th","filterCell","focusVirtualElement","virtualData","isCancel","isKeyFocus","selectedRowIndex","preventScroll","getFocusedElement","fContent","frContent","fHeader","frHeader","setFocusedElement","addFocus","addOutline","focusHeader","resetFocus","focusContent","isFocused","isJump","getInfo","focusedColumnUid","getColumnByIndex","FixedContentFocus","FixedRightContentFocus","ContentFocus","FixedHeaderFocus","FixedRightHeaderFocus","HeaderFocus","cFocus","updateRow","isRowTemplate","newMovableRows","getMovableRowsObject","newFrozenRows","newfrRows","handlerInstance","focusElement","cellPosition","gridPosition","passiveHandler","restoreFocus","evts","filterfocus","actionsG","restoreFocusWithAction","internalCellFocus","getPrevIndexes","forgetPrevious","focusEle","getFocusable","allow","emptyTable","inValid","vector","keyActions","indexesByKey","getCurrentFromAction","editNextRow","allowNextRowEdit","isLastCellPrimaryKey","visibleIndex","isPresent","shouldFocusChange","rN","cN","oRowIndex","oCellIndex","nextRowFocusValidate","previousRowFocusValidate","firstIndex","frozenSwap","frSwap","enterFrozen","isHeaderFocus","optionals","defaultLen","rIndex","cIndex","isData","isSelectable","isCellWidth","getGridSeletion","allowSelection","allowColumnSelection","isLastCell","lastRow","headerSwap","fMatrix","focusModule","current1","current2","hMatrix","current3","SearchBox","searchFocus","searchBlur","wireEvent","unWireEvent","headerMat","PageSettings","ColumnChooserSettings","__assign","Selection","selectedRowCellIndexes","selectedRecords","preventFocus","selectedColumnsIndexes","isMultiShiftRequest","isMultiCtrlRequest","enableSelectMultiTouch","clearRowCheck","selectRowCheck","selectedRowState","chkAllCollec","isCheckedOnAdd","persistSelectedData","needColumnSelection","isCancelDeSelect","isPreventCellSelect","disableUI","isPersisted","cmdKeyPressed","cellselected","isMultiSelection","isAddRowsToSelection","initialRowSelection","isPrevRowSelection","autoFillRLselection","factory","initializeSelection","onActionBegin","fDataUpdate","getRowObj","currentIndex","onActionComplete","gridElement","hidePopUp","clearSelection","mouseDownHandler","isEditing","formObj","getSelectedMovableRow","getSelectedFrozenRightRow","getFrozenRightContent","getFrozenRightRowByIndex","getCurrentBatchRecordChanges","currentRecords","isToggle","enableSimpleMultiRowSelection","addRowsToSelection","selectData","selectedRow","selectedMovableRow","selectedFrozenRightRow","selectedIndex","frozenData","getRowObjectByIndex","clearRowSelection","isRowType","isRowSelected","activeTarget","rowSelectingCallBack","isCtrlPressed","isShiftPressed","previousRow","prevRowIndex","previousRowIndex","actualTarget","isHeaderCheckboxClicked","addMovableArgs","isRemoved","can","toggle","removed","checkboxMode","clearSelectedRow","selectRowCallBack","clearRow","disableInteracted","updateRowSelection","selectMovableRow","selectRowIndex","isHeaderCheckBoxClicked","updateRowProps","targetObj","frRow","mObj","previousMovRow","selectRowsByRange","endIndex","selectRows","getCollectionFromIndexes","rowIndexes","isSingleSel","selectedData","currentRow","prevRow","selectRowFn","rightEle","rowIndexes_1","checkboxOnly","checkboxColumn","rowIndexes_2","isUnSelected","enableToggle","rowDeselect","addRemoveClassesForRow","isHybrid","clearRowCallBack","selectedEle","updatePersistCollection","updateCheckBoxes","chkState","ensureCheckboxFieldSelection","pKey_1","updatePersistDelete","chkBox","nextElementSibling","checkedTarget","setCheckAllState","contextMenuModule","mouseButton","clearCellSelection","clearColumnSelection","row_1","mRow_1","fRightRow_1","rowIndex_1","foreignKeyData_1","getFrozenRightRows","isRowClicked","checkSelectAllClicked","getCheckAllStatus","updatePersistSelectedData","movableRow","rowDeselectCallBack","frozenRightRow","rowDeselectObj","getSelectedMovableCell","getMovableCellFromIndex","getColIndex","selectCell","isCellType","selectedCell","getCellFromIndex","isCellSelected","prevCIdxs","successCallBack","previousRowCell","prevECIdxs","getCellIndex","cellSelectingArgs","clearCell","updateCellSelection","currentCell","selectedRowCellIndex","updateCellProps","rIdx","selectCellsByRange","cellIndexes","stIndex","edIndex","cellSelectionMode","getLastColIndex","addAttribute","cellSelectedArgs","selectCells","rowCellIndexes","cellSelectArgs","addRowCellIndex","addCellsToSelection","hideAutoFill","cellIndexes_1","selectedCellIdx","cellDeselect","rowCellIndex","isRowAvail","selectedCells","getSelectedCellsElement","rowCell","cLen","bdrElement","showHideBorders","addMovableRows","mouseMoveHandler","gBRect","isCellDrag","startAFCell","startCell","endAFCell","selectLikeExcel","startDIndex","isAutoFillSel","showAFBorders","selectLikeAutoFill","startDCellIndex","drawBorders","createBorders","positionBorders","isLastRow","isFirstRow","isFirstCell","setBorders","bdrStr","stOff","endOff","parentOff","topOffSet","leftOffset","rightOffset","selectDirection","updateStartEndCells","getMovableContent","mcBdrElement","frcBdrElement","fhBdrElement","headerModule","getMovableHeader","mhBdrElement","frhBdrElement","applyBorders","applyBothFrozenBorders","drawAFBorders","bdrAFBottom","createAFBorders","positionAFBorders","bdrAFLeft","firstCellTop","firstCellLeft","parentRect","sTop","sLeft","totalHeight","totalWidth","scrolloffSet","bdrAFRight","bdrAFTop","leftRemove","topRemove","hideAFBorders","updateValue","createBeforeAutoFill","updateCell","getAutoFillCells","startCellIdx","isApply","startrowIdx","endrowIdx","endCellIdx","colLen","cellIdx","endCell","startCellIndex","trIdx","mouseUpHandler","mUPTarget","updateAutoFillPosition","lastCell","updateStartCellsIndex","autofill","enableAutoFill","rindex","isFrozenCol","isFrozenRow","colWidth","allowRowDragAndDrop","enableDrag","isUpdate","postion","clearSelAfterRefresh","onCellFocused","actionBeginFunction","actionCompleteFunction","refreshHeader","addEventListener_checkbox","removeEventListener_checkbox","isMacOS","keyDownHandler","keyUpHandler","getCheckAllBox","initPerisistSelection","prevColIndex","checkBoxSelectionChanged","isLeftRightFrozen","gobj","chkField","proxy_1","refreshPersistSelection","setRowSelection","getMovableContentTbody","getFrozenRightContentTbody","editChkBox","onDataBound","totalRecords","checkSelectAllAction","cRenderer","editForm","checkSelectAll","stateStr","rowCache","triggerChkChangeEvent","checkSelect","rowCellSelectionHandler","moveIntoUncheckCollection","updateSelectedRowIndex","selectedVal","isInteraction","checkToSelectAll","isServerRenderedVirtualization","checkedLen","popUpClickHandler","chkSelect","hoverFrozenRows","showPopup","headerSelectionHandler","headerAction","thLen","selectedIndexes","getSelectedRowCellIndexes","getKeyColIndex","applyDownUpKey","applyRightLeftKey","shiftDownKey","applyShiftLeftRightKey","applyHomeEndKey","applyCtrlHomeEndKey","ctrlPlusA","applySpaceSelection","stackedHeader","innerColumn","getstackedColumns","applyUpDown","selectColumn","selectColumnsByRange","innerColumnIndexes","detailIndentCell","dragdropIndentCell","selectedCol","getColumnHeaderByUid","isColSelected","isMultiColumns","clearColDependency","headerCell","previousColumnIndex","updateColSelection","selectedArgs","updateColProps","selectColumns","columnIndexes","getselectedCols","selectingArgs","selectColumnWithExisting","newCol","clearIndex","deselectedArgs","getFrozenRightColumnHeaderByIndex","getMovableColumnHeaderByIndex","columnDeselect","selectedHeader","getSelectedColumnCells","frRows","seletedcells","selectionString","onDataBoundFunction","setCheckAllForEmptyGrid","actionCompleteFunc","actionCompleteHandler","resizeEndFn","checkAllBox","isInfinitecroll","isSelectedRowIndexUpdating","Search","searchString","refreshSearch","onSearchComplete","cancelBeginEvent","ShowHide","showBy","getToggleFields","hideBy","getKeyBy","changedStateColumns","showHideArgs","currentViewCols","col1","col2","Scroll","lastScrollTop","previousValues","oneTimeReady","uiupdate","toolbarModule","refreshOverflow","mHdrHeight","ensureOverflow","getThreshold","removePadding","hDiv","footerDiv","getFooterContent","setScrollLeft","onFrozenContentScroll","isPreventScrollEvent","onContentScroll","scrollTarget","isDown","scrollDown","isFooter","onCustomScrollbarScroll","onTouchScroll","pointerType","pageXY","getPointXY","setPageXY","mScrollBar","sHeight","css","AggregateColumn","getTemplate","setPropertiesSilent","AggregateRow","Clipboard","copyContent","pasteHandler","isMacLike","platform","metaKey","clipBoardTextArea","x_1","y_1","scrollTo","paste","isAvail","dataRows","fTr","mTr","setCopyData","withHeader","getSelection","headerTextArray","getCopyData","checkBoxSelection","colIndexes","getColumnHeaderByIndex","setSelectionRange","isCell","isElement","queryCommandSupported","execCommand","blur","removeAllRanges","rowCellIndxes","gridObserver","BlazorAction","aria","virtualHeight","onDetailRowClick","addDeleteSuccess","editSuccess","setColumnVisibility","setServerOffSet","onGroupClick","setColVTableWidthAndTranslate","invokeServerDataBind","contentColGroup","currentAction","editArgs","rowData","gridRowId","gridRow","virtualContentModule","blzRowIndex","blazorDataLoad","foreignColumnsData","aggRows","aggRow","aggr","aggrds","groupedCols","setClientOffSet","batchChanges","getMediaColumns","setVirtualHeight","removeDisplayNone","renderedContentRows","renderedContentCells","setVirtualTrackHeight","VisibleGroupedRowsCount","translateX","getColumnOffset","startColIndex","endColIndex","virtualEle","setWrapperWidth","adjustTable","refreshOffsets","refreshVirtualElement","serverTimeZone","mergePersistGridData","resetPersistData","parseArgs","persistArgs","movableContentTable","movableHeaderTable","dataFailure","SortDescriptor","SortSettings","InfiniteScrollSettings","FilterSettings","SelectionSettings","SearchSettings","RowDropSettings","TextWrapSettings","ResizeSettings","GroupSettings","EditSettings","keyA","frozenRightCount","frozenLeftCount","visibleFrozenLeft","visibleFrozenRight","visibleMovable","frozenLeftColumns","frozenRightColumns","movableColumns","media","isFreezeRefresh","tableIndex","componentRefresh","rowUid","pageTemplateChange","mediaBindInstance","asyncTimeOut","enableLogger","Grid_1","keyEntity","scrollPosition","currentObject","pagerTemplate","setFrozenCount","allowExcelExport","allowPdfExport","isDetail","isCommandColumn","allowAdding","allowDeleting","extendRequiredModules","contextMenuItems","showColumnChooser","isForeignKeyEnabled","initProperties","initializeServices","mediaCol","filterOperators","greaterThan","greaterThanOrEqual","lessThan","lessThanOrEqual","notEqual","defaultLocale","EmptyRecord","True","False","InvalidFilterMessage","GroupDropArea","UnGroup","UnGroupButton","GroupDisable","FilterbarTitle","EmptyDataSourceError","Add","Edit","Cancel","Update","Delete","Pdfexport","Excelexport","Wordexport","Csvexport","Columnchooser","Item","EditOperationAlert","DeleteOperationAlert","SaveButton","OKButton","CancelButton","EditFormTitle","AddFormTitle","BatchSaveConfirm","BatchSaveLostChanges","ConfirmDelete","CancelEdit","ChooseColumns","SearchColumns","Matchs","FilterButton","ClearButton","StartsWith","EndsWith","Contains","Equal","NotEqual","LessThan","LessThanOrEqual","GreaterThan","GreaterThanOrEqual","ChooseDate","EnterValue","Copy","Group","Ungroup","autoFitAll","AutoFitAll","AutoFit","Export","FirstPage","LastPage","PreviousPage","NextPage","SortAscending","SortDescending","EditRecord","DeleteRecord","FilterMenu","SelectAll","Blanks","FilterTrue","FilterFalse","NoResult","ClearFilter","Clear","NumberFilter","TextFilter","DateFilter","DateTimeFilter","MatchCase","Between","CustomFilter","CustomFilterPlaceHolder","CustomFilterDatePlaceHolder","OR","ShowRowsWhere","FilterMenuDialogARIA","ExcelFilterDialogARIA","DialogEditARIA","ColumnChooserDialogARIA","ColumnMenuDialogARIA","CustomFilterDialogARIA","SortAtoZ","SortZtoA","SortByOldest","SortByNewest","SortSmallestToLargest","SortLargestToSmallest","Sort","downArrow","upArrow","rightArrow","leftArrow","shiftDown","shiftUp","shiftRight","shiftLeft","home","escape","ctrlHome","ctrlEnd","pageDown","ctrlAltPageUp","ctrlAltPageDown","altPageUp","altPageDown","altDownArrow","altUpArrow","ctrlDownArrow","ctrlUpArrow","ctrlPlusP","delete","f2","enter","ctrlEnter","shiftEnter","shiftTab","ctrlPlusC","ctrlShiftPlusH","ctrlSpace","ctrlLeftArrow","ctrlRightArrow","searchModule","checkLockColumns","processModel","gridRender","addListener","updateStackedFilter","gcol","getShowHideService","pushMediaColumn","matchMedia","mediaQueryUpdate","mediaColumn","showHider","refreshMediaCol","footerContent","enableHover","removeMediaListener","removeListener","eventInitializer","hasGridChild","destroyDependentModules","toolTipObj","keyboardModule","enableBoxSelection","checkCursor","requireRefresh","requireGridRefresh","freezeRefresh","isEllipsisTooltip","updateColumnObject","properties_1","rowTemplateFn","detailTemplateFn","extendedPropertyChange","maintainSelection","updateRTL","getToolbar","getContextMenu","columnMenuModule","getColumnMenu","showFilterBarOperator","updateResizeLines","updateGridLines","columnMenuItems","applyTextWrap","removeTextWrap","isModeChg","pending_1","deepWatch","gResult","enableVerticalRendering","fn_1","refreshFilter","setTablesCount","frozenLeft","frozenRight","getTablesCount","headerCells","stdHdrCell","updateColumnModel","updateColumnLevelFrozen","updateFrozenColumns","updateLockableColumns","leftCols","rightCols","movableCols","directFrozenCount","totalFrozenCount","frozenName","frozenCount","isRefresh","inview","vLen","ensureFrozenCols","individualColumn","stackedColumn","getLocaleConstants","setColumnIndexesInView","setGridHeaderContent","setGridContentTable","setGridContent","setGridHeaderTable","footerElement","getFooterContentTable","getPager","gridPager","setGridPager","getFrozenRowByIndex","getFrozenDataRows","getRowInfo","rowsObject","getFrozenRightRowElements","getAllDataRows","includeAdd","getFrozenLeftContentTbody","mrows","includAdd","dRows","getAllMovableDataRows","getAllFrozenDataRows","getAllFrozenRightDataRows","fieldIdx","pkName","movableSelectedRow","rowObjects","movableRowObjects","columnUid","rowsObj","getFrozenRightCellFromIndex","getFrozenLeftColumnHeaderByIndex","getColumnHeaderByField","getStackedColumns","getUidByColumnField","rowDropSettings","targetID","getColumnFieldNames","columnNames","getDetailTemplate","getEditHeaderTemplate","editHeaderTemplateFn","getEditFooterTemplate","editFooterTemplateFn","getSelectedRows","getSelectedColumnsUid","showColumns","hideColumns","getFrozenCount","splitFrozenCount","getVisibleFrozenLeftCount","getVisibleFrozenRightCount","getVisibleMovableCount","getFrozenRightColumns","getFrozenLeftColumns","getMovableColumns","getVisibleFrozenColumns","getVisibleFrozenColumnsCount","getVisibleFrozenCount","getFilterUIInfo","visibleFrozenColumns","goToPage","pageNo","updateExternalMessage","isMultiSort","sortModule","removeSortColumn","filterByColumn","filterOperator","filterValue","actualFilterValue","actualOperator","removeFilteredColsByField","isClearFilterBar","fieldname","startEdit","closeEdit","deleteRow","editCell","saveCell","enableToolbarItems","enableItems","clipboardModule","recalcIndentWidth","indentWidth","perPixel","parentOffset","applyWidth","newWidth","resetIndentWidth","reorderColumns","fromFName","toFName","reorderModule","reorderColumnByIndex","reorderColumnByTargetIndex","fromIndexes","rowDragAndDropModule","refreshDataSource","disableRowDD","headerRows","disValue","autoFitColumns","resizeModule","createColumnchooser","columnChooserModule","renderColumnChooser","valueFormatterService","gCols","sCols","sLen","parentDetails","parentKeyFieldValue","initForeignColumn","rendererFactory","createGridPopUpElement","gridLines","getTooltipStatus","htable","ctable","prevElement","myTableDiv","mySubDiv","myTable","myTr","mytd","onKeyPressed","mouseClickHandler","focusOutHandler","dblClickHandler","allowKeyboard","keyActionHandler","tapEvent","dataBoundFunction","isChildGrid","checkEdit","clonedColumn","dataRow","ariaOwns","keyPress","editFormValidate","persistedData","dataObj","mergeColumns","storedColumn","storedColumns","localCol","tCol","presskey","stopImmediatePropagation","collapse","refreshColumns","fCnt","frCnt","frTbl","colGrp","excelExport","excelExportProperties","isMultipleExport","workbook","isBlob","excelExportModule","csvExport","pdfExport","pdfExportProperties","pdfDoc","pdfExportModule","groupColumn","groupModule","groupExpandAll","expandAll","groupCollapseAll","collapseAll","clearGrouping","ungroupColumn","openColumnChooser","detailCollapseAll","detailRowModule","detailExpandAll","isContextMenuOpen","ensureModuleInjected","propertyNames","loggerModule","applyBiggerTheme","getPreviousRowData","hideScroll","scrollBar","mvblScrollBar","mvblChild","getRowIndexByPrimaryKey","pKvalue","getFilteredRecords","getUserAgent","frozenRigtRows","cntRows","rows_2","getHiddenColumns","calculatePageSizeByParentHeight","pagesize","getNoncontentHeight","getSummaryValues","summaryCol","summaryData","serverExcelExport","exportGrid","serverPdfExport","setHeaderText","gridInput","submit","updateRowValue","setForeignKeyData","colpending","resetFilterDlgPosition","filterDlg","gClient","fClient","processRowChanges","batchAsyncUpdate","processBulkRowChanges","loopstring","setNewData","oldValues","bulkRefresh","deleteRowElement","mtr","out_i_1","this_3","_loop_4","isRowExist","this_4","renderRowElement","addRowObject","moveTbody","isInteger","getMovableHeaderTbody","getFrozenHeaderTbody","getFrozenRightHeaderTbody","showCustomFilter","propIsEnumerable","toObject","test1","test2","test3","shouldUseNative","DESCRIPTORS","$fails","wks","wksDefine","enumKeys","_create","gOPNExt","$GOPD","$GOPS","$DP","gOPN","$JSON","_stringify","HIDDEN","TO_PRIMITIVE","isEnum","SymbolRegistry","AllSymbols","OPSymbols","ObjectProto","USE_NATIVE","QObject","setter","findChild","setSymbolDesc","D","protoDesc","_k","$defineProperty","$defineProperties","$propertyIsEnumerable","$getOwnPropertyDescriptor","$getOwnPropertyNames","$getOwnPropertySymbols","IS_OP","$set","es6Symbols","wellKnownSymbols","keyFor","useSetter","useSimple","FAILS_ON_PRIMITIVES","$replacer","arrayIndexOf","toAbsoluteIndex","IS_INCLUDES","$this","hiddenKeys","memoizeCapped","rePropName","reEscapeChar","quote","subString","baseToString","baseHasIn","hasPath","nativeMax","otherArgs","thisArg","baseSetToString","shortOut","isPrototype","nativeKeys","ArrayProto","SPECIES","TYPE","SAFE_CLOSING","riter","skipClosing","baseTimes","inherited","isArr","isArg","isBuff","isType","skipIndexes","allocUnsafe","isDeep","getSymbolsIn","baseGetAllKeys","keysFunc","symbolsFunc","cloneArrayBuffer","typedArray","byteOffset","baseCreate","arraySome","equalFunc","isPartial","arrLength","othLength","stacked","arrValue","othValue","compared","othIndex","baseOrderBy","baseRest","isIterateeCall","iteratees","srcValue","baseForOwn","baseEach","createBaseEach","baseFor","createBaseFor","baseUniq","baseFindIndex","baseIsNaN","strictIndexOf","arrayMap","baseIntersection","castArrayLikeObject","intersectionWith","arrays","mapped","nativeMin","caches","isArrayLikeObject","assignMergeValue","baseMergeDeep","keysIn","safeGet","baseMerge","srcIndex","cmp","cycles","aobj","bobj","$keyword","$ruleType","$async","$refKeywords","RULES","strictKeywords","$unknownKwd","keywords","$keywordsMsg","logger","sourceCode","processCode","$lvl","$dataLvl","dataLevel","$schemaPath","$errSchemaPath","errSchemaPath","$breakOnError","$valid","$$outStack","createErrors","errorPath","messages","verbose","__err","compositeRule","$top","dataPathArr","useDefaults","strictDefaults","$defaultMsg","$closingBraces1","$closingBraces2","$typeSchema","$typeIsArray","nullable","extendRefs","$comment","coerceTypes","$coerceToTypes","$rulesGroup","$shouldUseGroup","$method","$dataType","$coerced","$bracesCoercion","arr1","$type","$i","l1","$parentData","l2","arr3","$propertyKey","l3","$sch","$passData","useDefault","arr4","l4","arr5","$rule","i5","l5","$shouldUseRule","$code","implements","impl","$ruleImplementsSomeKeyword","$schemaValue","$isData","$isMax","$exclusiveKeyword","$schemaExcl","$isDataExcl","$op","$notOp","$errorKeyword","$schemaValueExcl","$exclusive","$exclType","$exclIsNumber","$opStr","$opExpr","defer","channel","port","invoke","html","cel","setTask","clearTask","clearImmediate","MessageChannel","Dispatch","queue","run","port2","port1","onmessage","importScripts","newPromiseCapability","promiseCapability","basePick","pick","flatRest","cloneDeep","compare","computeLcm","defaultsDeep","flatten","flattenDeep","intersection","pullAll","uniq","uniqWith","without","withoutArr","isPropertyRelated","propertyRelated","isItemsRelated","itemsRelated","isSchema","isFalse","schemaResolver","compacted","stringArray","notUndefined","allUniqueKeys","maximumValue","minimumValue","getValues","schemas","getItemSchemas","subSchemas","sub","schemaAtPos","throwIncompatible","asJSON","variable","cleanupReturnValue","returnObject","createRequiredSubMerger","parents","subKey","callGroupResolver","resolverName","resolvers","mergers","schemaGroupProps","itemsArray","mergeSchemaGroup","extractor","createRequiredMetaArray","schemaArrays","schemaProps","defaultResolvers","normalized","common","ignoreAdditionalProperties","subSchema","otherSubSchemas","ownPatterns","patternProperties","allOtherKeys","keysMatchingPattern","pk","ownPatternKeys","allOtherPatterns","childKey","childSchemas","innerCompacted","innerArrays","innerSchemas","arrayMetaScheams","schemasAtLastPos","itemsCompacted","schemaGroups","tryMergeSchemaGroups","getAnyOfCombinations","arrOfArrays","combinations","combination","not","reportUnresolved","integers","enum","enums","merger","totalSchemas","merged","propertyKeys","itemKeys","compareProp","defaultResolver","calledWithArray","unresolvedSchemas","newItems","mergeWithArray","addToAllOf","getAllOf","allSchema","examples","exclusiveMaximum","exclusiveMinimum","maxItems","maxProperties","minLength","minProperties","copyArray","compileSchema","Cache","stableStringify","formats","$dataMetaSchema","schemaKeyRef","getSchema","schemaObj","_addSchema","_meta","addSchema","_skipValidation","checkUnique","skipValidation","validateSchema","throwOrLogError","defaultMeta","META_SCHEMA_ID","errorsText","keyRef","_getSchemaObj","_fragments","_getSchemaFragment","removeSchema","_removeAllSchemas","_cache","del","_formats","separator","shouldAddSchema","cached","addUsedSchema","recursiveMeta","willValidate","put","compiling","callValidate","currentOpts","_metaOpts","refs","_validate","compileAsync","customKeyword","addKeyword","getKeyword","removeKeyword","validateKeyword","errorClasses","ValidationError","META_IGNORE_OPTIONS","META_SUPPORT_DATA","setLogger","_loadingSchemas","_compilations","_get$IdOrId","_get$Id","chooseGetId","loopRequired","_errorDataPathProperty","metaOpts","getMetaSchemaOptions","addInitialFormats","addInitialKeywords","$dataSchema","metaSchema","addDefaultMetaSchema","optsSchemas","addInitialSchemas","hasExcape","escapeMatcher","escapeReplacer","untilde","compilePointer","pointer","hasNextPart","compiled","getTextNode","childnode","enableRipple","rippleSpan","frameSpan","labelSpan","reactIs","REACT_STATICS","contextType","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","KNOWN_STATICS","caller","arity","MEMO_STATICS","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","BrowserRouter","createHistory","resolveToLocation","normalizeToLocation","forwardRefShim","forwardRef","LinkAnchor","innerRef","navigate","isModifiedEvent","forwardedRef","Link","ariaCurrent","activeClassName","activeStyle","classNameProp","isActiveProp","locationProp","escapedPath","classnames","joinClassnames","Form","_pick","getAllPaths","_obj","newPaths","formValue","_get","_isEmpty","getStateFromProps","mustValidate","noValidate","liveValidate","newFormData","omitExtraData","liveOmit","retrievedSchema","getFieldNames","getUsedFormData","schemaValidation","schemaValidationErrors","schemaValidationErrorSchema","extraErrors","_errorSchema","_this$props","_this$props2","persist","_errors","_errorSchema2","onSubmit","formElement","inputFormData","currentErrors","_this$props3","_this$getRegistry","getRegistry","_this$state","_this$props4","ErrorList","showErrorList","_getDefaultRegistry","ArrayFieldTemplate","ObjectFieldTemplate","FieldTemplate","CustomEvent","_this$props5","deprecatedAutocomplete","autocomplete","currentAutoComplete","autoComplete","enctype","acceptcharset","noHtml5Validate","_this$state2","_SchemaField","SchemaField","FormTag","encType","acceptCharset","renderErrors","withTheme","themeProps","directProps","PieBase","initAngles","radiusCollection","minRadius","maxRadius","seriesRadius","connectorStyle","explodeOffset","findCenter","defaultLabelBound","totalAngle","getLabelRadius","accumulationRect","getSeriesBound","accumulationRectCenter","getRectFromAngle","nextQuandrant","lastQuadrant","getPathArc","getDoughnutPath","getPiePath","clockWise","innerStart","innerEnd","doAnimation","PieSeries","getPathOption","findSeries","toggleInnerPoint","createBorderEle","accumulationId","borderElement","srcElem","innerPie","seriousGroup","addSvgClass","borderExplode","removeBorder","currentStartAngle","curentDegree","seriesElement","accBaseModule","groupId","clipslice","for","isMounted","enqueueForceUpdate","enqueueReplaceState","enqueueSetState","updater","isReactComponent","I","isPureReactComponent","J","K","__self","__source","M","$$typeof","_owner","Q","keyPrefix","V","Z","ba","ReactCurrentDispatcher","ReactCurrentBatchConfig","suspense","ReactCurrentOwner","IsSomeRendererActing","Children","only","Fragment","Profiler","PureComponent","StrictMode","Suspense","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","_calculateChangedBits","_currentValue","_currentValue2","_threadCount","_context","createFactory","createRef","isValidElement","lazy","_ctor","_status","_result","useCallback","useContext","useDebugValue","useEffect","useImperativeHandle","useLayoutEffect","useMemo","useReducer","useRef","useState","da","ea","fa","ha","ia","ja","la","ma","na","oa","pa","qa","ra","sa","extractEvents","eventTypes","ta","phasedRegistrationNames","registrationName","va","wa","xa","ya","za","Aa","Ba","Ca","stateNode","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","Ua","Va","xlinkHref","Wa","Xa","Sa","Ta","Ra","Ya","Za","$a","ab","bb","db","eb","fb","gb","hb","ib","jb","lb","mb","nb","pb","qb","_debugOwner","_debugSource","lineNumber","return","rb","sb","xb","_valueTracker","stopTracking","tb","yb","zb","defaultChecked","_wrapperState","initialChecked","Ab","initialValue","controlled","Bb","Cb","Db","Eb","Gb","Fb","Hb","defaultSelected","Ib","dangerouslySetInnerHTML","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","MSApp","execUnsafeLocalFunction","namespaceURI","Rb","nodeValue","Sb","Tb","animationend","animationiteration","animationstart","transitionend","Ub","Vb","Wb","transition","Xb","Yb","Zb","$b","ac","bc","cc","alternate","effectTag","ec","memoizedState","dehydrated","fc","hc","gc","ic","jc","kc","_dispatchListeners","_dispatchInstances","isPropagationStopped","isPersistent","release","mc","nc","correspondingUseElement","oc","pc","qc","topLevelType","targetInst","ancestors","rc","eventSystemFlags","containerInfo","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Kc","blockedOn","Lc","pointerId","Mc","Nc","Pc","unstable_runWithPriority","priority","hydrate","Qc","Rc","Sc","Tc","Uc","unstable_scheduleCallback","unstable_NormalPriority","Vc","Wc","Yc","Zc","$c","ad","bubbled","captured","eventPriority","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","Oc","jd","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRowEnd","gridRowSpan","gridRowStart","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","orphans","tabSize","widows","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","kd","ld","md","setProperty","nd","menuitem","br","embed","hr","keygen","track","wbr","od","pd","qd","rd","sd","ud","vd","nextSibling","xd","HTMLIFrameElement","yd","contentEditable","Dd","Ed","Fd","autoFocus","Gd","__html","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","dispatchConfig","Ud","_targetInst","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","Interface","isDefaultPrevented","defaultPrevented","ee","eventPool","fe","destructor","de","getPooled","cancelBubble","eventPhase","isTrusted","ge","he","ie","je","ke","documentMode","le","me","ne","oe","beforeInput","compositionEnd","compositionStart","compositionUpdate","pe","qe","detail","se","ve","te","ue","we","tel","week","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","detachEvent","He","Ie","attachEvent","Je","Ke","Le","Me","_isInputEventSupported","Ne","Oe","Alt","Control","Meta","Shift","Pe","getModifierState","Qe","Re","Se","Te","Ue","Ve","screenX","screenY","fromElement","movementX","movementY","We","pressure","tangentialPressure","tiltX","tiltY","twist","Xe","mouseEnter","mouseLeave","pointerEnter","pointerLeave","Ye","parentWindow","$e","af","bf","cf","df","ef","ff","gf","hf","jf","selectionStart","selectionEnd","anchorNode","anchorOffset","focusNode","focusOffset","kf","lf","animationName","elapsedTime","pseudoElement","mf","clipboardData","nf","of","pf","Esc","Spacebar","Up","Down","Del","Win","Menu","Apps","MozPrintableKey","qf","8","9","12","13","16","17","18","19","20","27","32","33","34","35","36","37","38","39","40","45","46","112","113","114","115","116","117","118","119","120","121","122","123","144","145","224","rf","sf","dataTransfer","tf","targetTouches","uf","vf","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","wf","SimpleEventPlugin","EnterLeaveEventPlugin","ChangeEventPlugin","SelectEventPlugin","BeforeInputEventPlugin","yf","zf","Af","Bf","Cf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Df","Ef","Ff","Gf","__reactInternalMemoizedMergedChildContext","Hf","If","Jf","Kf","unstable_cancelCallback","Lf","unstable_requestPaint","Mf","unstable_now","Nf","unstable_getCurrentPriorityLevel","Of","unstable_ImmediatePriority","Pf","Qf","Rf","unstable_LowPriority","Sf","unstable_IdlePriority","Tf","Uf","unstable_shouldYield","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","childExpirationTime","qg","firstContext","expirationTime","rg","sg","responders","tg","ug","updateQueue","baseState","baseQueue","pending","effects","vg","wg","suspenseConfig","payload","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Jg","_reactInternalFiber","Gg","Hg","Ig","Kg","Lg","Mg","UNSAFE_componentWillReceiveProps","Ng","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","Og","Pg","_stringRef","Qg","Rg","lastEffect","nextEffect","firstEffect","Sg","Tg","Ug","implementation","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","dh","eh","fh","gh","memoizedProps","revealOrder","ih","responder","jh","kh","lh","mh","nh","oh","ph","qh","uh","vh","wh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","xh","yh","zh","Ah","deps","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","readContext","useResponder","useDeferredValue","useTransition","Oh","Ph","Qh","Rh","Sh","Th","pendingProps","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","gi","hi","pendingContext","ni","pi","qi","retryTime","ji","fallback","unstable_avoidThisFallback","ki","li","isBackwards","rendering","renderingStartTime","tail","tailExpiration","tailMode","mi","ri","si","wasMultiple","multiple","createTextNode","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","WeakSet","Ci","Fi","Ei","Gi","__reactInternalSnapshotBeforeUpdate","Hi","Ii","Ji","Ki","Li","Di","Mi","Ni","Oi","Pi","Qi","_reactRootContainer","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","componentDidCatch","aj","componentStack","Rj","bj","cj","dj","kj","lj","mj","nj","oj","qj","rj","sj","tj","uj","vj","wj","timeoutMs","xj","yj","zj","lastExpiredTime","Aj","firstPendingTime","lastPingedTime","nextKnownPendingLevel","callbackExpirationTime","callbackPriority","callbackNode","Bj","timeout","Cj","Dj","Ej","Fj","Gj","Hj","finishedWork","finishedExpirationTime","lastSuspendedTime","Ij","timeoutHandle","Jj","busyMinDurationMs","busyDelayMs","Kj","Mj","Nj","pingCache","Oj","ub","Pj","Xc","Qj","Sj","firstSuspendedTime","rangeCount","wb","activeElementDetached","focusedElem","selectionRange","Tj","wd","compareDocumentPosition","createRange","setStart","addRange","setEnd","vb","Uj","Vj","Wj","ob","Xj","unstable_observedBits","Zj","pendingChildren","ak","bk","ck","dk","ek","fk","Jc","_internalRoot","gk","ik","hk","jk","kk","unmount","Lj","lk","Events","findFiberByHostInstance","isDisabled","supportsFiber","onCommitFiberRoot","onCommitFiberUnmount","Yj","overrideHookState","overrideProps","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","bundleType","rendererPackageName","createPortal","findDOMNode","flushSync","unmountComponentAtNode","unstable_batchedUpdates","unstable_createPortal","unstable_renderSubtreeIntoContainer","unstable_forceFrameRate","sortIndex","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_wrapCallback","runtime","Op","hasOwn","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","sent","_sent","dispatchException","abrupt","tryCatch","makeInvokeMethod","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","previousPromise","callInvokeWithMethodAndArg","__await","unwrapped","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","ctor","mark","awrap","skipTempReset","rootRecord","rval","exception","caught","hasCatch","hasFinally","finallyEntry","thrown","delegateYield","regeneratorRuntime","accidentalStrictMode","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_arr","_n","_s","normalCompletion","didErr","_e2","arrayWithoutHoles","iterableToArray","nonIterableSpread","singleMatcher","multiMatcher","decodeComponents","components","encodedURI","replaceMap","customDecodeURIComponent","separatorIndex","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","runClearTimeout","browser","env","argv","versions","once","removeAllListeners","emit","prependListener","prependOnceListener","cwd","chdir","umask","$Object","getKeys","gOPS","windowNames","getWindowNames","TO_STRING","addToUnscopables","Arguments","$getPrototypeOf","buggy","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","shim","componentName","propFullName","getShim","ReactPropTypes","basePickBy","hasIn","baseSet","nativeObjectToString","isOwn","unmasked","memoize","memoized","Hash","hashClear","hashDelete","hashGet","hashHas","hashSet","isMasked","reIsHostCtor","reIsNative","coreJsData","maskSrcKey","assocIndexOf","getMapData","symbolProto","symbolToString","nested","hasFunc","spreadableSymbol","isConcatSpreadable","constant","nativeNow","lastCalled","stamp","remaining","typedArrayTags","strong","redefineAll","anInstance","forOf","$iterDefine","setSpecies","SIZE","getEntry","getConstructor","IS_MAP","ADDER","_l","callbackfn","setStrong","each","IS_WEAK","IS_ADDER","asc","$create","IS_FILTER","IS_SOME","IS_EVERY","IS_FIND_INDEX","NO_HOLES","speciesConstructor","COLLECTION","mapping","mapFn","nextItem","createProperty","arrayLike","aLen","mapfn","isIterable","$assign","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Lazy","Portal","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","baseClone","CLONE_DEEP_FLAG","arrayEach","baseAssign","baseAssignIn","cloneBuffer","copySymbols","copySymbolsIn","getAllKeys","getAllKeysIn","initCloneArray","initCloneByTag","initCloneObject","isMap","isSet","cloneableTags","isFlat","isFull","isFunc","subValue","pairs","LARGE_ARRAY_SIZE","copyObject","nativeKeysIn","isProto","resIndex","cloneDataView","cloneRegExp","cloneSymbol","cloneTypedArray","reFlags","symbolValueOf","objectCreate","baseIsMap","nodeIsMap","baseIsSet","nodeIsSet","isBoolean","normalizeArray","undef","undefEmpty","undefAndZero","emptySchema","emptyObjUndef","undefArrayEqual","schemaGroup","allProps","aVal","bVal","keyValEqual","unsortedArray","uniqueA","uniqueB","comparers","acceptsUndefined","innerCompare","equalArrays","equalByTag","equalObjects","objectTag","objIsArr","othIsArr","objTag","othTag","objIsObj","othIsObj","isSameTag","objIsWrapped","othIsWrapped","objUnwrapped","othUnwrapped","mapToArray","objProps","objLength","skipCtor","objCtor","othCtor","baseIteratee","baseMap","baseSortBy","compareMultiple","orders","baseMatches","baseMatchesProperty","baseIsMatch","getMatchData","matchesStrictComparable","matchData","noCustomizer","COMPARE_PARTIAL_FLAG","isStrictComparable","baseProperty","basePropertyDeep","fromRight","eachFunc","compareAscending","objCriteria","criteria","othCriteria","ordersLength","valIsDefined","valIsNull","valIsReflexive","valIsSymbol","othIsDefined","othIsNull","othIsReflexive","othIsSymbol","sources","guard","propsIndex","propsLength","gcd","isIntegerArray","clbk","nargs","MAXINT","bitwise","customDefaultsMerge","mergeWith","toPlainObject","mergeFunc","isTyped","createAssigner","basePullAll","baseIndexOfWith","castFunction","baseDifference","valuesLength","valuesIndex","endPos","getIterator","validateGenerator","checkCompiling","compIndex","endCompiling","patternCode","patterns","defaultCode","refValCode","customRuleCode","vars","statement","patternsHash","defaultsHash","customRules","compilation","localCompile","cv","_root","isRoot","resolveRef","usePattern","useCustomRule","makeValidate","_refVal","refCode","refIndex","resolvedRef","rootRefId","addLocalRef","refId","replaceLocalRef","removeLocalRef","inline","valueStr","rule","definition","macro","sets","xl","HEXDIG$$","PCT_ENCODED$","subexp","SUB_DELIMS$$","RESERVED$$","isIRI","SCHEME$","ALPHA$$","USERINFO$","DEC_OCTET_RELAXED$","H16$","LS32$","IPV6ADDRESS1$","IPV6ADDRESS2$","IPV6ADDRESS3$","IPV6ADDRESS4$","IPV6ADDRESS5$","IPV6ADDRESS6$","IPV6ADDRESS7$","IPV6ADDRESS8$","IPV6ADDRESS9$","ZONEID$","UNRESERVED$$","IPV6ADDRESS$","IP_LITERAL$","IPV6ADDRZ_RELAXED$","HOST$","PORT$","DIGIT$$","AUTHORITY$","PCHAR$","SEGMENT$","SEGMENT_NZ$","SEGMENT_NZ_NC$","PATH_ABEMPTY$","PATH_ABSOLUTE$","QUERY$","FRAGMENT$","HIER_PART$","URI$","RELATIVE_PART$","RELATIVE$","IPV4ADDRESS$","buildExps","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","encoded","extra","digitToBasic","digit","adapt","firstTime","baseMinusTMin","inputLength","bias","basic","oldi","baseMinusT","ucs2decode","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","punycode","mapDomain","SCHEMES","chr","newStr","il","decodeUnreserved","decStr","pctDecChars","protocol","address","zone","firstFields","lastFields","isLastFieldIPv4Address","fieldCount","lastFieldsStart","_normalizeIPv4","longestZeroFields","lastLongest","newHost","newFirst","newLast","URI_PARSE","NO_MATCH_IS_UNDEFINED","uriString","_normalizeIPv6","schemeHandler","uriTokens","$1","$2","RDS1","RDS2","RDS3","RDS5","authority","_recomposeAuthority","removeDotSegments","skipNormalization","relative","IRI_PROTOCOL","URI_PROTOCOL","http","VCHAR$$","UNRESERVED","PCT_ENCODED","NOT_LOCAL_PART","NOT_HFNAME","NOT_HFVALUE","mailtoComponents","unknownHeaders","hfields","hfield","toAddrs","unescapeComponent","addr","toAddr","atIdx","localPart","URN_PARSE","urnComponents","scheme","nid","nss","urnScheme","uriComponents","UUID","uuidComponents","https","mailto","urn","schemelessOptions","resolveComponents","uriA","uriB","_traverse","pre","post","arrayKeywords","propsKeywords","skipKeywords","const","DATE","DAYS","TIME","HOSTNAME","URITEMPLATE","JSON_POINTER_URI_FRAGMENT","isLeapYear","full","fast","dateTime","DATE_TIME_SEPARATOR","NOT_URI_FRAGMENT","Z_ANCHOR","ruleModules","ALL","implKeywords","$refCode","$refVal","$message","missingRefs","$it","$nextValid","passContext","__callValidate","$closingBraces","$currentBaseId","$allSchemasEmpty","$errs","$wasComposite","$idx","$dataNxt","$nextData","$nonEmptySchema","$schemaDeps","$propertyDeps","$ownProperties","ownProperties","$property","$deps","$currentErrorPath","$useData","$prop","$propertyPath","$missingProperty","$vSchema","$unknownFormats","$allowUnknown","$format","$isObject","$formatType","$formatRef","$thenSch","$elseSch","$thenPresent","$elsePresent","$ifClause","$additionalItems","$currErrSchemaPath","$allErrorsOption","$prevValid","$passingSchemas","$key","$dataProperties","$schemaKeys","notProto","$pProperties","$pPropertyKeys","$aProperties","$someProperties","$noAdditional","$additionalIsSchema","$removeAdditional","removeAdditional","$checkAdditional","$required","$requiredHash","$pProperty","$additionalProperty","$useDefaults","$hasDefault","$invalidName","$propertySch","$loopRequired","$itemType","KEYWORDS","keywordsJsonPointers","loadSchema","loadMetaSchemaOf","_compileAsync","loadMissingSchema","schemaPromise","removePromise","definitionSchema","_addRule","ruleGroup","_validateKeyword","$compile","$inline","$macro","$ruleValidate","$validateCode","$definition","$rDef","$validateSchema","$ruleErrs","$ruleErr","$asyncKeyword","statements","$parentDataProperty","def_callRuleValidate","modifying","def_customError","simpleTypes","$parseInt","$trim","radix","ltrim","rtrim","exporter","ALIAS","FORCE","$includes","build","clusterWorkerId","seedValue","worker","workerId","newCharacters","_seed_","previousSeconds","seconds","loopCounter","randomByte","mask","LN2","Internal","newGenericPromiseCapability","OwnPromiseCapability","Wrapper","task","microtask","newPromiseCapabilityModule","perform","promiseResolve","v8","$Promise","isNode","FakePromise","PromiseRejectionEvent","isThenable","isReject","chain","_v","reaction","exited","_h","onHandleUnhandled","exit","onUnhandled","unhandled","isUnhandled","onunhandledrejection","onrejectionhandled","$reject","_w","$resolve","executor","onFulfilled","onRejected","capability","$index","alreadyCalled","race","un","macrotask","MutationObserver","WebKitMutationObserver","standalone","observe","characterData","onFinally","rangeOptions","DateElement","autofocus","SelectWidget","enumOptions","AltDateWidget","nowDateObj","dateElementProps","elemProps","hideNowButton","setNow","hideClearButton","yearsRange","AltDateTimeWidget","BaseInput","_JSON$stringify","inputProps","rawErrors","inputType","emptyValue","example","schemaRequiresTrueValue","CheckboxWidget","_onChange","DescriptionField","CheckboxesWidget","enumDisabled","itemDisabled","disabledCls","at","selectValue","deselectValue","ColorWidget","DateWidget","DateTimeWidget","EmailWidget","addNameToDataURL","dataURL","processFile","_Promise","FilesInfo","filesInfo","fileInfo","FileWidget","dataURLs","_dataURItoBlob","inputRef","HiddenWidget","PasswordWidget","RadioWidget","_","RangeWidget","nums","processValue","TextareaWidget","TextWidget","URLWidget","UpDownWidget","IconButton","_props$type","icon","otherProps","AddButton","addable","orderable","removable","ArrayFieldTitle","TitleField","ArrayFieldDescription","DefaultArrayItem","btnStyle","paddingLeft","paddingRight","hasToolbar","justifyContent","hasMoveUp","hasMoveDown","onReorderClick","hasRemove","onDropIndexClick","DefaultFixedArrayFieldTemplate","canAdd","onAddClick","DefaultNormalArrayFieldTemplate","generateRowId","shortid","generateKeyedFormData","keyedToPlainFormData","keyedFormData","keyedItem","ArrayField","_this$props$registry","newKeyedFormDataRow","_getNewFormDataRow","newKeyedFormData","updatedKeyedFormData","_parseInt","newIndex","_newKeyedFormData","reOrderArray","_keyedFormData","formItems","_this$props4$registry","UnsupportedField","renderFixedArray","renderFiles","renderMultiSelect","renderNormalArray","_this$props5$registry","arrayProps","canAddItem","itemErrorSchema","itemIdPrefix","itemIdSchema","renderArrayFieldItem","canMoveUp","canMoveDown","itemData","itemUiSchema","_this$props6","_this$props6$registry","_getUiOptions$enumOpt","_getUiOptions$enumOpt2","onSelectChange","_this$props7","_this$props7$registry","_getUiOptions2","_getUiOptions2$widget","_this3","_this$props8","_this$props8$registry","itemSchemas","additionalSchema","additional","canRemove","Template","_props$canRemove","_props$canMoveUp","_props$canMoveDown","_this$props9","_this$props9$registry","_orderable$removable$","moveUp","moveDown","isItemRequired","onChangeForIndex","onAddIndexClick","prevState","nextFormData","previousKeyedFormData","previousKeyedFormDatum","BooleanField","_props$registry","_getUiOptions","_getUiOptions$widget","AnyOfField","selectedOption","newOption","optionsToDiscard","_option","_formData","_options","prevProps","matchingOption","_getMatchingOption","optionSchema","baseType","uiOptions","onOptionChange","trailingCharMatcherWithPrefix","trailingCharMatcher","NumberField","_React$Component","lastValue","processed","StringField","handleChange","DefaultObjectFieldTemplate","expandable","canExpand","ObjectField","_getPrototypeOf2","wasPropertyKeyModified","addedByAdditionalProperties","copiedFormData","preferredKey","newKey","getAvailableKey","keyValues","renamedObj","getDefaultValue","orderedProperties","_this$props2$registry","templateProps","onKeyChange","onPropertyChange","onDropPropertyClick","handleAddClick","COMPONENT_TYPES","Label","htmlFor","LabelInput","Help","help","_props$errors","DefaultTemplate","WrapIfAdditional","classNames","keyLabel","SchemaFieldRender","_props$wasPropertyKey","FieldComponent","getFieldComponent","fieldErrorSchema","fieldProps","rawDescription","rawHelp","_AnyOfField","_OneOfField","OneOfField","defaultWidget","_getUiOptions$placeho","NullField","MultiSchemaField","AccumulationSeriesDirective","AccumulationSeriesCollectionDirective","AccumulationLegend","titleRect","getLegendOptions","seriesType","legendShape","extraWidth","extraHeight","titlePlusArrowSpace","legendEventArgs","rowWidth","columnWidth","columnHeight","totalRowCount","getMaxColumn","maxPageColumn","maxColumnWidth","getAvailWidth","tx","legendX","prevLegend","previousBound","availablewidth","getSmartLegendLocation","legendBound","getTitleRect","legendByIndex","legendCollections_1","legendItemsId","legendItemsId_1","currentSeries","sliceVisibility","removeSvg","refreshPoints","renderElements","legendSelection","sliceAnimate","AccumulationDataLabel","rightSideRenderingPoints","leftSideRenderingPoints","getDataLabelPosition","getLabelDistance","getLabelRegion","marginValue","labelAngle","enableSmartLabels","getSmartLabel","getLabelLocation","circular","connectorLength","findPreviousPoint","isOverlapping","isConnectorLineOverlapping","setOuterSmartLabel","labelRadius_1","areaRect","textTrimming","setPointVisibileFalse","setPointVisibleTrue","textsize","getOverlappedAngle","setSmartLabelForSegments","prevPoint","textRegion","overlapHeight","getEdgeOfLabel","previousstart","previousend","isLineRectangleIntersect","line1","line2","isLinesIntersect","point1","point2","point11","point12","lies","getConnectorPath","connector","getConnectorStartPoint","getPerpendicularDistance","getPolyLinePath","controlPoints","getBezierPoint","p0","labelshape","labelLocation","extraSpace","triangleSize","labelOffset","location_2","argsFont","isReactCallback","getTemplateSize","correctLabelRegion","modifiedPoints","extendedLabelsCalculation","modifiedPoints_1","finalizeDatalabels","dataLabelElement","location_3","setTemplateStyle","startLocation","textWidth","enableRotation","getSaturatedColor","doTemplateAnimation","saturatedColor","getLabelBackground","backgroundColor","rgbValue","halfSidePoints","skipPoints","arrangeLeftSidePoints","isIncreaseAngle","arrangeRightSidePoints","startFresh","angleChanged","checkAngle","rightSideRenderPoints","lastPoint","changeLabelAngle","isOverlapWithNext","decreaseAngle","increaseAngle","leftSideRenderPoints","isOverlapWithPrevious","isRightSide","newAngle","variableR","currentPointIndex","halfsidePoints","angleDiff","prevAngleDiff","secondPrevPoint","thirdAngleDiff","AccumulationTooltip","mouseLeaveHandler","fadeOutDuration","renderSeriesTooltip","getPieData","triggerTooltipRender","getTooltipText","findHeader","firstText","pointY","pointText","seriesName","tooltipSuccess","parseTemplate","dataValue","GridComponent","immediateRender","cssClassName","removeRippleEffect","tempContent","setIconCss","controlStatus","iconCss","iconPosition","btnClickHandler","focusIn","resizeClassList","Resize","tapped","isDblClk","findColumn","newarray","resizeColumn","footerTable","headerTextClone","contentTextClone","footerTextClone","columnIndexByField","indentWidthClone","detailsElement","contentText","footerText","wHeader","wContent","wFooter","columnbyindex","colMaxWidth","calcTableWidth","tableWidth","offsetWidthValue","refreshHeight","setHandlerHeight","getResizeHandlers","touchResizeStart","callAutoFit","getTargetColumn","refreshColumnWidth","refreshStackedColumnWidth","mtbody","ftbody","frtbody","ftr","frTr","parentElementWidth","appendHelper","getPointX","minMove","removeHelper","cancelResizeAction","resizeEnd","resizing","updateCursor","removeEvents","updateResizeEleHeight","getColData","mousemove","setHelperHeight","finalColumns","getSubColumns","calulateColumnsWidth","finalColumns_1","updateHelper","subColumns","isFrozenColResized","doubleTapEvent","getStackedWidth","headerRows_1","calcPos","fLeft","timeoutHandler","ColumnDirective","ColumnsDirective","longPress","chartAxisLayoutPanel","crosshair","startMove","disableTrackTooltip","onPanning","elementId","isStockSvg","renderGroupedTooltip","findShapes","enableMarker","findData","dataEditingModule","isPointDragging","findMouseValue","chartTooltipSuccess","getSymbolLocation","findMarkerHeight","getTemplateText","pointData","symbolLocations","getBoxLocation","getWaterfallRegion","getRangeArea","formatPointValue","lastData","triggerSharedTooltip","triggerBlazorSharedTooltip","findSharedLocation","blazorSharedTooltip","sharedTooltipSuccess","toolbarHeight","enablePeriodSelector","isXPoint","isYPoint","customLabelFormat","tooltipFormat","getIndicatorTooltipFormat","textX","DateTime","dateFormatter","datetimeInterval","getYear","getHour","endMinute","endSecond","startYear","endYear","endMonth","endDay","endHour","increaseDateTimeInterval","axisLabels","alignRangeStart","blazorCustomFormat","skeletonType","setMonth","getDecimalInterval","sDate","intervalSize","sResult","minutes","roundValue","decimalValue","sec","milliSec","Category","ticks","labels","SeriesDirective","SeriesCollectionDirective","__awaiter","_arguments","fulfilled","rejected","__generator","trys","ops","verb","guidHolder","guidResponse","ClientAuthError","ClientAuthErrorMessage","ClientConfigurationError","ClientConfigurationErrorMessage","authEndpoint","serverRequestParams","ServerRequestParameters","utid","claims","BrowserStorage","statusCode","jsonResponse","response","TelemetryEvent","hasCachedMetadata","httpEvent","openIdConfigurationEndpoint","httpMethod","telemetryManager","IsValidationEnabled","B2CTrustedHostList","createKnownAuthoritiesNotSetError","AuthorityType","Adfs","B2C","Logger","logMessage","LogLevel","ServerError","ServerErrorMessage","InteractionRequiredAuthError","eventCount","API_CODE","API_EVENT_IDENTIFIER","cacheStorage","CartesianAxisLayoutPanel","chartModule","measureAxis","leftSize","rightSize","topSize","bottomSize","measureRowAxis","measureColumnAxis","calculateAxisSize","refreshAxis","calculateRowSize","arrangeAxis","measureDefinition","calculateColumnSize","scrollBarModule","enableScrollbar","enableScrollbarOnZooming","isZoomed","axisOffset","nearCount","farCount","plotOffset","computedTop","plotOffsetTop","getAxisOffsetValue","plotOffsetBottom","len_3","len_4","computedLeft","plotOffsetLeft","plotOffsetRight","measure","actualIndex","verticalAxes","getActualRow","pushAxis","horizontalAxes","getActualColumn","position2","crossesAt","crossesInAxis","updateCrossAt","primaryYAxis","axisCollection","actualLength","rowTop","remainingHeight","columnLeft","remainingWidth","renderAxes","outsideElement","axisElement","axisLineElement","findAxisPosition","drawAxisLine","majorGridLines","drawXAxisGridLine","drawXAxisLabels","drawXAxisBorder","drawXAxisTitle","drawYAxisGridLine","drawYAxisLabels","drawYAxisBorder","drawYAxisTitle","renderScrollbar","drawBottomLine","isScrollUI","optionsLine","definitionName","plotX","plotY","minorGridDirection","isLogAxis","isCategoryAxis","majorGrid","majorTick","tickSize","axisLineSize","ticksbwtLabel","isTickInside","chartThemeStyle","minorGridLines","minorTickLines","isBorder","renderGridLine","minorTicksPerInterval","renderMinorGridOnZooming","drawAxisMinorLine","chartArea","isAxisBreakLabel","labelSpace","isLabelInside","isOpposed","defaultAnchor","maxLineWidth","labelElement","getAxisLabelXvalue","getAnchor","createZoomingLabel","lineBreakAlignment","gap","labelBorder","createAxisBorderElement","renderYAxisMultiLevelLabels","minorDirection","isFirstLabel","logStart","coor","logInterval","logPosition","ticksX","ticksY","minorGird","minorTick","findLogNumeric","labelHeight","labelWidth","intervalLength","islabelInside","tickSpace","newPoints","isLabelUnderAxisLine","isEndAnchor","paddingForBreakLabel","getLabelText","xValue2","rect_1","xAdjustment","yAdjustment","rectCoordinates","getRectanglePoints","rectCenterX","rectCenterY","findAxisLabel","axisRect","renderXAxisMultiLevelLabels","gridDirection","gridId","gridIndex","themeColor","findParentNode","zoomElement","getRotateText","DataLabelSettings","MarkerSettings","Points","isPointInRange","Trendline","setDataSource","trendLineModule","initDataSource","visibleSeriesCount","ErrorBarCapSettings","ChartSegment","ErrorBarSettings","SeriesBase","isRectTypeSeries","processJsonData","Series","textMappingName","processInternalData","paretoSeriesModule","performCumulativeCalculation","sizeMax","getSeriesType","dataPoint","pushCategoryData","setEmptyPoint","isArea","findSplinePoint","getObjectValueByMappingString","enableComplexProperty","getObjectValue","volume","mappingName","findVisibility","yData","getAverage","yValues","yAxisMin","yAxisMax","setXYMinMax","setHiloMinMax","seriesMinY","isNegativeValue","isIndexed","isRemoteData","localData","findCurrentData","refreshTechnicalIndicator","trendlines","refreshBound","initialRender","stockChartDataManagerSuccess","drawPoints","delayedAnimation","refreshAxisLabel","findSeriesCollection","isStack","rowSeries","rectSeriesInChart","calculateStackedValue","isStacking100","columnItem","calculateStackingValues","stackingGroup","lastPositive","lastNegative","frequencies","findFrequencies","stackingSeies","stackedValues","seriesCollection_1","findPercentageOfStacking","stackingSeies_1","seriesCollection_2","createSeriesElements","errorBarModule","appendSeriesElement","seriesElements","explodeValue","svgRenderer","markerMaxValue","clipRectElement","symbolElement","errorBarElement","dataLabelElements","shapeElement","hasChildNodes","doErrorBarAnimation","doMarkerAnimation","doDataLabelAnimation","setPointColor","setBorderColor","MarkerExplode","markerMove","explodeSeries","chartSeries","isPointMouseDown","markerExplode","drawTrackBall","seriesMarker","highlightModule","generateStyle","symbolId","colorValue","imageUrl","selectionId","seletionElem","Marker","renderMarker","previousLocation","previousPath","circlePath","markerElement","isBoxPlot","outliers","markerFill","markerBorder","markerOpacity","markerClipRect","getRangeLowPoint","markerElements","animated","incFactor","lowPoint","TechnicalIndicator","targetSeries","CrosshairSettings","ZoomSettings","Chart","rotatedDataLabelCollections","checkResize","clickCount","singleClickTimer","chartid","mergePersistChartData","refreshDefinition","svgId","loadEventData","cartesianChartRendering","beforeRenderData","createChartSvg","calculateAreaType","calculateVisibleSeries","initTechnicalIndicators","initTrendLines","calculateVisibleAxis","legendModule","calculateStackValues","rangeFound","enableSelector","removeSelection","isCalculateStacking","rectCount","filterArray","calculateDragSelectedElements","renderBorder","renderTitle","renderAreaBorder","renderSeriesElements","applyZoomkit","performSelection","setSecondaryElementPosition","renderAnnotation","yAxisElements","stripLineModule","renderStripLine","mainObject","svgRect","initializeModuleElements","dataLabelCollections","indicators","indicatorElements","hasTrendlines","trendLineElements","isTrendline","tooltipdiv","initializeIndicator","initializeTrendLine","appendElementsAfterSeries","sourceIndex","renderCanvasSeries","seriesSvg","divElement","mainElement","indicator","createIndicatorElements","getTrendLineElements","calculateStockEvents","enablePan","performedUI","applyZoomToolkit","annotationModule","renderAnnotations","invokeSelection","invokeHighlight","redrawSelection","initializeDataModule","techIndicator","subTitleHeight","subTitleCollection","subTitle","titleText","subTitleStyle","trendIndex","trendLine","initSeriesCollection","yAxisName","polarSeriesModule","radarSeriesModule","paretoAxes","isPanning","isAxisZoomed","scrollSettingEnabled","initAxis","injectTo","isSeries","zOrder","initSeries","renderSubTitle","subTitleElementSize","subTitleOptions","backGroundImage","backgroundImage","fillColor","addSeries","removeSeries","clearSeries","addAxes","axisCollection_1","removeAxis","stopEvent","chartOnMouseDown","mouseMove","mouseEnd","chartOnMouseClick","chartRightClick","resizeBound","touchObject","chartResize","longPressBound","crosshairModule","zooming","disableScroll","enableSelectionZooming","enablePinchZooming","msTouchAction","msContentZooming","msUserSelect","webkitUserSelect","isOrientation","setMouseXY","exportModule","currentSize","previousSize","beforeResizeArgs","cancelResizedEvent","touchArg","chartOnMouseMove","chartOnMouseLeave","isChartDrag","timeInterval","triggerPointEvent","triggerAxisLabelClickEvent","clickEvt","axisIndex","currentAxis","labelID","titleTooltip","axisTooltip","pointMouseMove","texts","categories","mouseDownX","previousMouseMoveX","mouseDownY","previousMouseMoveY","isDoubleTap","threshold","pointMouseDown","chartOnMouseUp","pointMouseUp","setLocaleConstants","defaultLocalConstants","setAnnotationValue","annotationIndex","processAnnotation","ZoomIn","Zoom","ZoomOut","Pan","Reset","ResetZoom","enableAnnotation","errorBarVisible","isPointDrag","dataLabelEnable","isLegend","currentModule","findIndicatorModules","findTrendLineModules","findAxisModule","enableExport","allowExport","enableMouseWheelZooming","datetimeEnabled","categoryEnabled","logarithmicEnabled","striplineEnabled","dateTimeCategoryEnabled","multiLevelEnabled","axisCollections_1","findStriplineVisibility","stripLines","macdEnable","bandEnable","isLine","isSpline","markerEnable","trendline","striplines","striplines_1","removeLength","pinchTarget","containerCollection","definitions_1","axisChange","getVisibleSeries","refreshLiveData","removeStyles","refreshBounds","crosshairTooltip","seriesRefresh","blazorProp","isClosed","boxPlotMode","showMean","currentMode","styleId","ChartComponent","ColumnBase","getSideBySideInfo","enableSideBySidePlacement","getSideBySidePositions","seriesSpacing","columnSpacing","pointSpacing","getRectangle","findRectPosition","vSeries","updateSymbolLocation","updateYRegion","updateXRegion","histogramValues","binWidth","getRegion","triggerEvent","calculateRoundedRectPath","topRight","bottomLeft","bottomRight","rectElements","visiblePoints_1","animateRect","isPlot","elementHeight","elementWidth","ColumnSeries","sideBySideInfo","pointColumn","LineBase","tempPoints2","xVisibleRange","yVisibleRange","seriesPoints","xTolerance","yTolerance","prevXValue","prevYValue","seriesPoints_1","getLineDirection","firstPoint","secondPoint","getPointLocation","appendLinePath","doProgressiveAnimation","strokeDashArray","pathLength","getTotalLength","storePointLocation","withinYRange","getFirstLastVisiblePoint","doLinearAnimation","xCenter","yCenter","LineSeries","isPolar","isDrop","getCoordinate","selectedHandler","minHeight","resizeWestWidth","elementClass","originalWidth","originalHeight","originalX","originalY","originalMouseX","originalMouseY","RESTRICT_LEFT","resize","setLeft","previousWidth","dialogBorderResize","setBorderResizeElm","calculateValues","borderBottom","getDOMElement","domElement","isNOU","resizers","onMouseDown","onTouchStart","borderResizers","getEventType","onMouseUp","coordinates","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","calculatedWidth","left_1","removeResize","DialogUtility","ButtonProps","AnimationSettings","DLG_TARGET","SCROLL_DISABLED","FULLSCREEN","initRender","enableResize","setResize","getMinHeight","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","checkPositionData","prevOnChange","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","footerEle","minimumHeight","headerHeight","footerHeight","onResizeStart","onResizing","onResizeComplete","isBlazorServerRender","resizeHandles","directionValue","resizeBegin","resizeComplete","boundary","resizeHandler","createResize","targetEle","wireWindowResizeEvent","unWireWindowResizeEvent","getFocusElement","buttonObj","ftrTemplateContent","contentEle","focusableElements","buttonIndex_1","isTagName","isContentEdit","primaryButtonEle","setCSSClass","setMaxHeight","setzIndex","calculatezIndex","setTargetContent","setHeader","setButton","setFooterTemplate","allowDragging","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","refElement","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","activeEle","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","dialogConHeight","resizeIcon","zIndexValue","setPopupPosition","dragObj","dragEventArgs","buttonContent","buttonType","footerBtn","innerContentElement","sanitizeHelper","templateValue","dialogItem","headerEle","closeIcon","closeIconBtnObj","DLG_CLOSE_ICON","closeIconTitle","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","bindEvent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","windowResizeHandler","classArray","isFullScreen","fullScreen","eventArgs_1","beforeOpenArgs","openAnimation","beforeCloseArgs","getButtons","createDialog","dialogObject","formOptions","formButtonModel","buttonPropModel","buttonProps","alertDialogObj","dialogElement","alertButtonModel","okButton","setAlertButtonModel","alertOptions","confirmDialogObj","okButtonModel","cancelButtonModel","cancelButton","setConfirmButtonModel","confirmOptions","AccumulationChart","animateselected","temIndex","tempcolor","tempindex","tempindex1","datasource","currentSeries_1","entry1","entry2","accPoint","missing","isIE11Pointer","accumulationMouseMove","accumulationMouseEnd","accumulationMouseStart","accumulationOnMouseClick","accumulationRightClick","accumulationMouseLeave","accumulationResize","svgRectElement","refreshSeries","enableBorderOnMouseMove","calculateSelectedElements","createPieSvg","createSecondaryElement","doGrouppingProcess","processSelection","tooltipParent","subTitleOption","findDatalabelVisibility","changeVisibleSeries","refreshElements","neckHeight","neckWidth","AccumulationChartComponent"],"mappings":"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AO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACrI,OA8DJlD,EAAYmD,aA5DZ,SAAsBC,GAClB,IAAIC,EAAMD,EAAME,UACZC,EAAQH,EAAMI,WACdC,EAAOL,EAAMM,cACbC,EAASJ,EAAQ,EACjBK,EAAQH,EACRE,EAAS,IACTC,GAAS,EACTD,GAAU,IAEd,IAAIE,EAAUC,KAAKC,MAAMH,EAAQ,KAC7BI,EAAgBH,EAAUC,KAAKC,MAAMF,EAAU,GAAM,EACrDI,EAAeH,KAAKC,MAAM,QAAUH,EAAQ,OAASE,KAAKC,MAAM,SAAWJ,EAAS,IAAMN,EAAMW,EAAgB,KAGhHE,EAAID,GADRD,GADAH,EAAUC,KAAKC,OAAOE,EAAe,YAAc,WACzBH,KAAKC,MAAMF,EAAU,GAAM,GACd,KACnCM,EAAIL,KAAKC,OAAOG,EAAI,OAAS,QAC7BE,EAAIN,KAAKC,MAAM,OAASI,GACxBE,EAAYP,KAAKC,OAAOG,EAAIE,GAAK,SACrCf,EAAOa,EAAIE,EAAKN,KAAKC,MAAM,QAAUM,IACrCd,EAAQO,KAAKC,OAAOG,EAAIE,GAAK,UACjB,KACRD,GAAK,EACLZ,GAAS,IAEbA,GAAS,EACTE,EAAOU,EAAI,KACX,IAAIG,EAAqBL,EAAe,KAGpCM,EAAIN,EAAe,QACnBO,EAAMV,KAAKC,MAAMQ,EAAI,OACzBA,GAAQ,MAAQC,EAChB,IAAIC,EAAIX,KAAKC,OAAOQ,EAAI,QAJZ,MAAS,KAKjBG,EAAK,GAAKF,EAAMC,EACpBF,GAAQT,KAAKC,MAAMU,GANP,MAAS,IAMU,OAC/B,IAAIE,EAAKb,KAAKC,OAAOQ,EAAI,SAAW,MAEzB,KAAPI,IACAA,EAAK,IAIT,IAFA,IAAIC,EAAUL,EAAIT,KAAKC,MAAM,QAAUY,EAAK,IACxCzK,EAAI,EACDA,EAAIgJ,EAAe/I,UAClB+I,EAAehJ,GAAKoK,GADMpK,KAKlC,IAAI2K,EAAM3K,EAAI,MACV4K,EAAKhB,KAAKC,OAAOc,EAAM,GAAK,IAC5BE,EAAQD,EAAK,EACbE,EAASH,EAAM,GAAKC,EACpBG,EAAQX,EAAqBpB,EAAehJ,EAAI,GAAK,EAMzD,OALK+K,EAAQ,IAAI9K,OAAS,IACtB8K,EAAQL,EACRI,EAASL,EACTI,EAAQL,GAEL,CAAEjB,KAAMsB,EAAOxB,MAAOyB,EAAQE,KAAMD,IA4B/CjF,EAAYmF,YAzBZ,SAAqB1B,EAAMF,EAAOF,GAC9B,IAOI+B,EALK/B,EAIQH,EAFD,IAJPO,EAGK,GACQ,GAHbF,EAGuB,GAClB,MACsB,GAAK,EAChB,KACrBgB,EAAIT,KAAKC,MAAMqB,EAAa,IAC5BC,EAAIvB,KAAKC,OAAOQ,EAAI,YAAc,UAElCL,GADJmB,EAAId,EAAI,EAAIc,EAAIvB,KAAKC,MAAMsB,EAAI,IACnB,KACRlB,EAAIL,KAAKC,OAAOG,EAAI,OAAS,QAC7BE,EAAIN,KAAKC,MAAM,OAASI,GACxBhG,EAAI2F,KAAKC,OAAOG,EAAIE,GAAK,SACzBkB,EAAOpB,EAAIE,EAAIN,KAAKC,MAAU,QAAJ5F,GAC1BoH,EAASpH,GAAKA,EAAI,KAAO,GAAK,GAC9BqH,EAAQrB,GAAKoB,EAAS,IAAM,KAAO,MAKvC,OAHIC,GAAS,GACTD,IAEG,IAAIE,KAAKD,EAAQ,IAAOD,EAAU,IAAMD,IA/KvD,CAkLGtF,IAAgBA,EAAc,KCjLjC,IAAI0F,EAAwB,mEAExBC,EAAa,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAExDC,EAAa,CACbC,EAAG,aACHC,EAAG,WACHC,EAAG,WACHC,EAAG,aACH5B,EAAG,UACH6B,EAAG,mBAEIC,EAAkB,CACzB,EAAK,QACL,EAAK,MACL,EAAK,UACL,EAAK,UACL,EAAK,OACL,EAAK,SACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,QACL,EAAK,aACL,EAAK,WACL,EAAK,WACL,EAAK,MACL,EAAK,gBAQLC,EAA4B,WAC5B,SAASA,KAqPT,OA5OAA,EAAWC,WAAa,SAAUC,EAASC,EAAQC,GAC/C,IAAIlJ,EAAQC,KACRkJ,EAAaC,EAAKC,eAAeH,EAAMF,EAASC,EAAOK,UACvDC,EAAYjN,EAAS,uBAAwB6M,GAC7CK,EAAaL,EAAWK,WACxBC,EAAgB,CAAEC,UAAWN,EAAKO,aAAaC,KAAKX,EAAOK,WAC3D/J,KAAc0J,EAAOY,mBACrBZ,EAASG,EAAKU,yBAAyBb,EAAQD,IAEnD,IAAIe,EAAad,EAAOe,QACpBZ,EAAKa,oBAAoBhB,EAAOiB,SAAUf,EAAWK,WAAYP,EAAOkB,MAAM,EAAO5K,IAAayJ,EAAU,IAEhH,GADAS,EAAcW,cAAgB7K,IAAajD,EAAS,gBAAiBkN,GAAcJ,EAAKiB,iBAAiBlB,EAAWK,YAChHzM,EAAYgN,GACZpJ,EAAW,oDAEV,CACDoJ,EAAaX,EAAKkB,wBAAwBP,GACtCxK,MACAwK,EAAaA,EAAWpN,QAAQ,KAAM,MAE1C8M,EAAcc,QAAUR,EACxBN,EAAce,UAAYjL,IACtBhB,EAAO,GAAIgL,GAAakB,EAAOrF,gBAAgB+D,EAAWuB,aAAcD,EAAOvH,mBAAmBgG,IAEtG,IADA,IACSjL,EAAK,EAAG0M,EADEZ,EAAWrH,MAAM2F,IAA0B,GACdpK,EAAK0M,EAAe7N,OAAQmB,IAAM,CAC9E,IAAI2F,EAAM+G,EAAe1M,GACrB8D,EAAM6B,EAAI9G,OACV8N,EAAOhH,EAAI,GACF,MAATgH,IACAA,EAAO,KAIX,OAAQA,GACJ,IAAK,IACL,IAAK,IACGrL,IACAkK,EAAcoB,QAAUvO,EAAS,QAAU8M,EAAK0B,WAAW/I,GAAMyH,GAGjEC,EAAcoB,QAAU1B,EAAWK,WAAWJ,EAAK2B,MApF9D,eAoFgF3B,EAAK0B,WAAW/I,IAEzF,MACJ,IAAK,IACL,IAAK,IACGxC,IACAkK,EAAcvD,MAAQ5J,EAAS,UAAY8M,EAAK0B,WAAW/I,GAAMyH,GAGjEC,EAAcvD,MAAQiD,EAAWK,WAAWJ,EAAKlD,OA7F5D,eA6F+EkD,EAAK0B,WAAW/I,IAExF,MACJ,IAAK,IACD0H,EAAcuB,WAAazL,IACvBjD,EAAS,aAAckN,GAAclN,EAAS,yBAA0BkN,GAC5E,MACJ,IAAK,IACD,IAAIyB,EAASlJ,GAAO,EAAK,UAAqB,IAARA,EAAa,WAAa,YAChE0H,EAAcyB,IAAM3L,IAAajD,EAAS,OAAQkN,GAAclN,EAAS,QAAU2O,EAAO9B,EAAWK,YACrG,MACJ,IAAK,IACDC,EAAc0B,SAAW7O,EAAS,sBAAuB6M,EAAWuB,gBAKpF,OAAO,SAAUjO,GACb,OAAI2O,MAAM3O,EAAMwJ,WACL,KAEJjG,EAAMqL,iBAAiB5O,EAAOgN,KAS7CX,EAAWuC,iBAAmB,SAAU5O,EAAO6O,GAK3C,IAJA,IACItH,EAAM,GACNuH,EAFUD,EAAQf,QAEA7H,MAAM0G,EAAKoC,gBAC7BC,EAAUxL,KAAKyL,oBAAoBjP,EAAO6O,EAAQ5B,WAC7CzL,EAAK,EAAG0N,EAAYJ,EAAStN,EAAK0N,EAAU7O,OAAQmB,IAAM,CAC/D,IAAIyE,EAAQiJ,EAAU1N,GAClB2N,EAAWlJ,EAAM5F,OACjB8N,EAAOlI,EAAM,GACJ,MAATkI,IACAA,EAAO,KAEX,IAAIiB,OAAS,EACTC,EAAY,GACZzG,OAAW,EACX0G,OAAgB,EAChBC,EAAS,GACb,OAAQpB,GACJ,IAAK,IACL,IAAK,IACDiB,EAASJ,EAAQvF,MACb0F,EAAW,EACX5H,GAAOsH,EAAQpF,MAAM2F,GAGrBxG,GAAW,EAEf,MACJ,IAAK,IACL,IAAK,IACDrB,GAAOsH,EAAQT,QAAQvC,EAAW7L,EAAMwP,WACxC,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,GADA5G,GAAW,EACE,MAATuF,EACAiB,EAASJ,EAAQ5D,UAEhB,GAAa,MAAT+C,EAAc,CACnBvF,GAAW,EACX0G,GAAgB,EAGhB,IAAIG,GADJJ,GADAA,EAAYrP,EAAM8L,EAAWqC,MAASuB,YAChBC,UAAU,EAAGR,IACT9O,OAC1B,GAAI8O,IAAaM,EAAW,CACxB,GAAIN,EAAW,EACX,SAEJ,IAAK,IAAI/O,EAAI,EAAGA,EAAI+O,EAAWM,EAAWrP,IACtCiP,EAAY,IAAMA,EAAUK,WAGpCH,GAAUF,OAGVD,EAASpP,EAAM8L,EAAWqC,MAEjB,MAATA,IACAiB,EAASA,EAAS,IAAM,IAE5B,MACJ,IAAK,IACDE,GAAgB,EAChBC,GAAUP,EAAQrF,KACD,IAAbwF,IACAI,EAASA,EAAOK,OAAOL,EAAOlP,OAAS,IAE3C,MACJ,IAAK,IACD,IAAIwP,EAAQ7P,EAAM8P,WAAa,GAAK,KAAO,KAC3CvI,GAAOsH,EAAQN,WAAWsB,GAC1B,MACJ,IAAK,IACD,IAAIE,EAAM/P,EAAM4J,cAAgB,EAAI,EAAI,EACpCoG,EAAOnB,EAAQJ,IAAIsB,GACnBnP,EAAkBoP,KAClBA,EAAOnB,EAAQJ,IAAIsB,EAAM,EAAI,IAEjCxI,GAAOyI,GAAQ,GACf,MACJ,IAAK,IACDzI,GAAkB,OAAVtB,EAAoB,IAAOA,EAAM/F,QAAQ,MAAO,IACxD,MACJ,IAAK,IACD,IAAI+P,EAAWjQ,EAAMkQ,oBACjBC,EAAahB,EAAW,EAAK,QAAUN,EAAQH,SAAS0B,WAC5DD,EAAYA,EAAUjQ,QAAQ,KAAM2O,EAAQd,UAAUhF,eACrC,IAAbkH,EACA1I,GAAOsH,EAAQH,SAAS2B,eAGxBf,GAAgB,EAChBC,EAAS/L,KAAK8M,iBAAiBL,EAAUE,IAE7CZ,EAASV,EAAQH,SAAS6B,UAAUrQ,QAAQ,QAASqP,GACrD,MACJ,IAAK,IACDhI,GAAOsH,EAAQd,UAAUjF,cAAlB,cAEP,MACJ,IAAK,IACDvB,GAAOsH,EAAQlB,cACf,MACJ,IAAK,IACD/E,GAAW,EACXwG,EAASzC,EAAK6D,cAAcxQ,GAC5B,MACJ,QACIuH,GAAOtB,EAEX2C,IACA0G,GAAgB,EAChBC,EAAS/L,KAAKiN,oBAAoBrB,EAAQD,IAE1CG,IACA/H,GAAOyG,EAAOrG,kBAAkB4H,EAAQ5C,EAAK+D,eAAgB7B,EAAQd,UAAUlF,SAGvF,OAAOtB,GAEX8E,EAAW4C,oBAAsB,SAAUjP,EAAOiN,GAC9C,OAAIA,EACO/G,EAAYmD,aAAarJ,GAE7B,CAAE2J,KAAM3J,EAAM4J,cAAeH,MAAOzJ,EAAM0J,WAAa,EAAG0B,KAAMpL,EAAMwJ,YAKjF6C,EAAWoE,oBAAsB,SAAU/I,EAAKpC,GAC5C,IAAIiC,EAAMG,EAAM,GAChB,OAAY,IAARpC,GAA4B,IAAfiC,EAAIlH,OACV,IAAMkH,EAEVA,GAQX8E,EAAWiE,iBAAmB,SAAUK,EAAM7C,GAC1C,IAAIvK,EAAQC,KAERoN,EADO9C,EAAQ3N,MAAM,KACHwQ,EAAO,EAAI,EAAI,GACjCE,EAAK7G,KAAK8G,IAAIH,GAClB,OAAoBC,EAAW1Q,QAAQ,WAAW,SAAUiH,GACxD,IAAI7B,EAAM6B,EAAI9G,OACV0Q,GAA+B,IAAtB5J,EAAIxF,QAAQ,KACzB,OAAO4B,EAAMkN,oBAAoBzG,KAAKC,MAAM8G,EAAUF,EAAK,GAAOA,EAAK,IAAMvL,OAG9E+G,EAtPqB,GCpC5B2E,EAAY,CACZ,GAAM,2BACN,GAAM,2BACN,GAAM,wBACN,GAAM,yBAMNnI,EAAS,CAAC,WAAY,MAAO,QAAS,UAAW,eAOjDoI,EAA8B,WAC9B,SAASA,KAmTT,OA1SAA,EAAaC,gBAAkB,SAAU3E,EAASC,EAAQC,GACtD,IAII0E,EAJA5N,EAAQC,KACR4N,EAAWtP,EAAO,GAAI0K,GACtB6E,EAAW,GACXC,EAAW,GAEX5E,EAAaC,EAAKC,eAAeH,EAAMF,EAAS,IAAI,GACpDO,EAAYJ,EAAW6E,cAC3BD,EAASE,aAAe1O,IAAahB,EAAO,GAAIgL,GAC5CkB,EAAOrF,gBAAgB+D,EAAWuB,aAAcD,EAAOvH,mBAAmBgG,IAAO,GACrF6E,EAASG,eAAiB3O,IAAajD,EAAS,iBAAkBiN,GAAaH,EAAK+E,kBAAkBhF,EAAW6E,cAAeH,EAASO,UAAYC,EAAqBpF,EAAOqF,WAEjLP,EAASQ,cAAgBhP,IAAajD,EAAS,4BAA6BiN,GACxEwE,EAASE,aAAa1I,cAAtB,YACJwI,EAASS,YAAcjP,IAAajD,EAAS,0BAA2BiN,GACpEwE,EAASE,aAAa1I,cAAtB,UACJ,IAAIkJ,EAAUV,EAASE,aAAa1I,cACpC,GAAK0D,EAAOe,SAAaZ,EAAKsF,YAAY9E,KAAKX,EAAOe,QAClD8D,EAAW1E,EAAKuF,aAAa1F,EAAOe,OAAQ+D,EAAU5E,EAAW6E,mBAEhE,CAkBD,GAjBAzP,EAAOsP,EAAUzE,EAAKwF,yBAAyB3F,EAAOe,QAAU,MAChE6D,EAASgB,WAA+B,aAAlBhB,EAAS1D,KAC/B0D,EAASiB,UAA8B,YAAlBjB,EAAS1D,KACzB5K,MACDqO,EAAgBxE,EAAK2F,iBAAiBlB,EAAS1D,KAAM4D,EAASE,aAAavJ,aAAcyE,EAAW6E,cAAeH,EAASmB,YAEhInB,EAASoB,SAAWhP,KAAKiP,gBAAgBrB,EAASsB,yBAA0BtB,EAASuB,0BAA0B,GAC/GnP,KAAKiP,gBAAgBrB,EAASwB,sBAAuBxB,EAASyB,uBAAuB,GAAO,GACvFvS,EAAY8Q,EAAS0B,kBACtB1B,EAASyB,sBAAwBzB,EAASwB,sBAAwBxB,EAAS0B,gBAE3ExS,EAAY8Q,EAAS2B,eACrB3B,EAAS2B,aAAc,GAEvB3B,EAASgB,aAAetP,MACxBqO,EAAgBA,EAAcjR,QAAQ,UAAWyM,EAAKqG,kBAErDlQ,IAUDuO,EAAS4B,MAAQnR,EAAO,GAAI,GAAIjC,EAASuR,EAAS1D,KAAO,QAASZ,IAClEuE,EAAS6B,MAAQpR,EAAO,GAAI,GAAIjC,EAASuR,EAAS1D,KAAO,QAASZ,IAC5C,aAAlBsE,EAAS1D,MAAuBlB,EAAOmF,UACvChF,EAAKwG,sBAAsB,CAAC9B,EAAS6B,MAAO7B,EAAS4B,OAAQ3B,EAASG,eAAgBjF,EAAOmF,cAbpF,CACb,IAAIxR,EAAQgR,EAAchR,MAAM,KAChCkR,EAAS4B,MAAQtG,EAAKyG,cAAcjT,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAMmR,EAASG,gBAC/EJ,EAAS6B,MAAQvG,EAAKyG,cAAcjT,EAAM,IAAI,EAAOmR,EAASG,gBAC1DL,EAAS2B,cACT3B,EAASiC,eAAiBrB,EAAQnJ,EAAO,IACzCuI,EAASkC,UAAY9P,KAAK+P,mBAAmBpT,EAAM,KAc3D,GAJcG,EAAY8Q,EAASyB,yBAE/BzB,EAASyB,sBAAwBxB,EAAS4B,MAAMO,iBAEhDlT,EAAY8Q,EAASwB,uBAAwB,CAC7C,IAAIa,EAAOpC,EAAS4B,MAAMS,gBAC1BtC,EAASwB,sBAAwBtS,EAAYmT,IAASrC,EAASiB,UAAY,EAAIoB,EAEnF,IAAIE,EAAQvC,EAASyB,sBACjBe,EAAQxC,EAASwB,sBAChBtS,EAAYqT,IAAWrT,EAAYsT,IAChCD,EAAQC,IACRxC,EAASwB,sBAAwBe,GAM7C,OAFA7R,EAAOuP,EAAS4B,MAAO7B,GACvBtP,EAAOuP,EAAS6B,MAAO9B,GAChB,SAAUpR,GACb,OAAI2O,MAAM3O,GACCgS,EAAQnJ,EAAO,IAEhBgL,SAAS7T,GAGZuD,EAAMuQ,mBAAmB9T,EAAOqR,EAAUC,GAFtCU,EAAQnJ,EAAO,MAUlCoI,EAAasC,mBAAqB,SAAUzF,GACxC,IAAIvG,EAAM,GACNtB,EAAQ6H,EAAQ7H,MAAM0G,EAAKoH,mBAC/B,GAAI9N,GAASA,EAAM,GAAI,CACnB,IAAIkK,EAAYlK,EAAM,GAClB+N,EAAI7D,EAAU8D,YAAY,KAC9B,IAAW,IAAPD,EAAU,CACV,IAAIE,EAAO/D,EAAUhQ,MAAM,KAAK,GAChCoH,EAAI4M,QAAWD,EAAK7T,OAAS2T,EAAK,EAClC,IAAI9H,EAAIiE,EAAU8D,YAAY,IAAKD,EAAI,IAC5B,IAAP9H,IACA3E,EAAI6M,UAAYJ,EAAI,EAAI9H,IAIpC,OAAO3E,GAUX0J,EAAawB,gBAAkB,SAAU4B,EAAMC,EAAMC,EAAgBC,GACjE,IAAIC,EAASD,EAAa,IAAM,IAC5BE,EAAO,EACPC,EAAO3D,EAAU,IAAMyD,GACvBG,EAAO5D,EAAU,IAAMyD,GAS3B,GARKnU,EAAY+T,KACb7Q,KAAKqR,WAAWR,EAAMM,EAAMH,GAC5BE,KAECpU,EAAYgU,KACb9Q,KAAKqR,WAAWP,EAAMM,EAAMJ,GAC5BE,KAES,IAATA,EAAY,CACZ,KAAIL,EAAOC,GAIP,OAAO,EAHPpQ,EAAW0Q,EAAO,kCAAoCD,QAMrDJ,GAA2B,IAATG,GACvBxQ,EAAW,OAAS0Q,EAAO,MAAQA,EAAO,mBAE9C,OAAO,GASX3D,EAAa4D,WAAa,SAAUnN,EAAKoN,EAAMN,GAC3C,IAAIO,EAAQP,EAAa,CAAC,EAAG,IAAM,CAAC,EAAG,KACnC9M,EAAMqN,EAAM,IAAMrN,EAAMqN,EAAM,KAC9B7Q,EAAW4Q,EAAO,iCAAmCC,EAAM,GAAK,KAAOA,EAAM,KAUrF9D,EAAa6C,mBAAqB,SAAU9T,EAAOoR,EAAUE,GACzD,IAAI0D,EACJ,IAAI1U,EAAY8Q,EAAS6B,MAAMvF,MAA/B,CAIQ1N,EAAQ,GACRA,IAAiB,EACjBgV,EAAU5D,EAAS6B,OAGnB+B,EADe,IAAVhV,GACKoR,EAAS6D,UAGT7D,EAAS8B,MAEvB,IAAIgC,EAAS,GAsBb,OArBIF,EAAQ3C,YACRrS,GAAgB,KAEhBgV,EAAQxC,SACR0C,EAAS1R,KAAK2R,yBAAyBnV,EAAOgV,EAAQrC,yBAA0BqC,EAAQtC,2BAGxFwC,EAAS1R,KAAK4R,gBAAgBpV,EAAOgV,EAAQnC,sBAAuBmC,EAAQpC,uBACxEoC,EAAQK,uBACRH,EAAS1R,KAAK8R,uBAAuBJ,EAAQF,EAAQK,wBAGxC,eAAjBL,EAAQtH,OAERwH,GADAA,EAASlV,EAAMuV,cAAcP,EAAQpC,wBACrB1S,QAAQ,IAAKoR,EAASE,aAAa1I,cAAcD,EAAO,MAE5EqM,EAASA,EAAOhV,QAAQ,IAAKoR,EAASE,aAAa1I,cAAcD,EAAO,KACpEmM,EAAQjC,cACRmC,EAAS1R,KAAKgS,aAAaN,EAAQF,EAAQ1B,UAAUa,QAASa,EAAQ3B,gBAAkB,IAAK/B,EAASE,aAAa1I,cAAcD,EAAO,KAAO,IAAKmM,EAAQ1B,UAAUc,YAE1Kc,EAASlH,EAAOrG,kBAAkBuN,EAAQvI,EAAK+D,eAAgBY,EAASE,aAAa3I,QAC/D,QAAlBmM,EAAQS,MACDT,EAAQS,MAGRT,EAAQS,MAAQP,EAASF,EAAQU,OAWpDzE,EAAakE,yBAA2B,SAAUnV,EAAO2V,EAAKC,GAC1D,IAAI1B,EAAOlU,EAAQ,GAGnB,OADakU,EAAK7T,OACLsV,EACF3V,EAAM6V,YAAYF,KAGzBzB,EAAOlU,EAAM6V,YAAYD,IAEb,IAYpB3E,EAAauE,aAAe,SAAU9N,EAAKoO,EAAQC,EAAKC,EAAeC,GAMnE,IALA,IAAIC,GAAQtV,EAAkBqV,IAAsB,IAAXA,EACrC9V,EAAQuH,EAAIvH,MAAM6V,GAClBG,EAAShW,EAAM,GACfE,EAAS8V,EAAO9V,OAChB8G,EAAM,GACH9G,EAASyV,GACZ3O,EAAMgP,EAAOtR,MAAMxE,EAASyV,EAAQzV,IAAW8G,EAAI9G,OAC9C0V,EAAM5O,EAAO,IAClB9G,GAAUyV,EACNI,IACAJ,EAASG,EACTC,GAAO,GAIf,OADA/V,EAAM,GAAKgW,EAAOtR,MAAM,EAAGxE,IAAW8G,EAAI9G,OAAS0V,EAAM,IAAM5O,EACxDhH,EAAMiH,KAAK4O,IAStB/E,EAAamE,gBAAkB,SAAUpV,EAAO2V,EAAKC,GACjD,IAAI1B,GAAQlU,EAAQ,IAAIG,MAAM,KAAK,GAC/BE,EAAS6T,EAAOA,EAAK7T,OAAS,EAClC,GAAIsV,GAAOtV,EAASsV,EAAK,CACrB,IAAIpO,EAAM,GACV,GAAe,IAAXlH,EAGC,CACDkH,GAAOvH,EACP,IAAK,IAAI2K,EAAI,EAAGA,EAAIgL,EAAMtV,EAAQsK,IAC9BpD,GAAO,IAEX,OAAOA,EAEX,OATIA,EAAMvH,EAAMoW,QAAQT,GASjB3V,EAAMoW,QAAQT,GAEpB,OAAK/U,EAAkBgV,KAASvV,EAASuV,GAAe,IAARA,GAC1C5V,EAAMoW,QAAQR,GAElB5V,EAAQ,IAQnBiR,EAAaqE,uBAAyB,SAAUtV,EAAO2V,GACnD,IAAIzB,EAAOlU,EAAMG,MAAM,KACnBkW,EAAOnC,EAAK,GACZ5O,EAAM+Q,EAAKhW,OACf,GAAIiF,EAAMqQ,EAAK,CACX,IAAK,IAAIvV,EAAI,EAAGA,EAAIuV,EAAMrQ,EAAKlF,IAC3BiW,EAAO,IAAMA,EAEjBnC,EAAK,GAAKmC,EAEd,OAAOnC,EAAK9M,KAAK,MAEd6J,EApTuB,GCX9BqF,EAAY,WAEZxK,EAAa,CACbyK,OAAQ,aACRC,KAAM,WACNvU,OAAQ,aACRsH,IAAK,UACLE,MAAO,WACPgN,aAAc,mBAQdC,EAA4B,WAC5B,SAASA,KA+WT,OArWAA,EAAWC,WAAa,SAAUpK,EAASC,EAAQC,GAC/C,IAAIlJ,EAAQC,KACRkJ,EAAaC,EAAKC,eAAeH,EAAMF,EAASC,EAAOK,UAEvD+J,EAAa5I,EAAOjG,yBAAyB2E,EAAWuB,aAAcD,EAAOvH,mBAAmBgG,IAAO,EAAO3J,KAC9G+T,EAAe,GACf/T,KAAc0J,EAAOY,mBACrBZ,EAASG,EAAKU,yBAAyBb,EAAQD,IAEnD,IAGIuK,EAHAxJ,EAAad,EAAOe,QACpBZ,EAAKa,oBAAoBhB,EAAOiB,SAAUf,EAAWK,WAAYP,EAAOkB,MAAM,EAAO5K,IAAayJ,EAAU,IAC5GwK,EAAc,GAElB,GAAIzW,EAAYgN,GACZpJ,EAAW,oDAEV,CACDoJ,EAAaX,EAAKkB,wBAAwBP,GAC1CuJ,EAAe,CAAE5J,UAAWN,EAAKO,aAAaC,KAAKX,EAAOK,UAAWiB,QAASR,EAAY0J,aAAc,GAAIzK,QAASA,GAUrH,IATA,IAAI0K,EAAe3J,EAAWrH,MAAM0G,EAAKoC,iBAAmB,GACxDI,EAAW8H,EAAa5W,OACxB6W,EAAgB,EAChBC,EAAe,EACfC,GAAiB,EACjBC,EAAQT,EAAWpO,aAEnBuF,EAAYjL,IAAa4J,EAAWuB,aAAaqJ,QACjDtJ,EAAOrF,gBAAgB+D,EAAWuB,aAAcD,EAAOvH,mBAAmBgG,IACrErM,EAAI,EAAGA,EAAI+O,EAAU/O,IAAK,CAC/B,IAAI+G,EAAM8P,EAAa7W,GACnBkF,EAAM6B,EAAI9G,OACV8N,EAAmB,MAAXhH,EAAI,GAAc,IAAMA,EAAI,GACpCyB,OAAW,EACX2O,OAAY,EAEZC,EAAUpL,EAAgB+B,GAC1BsJ,EAAoB,IAARnS,EAAa,GAAK,IAKlC,OAJI8R,IACAF,EAAgBC,EAChBC,GAAiB,GAEbjJ,GACJ,IAAK,IACL,IAAK,IAED,IAAIuJ,OAAW,EAEXA,EADA5U,IACWjD,EAAS,QAAU8M,EAAK0B,WAAW/I,GAAMoH,EAAWK,YAGpDL,EAAWK,WAAWJ,EAAK2B,MA/EjD,eA+EmE3B,EAAK0B,WAAW/I,IAE5E,IAAIqS,EAAa3J,EAAOrH,cAAc+Q,GAEtCX,GAAe,IAAMrV,OAAOjB,KAAKkX,GAAYvQ,KAAK,KAAO,IACzD,MACJ,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IACL,IAAK,IAED,GADAmQ,GAAY,GACE,MAATpJ,GAAyB,MAATA,IAAiB7I,EAAM,EAAG,CAC3C,IAAIsS,OAAY,EAGZA,EAFA9U,IAEYjD,EAAS,UAAY8M,EAAK0B,WAAW/I,GAAMoH,EAAWK,YAItDL,EAAWK,WAAX,OAtG3B,eAsGoEJ,EAAK0B,WAAW/I,IAGzEuR,EAAaW,GAAWxJ,EAAOrH,cAAciR,GAE7Cb,GAAe,IAAMrV,OAAOjB,KAAKoW,EAAaW,IAAUpQ,KAAK,KAAO,SAEnE,GAAa,MAAT+G,EAAc,CACnB,GAAI7I,EAAM,EACN,SAEJsD,GAAW,EACXmO,GAAe,IAAMM,EAAQA,EAAQ,IAAMA,EAA5B,UAGfzO,GAAW,EACXmO,GAAe,IAAMM,EAAQA,EAAQI,EAAW,IAEvC,MAATtJ,IACA0I,EAAagB,QAAS,GAE1B,MACJ,IAAK,IAEDd,GAAe,IAAMM,GADH,IAAR/R,EAAY,IAAM,IACO+R,EAAQ,IAC3C,MACJ,IAAK,IACDE,EAAY3O,GAAW,EAEnBmO,GADQ,IAARzR,EACe,IAAM+R,EAAQA,EAAQ,IAGtB,IAAMA,EAAQ,IAAM/R,EAAM,MAE7C,MACJ,IAAK,IACDiS,GAAY,EACZ,IAAIO,EAAchV,IACdjD,EAAS,aAAc6M,EAAWK,YAClClN,EAAS,yBAA0B6M,EAAWK,YAClD8J,EAAaW,GAAWxJ,EAAOrH,cAAcmR,GAC7Cf,GAAe,IAAMrV,OAAOjB,KAAKoW,EAAaW,IAAUpQ,KAAK,KAAO,IACpE,MACJ,IAAK,IACDmQ,GAAY,EACZ,IAAI/I,EAASlJ,GAAO,EAAK,UAAqB,IAARA,EAAa,WAAa,YAChEuR,EAAaW,GAAWxJ,EAAOrH,cAAc7D,IACzCjD,EAAS,OAAQ6M,EAAWK,YAAclN,EAAS,QAAU2O,EAAO9B,EAAWK,aACnFgK,GAAe,IAAMrV,OAAOjB,KAAKoW,EAAaW,IAAUpQ,KAAK,KAAO,KACpE,MACJ,IAAK,IAEDmQ,EAAsB,KADX,IAAI5L,MAAOuE,oBAEtB2G,EAAaW,GAAW3X,EAAS,sBAAuB6M,EAAWuB,cACnE,IAAI8J,EAAQlB,EAAaW,GAErBQ,GADJlB,EAAYxR,EAAM,GACQ,QAAUyS,EAAM3H,WAC1C4H,EAAWA,EAAS9X,QAAQ,KAAM6N,EAAUhF,eAC5CgO,GAAe,IAAMvT,KAAKyU,kBAAkBD,EAAUD,EAAOV,GAAS,KACtED,GAAiB,EACjBD,EAAeL,EAAW,EAAI,GAC9B,MACJ,IAAK,IAEDC,GAAe,IADD5P,EAAIjH,QAAQ,MAAO,IACF,KAC/B,MACJ,QACI6W,GAAe,UAGnBQ,IACAV,EAAaG,aAAaQ,GAAW,CAAE5O,SAAUA,EAAUsP,IAAK9X,EAAI,EAAI8W,EAAeJ,SAAUA,IAEjG1W,IAAM+O,EAAW,GAAMvO,EAAkBmW,KACzCF,EAAasB,YAAc,IAAI9Q,OAAO,IAAM0P,EAAc,IAAK,OAI3E,OAAO,SAAU/W,GACb,IAAIoY,EAAkB7U,EAAM8U,kBAAkBrY,EAAO6W,EAAcD,GACnE,GAAIhW,EAAkBwX,KAAqB1W,OAAOjB,KAAK2X,GAAiB/X,OACpE,OAAO,KAEX,GAAIwW,EAAa5J,UAAW,CACxB,IAAIqL,EAAO,GACPxO,EAAQsO,EAAgBzO,KACxB4O,EAAQH,EAAgB7O,IACxBM,EAASuO,EAAgB3O,MACzB+O,EAAS1O,EAASA,EAAQ,GAAM,GAChC2O,EAAkC,IAAlBD,EAAOnY,OACtByJ,GAAUD,GAAW0O,IAASE,IAC/BH,EAAOpS,EAAYmD,aAAa,IAAIsC,OAEpC8M,IACA3O,EAAQ4O,UAAUJ,EAAK3O,KAAO,IAAI9E,MAAM,EAAG,GAAK2T,EAAQ,KAG5D,IAAIzL,EAAa7G,EAAYmF,YAAYvB,GAASwO,EAAK3O,KAAME,GAAUyO,EAAK7O,MAAO8O,GAASD,EAAKlN,MACjGgN,EAAgBzO,KAAOoD,EAAWnD,cAClCwO,EAAgB3O,MAAQsD,EAAWrD,WAAa,EAChD0O,EAAgB7O,IAAMwD,EAAWvD,UAErC,OAAOjG,EAAMoV,cAAcP,KAUnC1B,EAAWiC,cAAgB,SAAU9J,EAAS7O,GAC1C,IAAI6G,EAAM7G,GAAS,IAAI2L,KACvB9E,EAAI+R,gBAAgB,GACpB,IACIC,EAAIhK,EAAQlF,KACZkG,EAAQhB,EAAQN,WAChBwJ,EAAQlJ,EAAQH,SACpB,IAAKpO,EAAYuY,GAAI,CAEjB,IADWA,EAAI,IAAIxY,QACR,EAEPwY,GADoD,IAAtC7O,KAAKC,MAAMpD,EAAI+C,cAAgB,KAGjD/C,EAAIiS,YAAYD,GAEpB,IAAK,IAAIrX,EAAK,EAAGuX,EAZL,CAAC,OAAQ,SAAU,SAAU,eAAgB,QAAS,OAYhCvX,EAAKuX,EAAQ1Y,OAAQmB,IAAM,CACzD,IAAIhB,EAAMuY,EAAQvX,GACdwX,EAASnK,EAAQrO,GAIrB,GAHIF,EAAY0Y,IAAmB,QAARxY,GACvBqG,EAAIoS,QAAQ,IAEX3Y,EAAY0Y,GACb,GAAY,UAARxY,EAAiB,CAEjB,IADAwY,GAAU,GACG,GAAKA,EAAS,GACvB,OAAO,IAAIrN,KAAK,WAEpB,IAAIuN,EAAQrS,EAAI2C,UAChB3C,EAAIoS,QAAQ,GACZpS,EAAIiF,EAAWtL,IAAMwY,GACrB,IAAIG,EAAQ,IAAIxN,KAAK9E,EAAI+C,cAAeoP,EAAS,EAAG,GAAGxP,UACvD3C,EAAIoS,QAAQC,EAAQC,EAAQD,EAAQC,OAEnC,CACD,GAAY,QAAR3Y,EAAe,CACf,IAAI4Y,EAAU,IAAIzN,KAAK9E,EAAI+C,cAAe/C,EAAI6C,WAAa,EAAG,GAAGF,UACjE,GAAKwP,EAAS,GAAKA,EAASI,EACxB,OAAO,KAGfvS,EAAIiF,EAAWtL,IAAMwY,IAIjC,IAAK1Y,EAAYuP,GAAQ,CACrB,IAAI2G,EAAO3P,EAAIiJ,WACD,OAAVD,EACAhJ,EAAIwS,SAAS7C,GAAiB,KAATA,EAAc,EAAI,KAEzB,KAATA,GACL3P,EAAIwS,SAAS,GAGrB,IAAK/Y,EAAYyX,GAAQ,CACrB,IAAIuB,EAAUvB,EAAQlR,EAAIqJ,oBACV,IAAZoJ,GACAzS,EAAI0S,WAAW1S,EAAI2S,aAAeF,GAG1C,OAAOzS,GASX6P,EAAW2B,kBAAoB,SAAUrY,EAAO6W,EAAc4C,GAC1D,IAAI3K,EAAU9O,EAAMiG,MAAM4Q,EAAasB,aACnCuB,EAAa,CAAE,KAAQ,EAAG,OAAU,EAAG,OAAU,GACzCD,EAAIjR,aAChB,GAAI5H,EAAkBkO,GAClB,OAAO,KAIP,IADA,IACStN,EAAK,EAAGmY,EADLjY,OAAOjB,KAAKoW,EAAaG,cACHxV,EAAKmY,EAAQtZ,OAAQmB,IAAM,CACzD,IAAIoF,EAAO+S,EAAQnY,GACfoY,EAAY/C,EAAaG,aAAapQ,GACtCiT,EAAc/K,EAAQ8K,EAAU1B,KACpC,GAAI0B,EAAUhR,SACV8Q,EAAW9S,GAAQpD,KAAKsW,qBAAqBD,EAAaJ,QAG1D,GAAa,aAAT7S,GAAwBtG,EAAYuZ,GAiBpCA,EAAyB,UAATjT,GAAuBiQ,EAAa5J,WAAwC,OAAzB4J,EAAatK,SAA6C,UAAzBsK,EAAatK,SAAgD,UAAzBsK,EAAatK,QACvEsN,EAAxEA,EAAY,GAAGE,cAAgBF,EAAYlK,UAAU,GAAGqK,cAC9DN,EAAW9S,GAAQiQ,EAAajQ,GAAMiT,OAnBY,CAClD,IAAI3B,EAAM0B,EAAU1B,IAChBxQ,OAAM,EACNuS,EAASnL,EAAQoJ,EAAM,GACvBhC,GAAQ5V,EAAY2Z,GACpBL,EAAU9C,SACVpP,EAA+D,GAAzDlE,KAAK0W,aAAahE,EAAM+D,EAAQnL,EAAQoJ,EAAM,GAAIuB,IAGxD/R,EAA+D,GAAzDlE,KAAK0W,aAAahE,EAAM+D,EAAQnL,EAAQoJ,EAAM,GAAIuB,GACxD/R,GAAOlE,KAAK0W,aAAahE,EAAMpH,EAAQoJ,EAAM,GAAIpJ,EAAQoJ,EAAM,IAAKuB,IAEnE7Y,EAAkB8G,KACnBgS,EAAW9S,GAAQc,IAcvC,OAJQmP,EAAagB,SACb6B,EAAW7B,QAAS,GAGrB6B,GAQXhD,EAAWoD,qBAAuB,SAAU9Z,EAAOwM,GAE/C,OADAxM,EAAQgO,EAAOrG,kBAAkB3H,EAAOwM,EAAOjE,iBAAkBiE,EAAOlE,aACpEgO,EAAUnJ,KAAKnN,IACPA,EAEL,MASX0W,EAAWuB,kBAAoB,SAAU7H,EAAY+J,EAAOjR,GACxD,IACI3B,EAGA6S,EAJAtM,EAAUqM,EAAM5J,UAGhB8J,EAAS,IAAMnR,EAAN,KAA2BA,EAAS,IAajD,OAXA3B,EAAM6I,EAAWlQ,QAAQ,IAAK,OAO9Bka,GALI7S,GAD8B,IAA9B6I,EAAWzO,QAAQ,MACb4F,EAAIrH,QAAQ,SAAU,IAAMma,EAAS,KAGrC9S,EAAIrH,QAAQ,OAAQ,IAAMma,EAAS,OAE7Bla,MAAM,KAAK+G,KAAI,SAAUC,GACrC,OAAO2G,EAAQ5N,QAAQ,MAAOiH,MAElCI,EAAM6S,EAAShT,KAAK,KAAO,IAAM+S,EAAM9J,eAW3CqG,EAAWwD,aAAe,SAAUhE,EAAM7B,EAAMC,EAAMmF,GAClD,IAAIa,EAAOpE,EAAO7B,EAAOC,EACzB,IAAKgG,EACD,OAAO,EAEX,IAAIta,EAAQwD,KAAKsW,qBAAqBQ,EAAMb,GAC5C,OAAIvD,GACQlW,EAELA,GAEJ0W,EAhXqB,GCtB5B6D,EAAa,qEACbC,EAAa,KAEb/Z,EAAO,CAAC,YAAa,YAKrBga,EAA8B,WAC9B,SAASA,KAqHT,OA5GAA,EAAaC,aAAe,SAAUnO,EAASC,EAAQC,GACnD,IAGImK,EAHArT,EAAQC,KACRkJ,EAAaC,EAAKC,eAAeH,EAAMF,EAAS,IAAI,GACpDsK,EAAe,CAAE8D,QAAQ,GAExBhO,EAAKsF,YAAY9E,KAAKX,EAAOe,UAAcf,EAAOe,QACnDzL,EAAO+U,EAAclK,EAAKwF,yBAAyB3F,EAAOe,QAAU,MACpEsJ,EAAa8D,QAAS,EACjB9D,EAAa/D,gBACVtG,EAAOoG,wBACPiE,EAAajE,sBAAwBpG,EAAOoG,wBAKpD9Q,EAAO+U,EAAclK,EAAKuF,aAAa1F,EAAOe,OAAQ,KAAM,OAEhE,IAKIqN,EALAtD,EAAUzX,EAAS,UAAW6M,EAAWuB,cAM7C,GALA2I,EAAa5I,EAAOjG,yBAAyB2E,EAAWuB,aAAcD,EAAOvH,mBAAmBgG,IAAO,EAAM3J,KAC7G+T,EAAagE,YAAc7M,EAAOjH,eAAerF,OAAOjB,KAAKmW,EAAWlO,cAExEmO,EAAaiE,SAAWlE,EAAWnO,mBAAmBhI,EAAK,IAEtDqC,IAUD+T,EAAa5D,MAAQnR,EAAO,GAAI,GAAIjC,EAASgX,EAAanJ,KAAO,QAAS4J,IAC1ET,EAAa3D,MAAQpR,EAAO,GAAI,GAAIjC,EAASgX,EAAanJ,KAAO,QAAS4J,IAChD,aAAtBT,EAAanJ,MAAuBlB,EAAOmF,UAC3ChF,EAAKwG,sBAAsB,CAAC0D,EAAa3D,MAAO2D,EAAa5D,OAAQpT,EAAS,iBAAkByX,GAAU9K,EAAOmF,eAXrH,GADAiJ,EAAgBjO,EAAK2F,iBAAiBuE,EAAanJ,KAAMkJ,EAAW3O,aAAcyE,EAAW6E,cAAesF,EAAatE,WACtG,CAEf,IAAIpS,GADJya,EAAgBA,EAAc1a,QAAQ,UAAWyM,EAAKqG,kBAC5B7S,MAAM,KAChC0W,EAAa5D,MAAQtG,EAAKyG,cAAcjT,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAM,IAC1E0W,EAAa3D,MAAQvG,EAAKyG,cAAcjT,EAAM,IAAI,EAAM,IAUhE,OAAO,SAAUH,GACb,OAAOuD,EAAMwX,gBAAgB/a,EAAO6W,EAAcD,KAU1D6D,EAAaM,gBAAkB,SAAU/a,EAAO6O,EAAS+H,GACrD,IAAIoE,EACA3I,EACA4I,EACA5E,EACA6E,EACA3T,EACJ,IAAyC,IAArCvH,EAAM2B,QAAQkN,EAAQiM,UACtB,OAAOK,IAGPnb,EAAQgO,EAAOrG,kBAAkB3H,EAAO6O,EAAQgM,YAAajE,EAAWlO,aAE7C,KAD3B1I,EAAQgO,EAAOrG,kBAAkB3H,EAAO4W,EAAWrO,iBAAkBqO,EAAWtO,cACtE3G,QAAQ,OACd3B,EAAQ,IAAMA,GAElB,IAAI8O,EAAU9O,EAAMiG,MAAMsU,GAC1B,GAAI3Z,EAAkBkO,GAClB,OAAOsM,IAEX/E,EAAOvH,EAAQ,GACfmM,EAAYnM,EAAQ,GACpB,IAAIuM,EAAWvM,EAAQ,GAyBvB,OAxBAoM,EAAMpM,EAAQ,GAGduD,GAFA2I,EAAanM,EAAQ8L,OAAWtE,IAASxH,EAAQoE,MAAMwC,OAAWyF,IAAQrM,EAAQoE,MAAMyC,MAC3C,IAAvCW,EAAK1U,QAAQkN,EAAQoE,MAAMwC,SAAwD,IAArCyF,EAAIvZ,QAAQkN,EAAQoE,MAAMyC,OAE1E7G,EAAQoE,MAAMZ,UACdxD,EAAQqE,MAAMb,UAClB4I,EAAYA,EAAU/a,QAAQsa,EAAY,IACtCa,IACAJ,GAAaI,GAEjB9T,GAAO0T,GACc,YAAjBpM,EAAQnB,MAAsB2E,KAC9B9K,GAAY,MAEZsH,EAAQ8L,QAAU9L,EAAQiE,kBAC1BvL,EAAM+T,WAAW/T,EAAI6O,QAAQvH,EAAQ8L,OAChCK,EAAanM,EAAQoE,MAAML,sBAAwB/D,EAAQqE,MAAMN,sBAAyB/D,EAAQiE,kBAEvGjE,EAAQ+D,wBACRrL,EAAM/D,KAAK+X,qBAAqBN,EAAWpM,EAAStH,EAAKyT,IAEzDA,IACAzT,IAAQ,GAELA,GAGfkT,EAAac,qBAAuB,SAAUvb,EAAO6O,EAAStH,EAAKyT,GAC/D,IAAIQ,EAAoBxb,EAAMG,MAAM,KAKpC,OAJIqb,EAAkB,IAAMA,EAAkB,GAAGnb,OAASwO,EAAQ+D,wBAC9DrL,GAAQA,EAAI6O,QAAQvH,EAAQ8L,OACvBK,EAAanM,EAAQoE,MAAML,sBAAwB/D,EAAQqE,MAAMN,sBAAyB/D,EAAQ+D,wBAEpGrL,GAEJkT,EAtHuB,GCX9BgB,EAA0B,WAC1B,SAASA,EAASC,GACdlY,KAAKmY,SAAW,GAChBnY,KAAKoY,cAAgB,GACjBhb,EAAkB8a,KAGtBlY,KAAKkY,QAAUA,GA4KnB,OAjKAD,EAAS/b,UAAUmc,GAAK,SAAUC,EAAUC,EAASL,EAASM,GAC1D,IAAIpb,EAAkBmb,GAAtB,CAGA,IAAIE,EAAQP,GAAWlY,KAAKkY,QACxBlY,KAAK0Y,SAASJ,GACdtY,KAAKoY,cAAcE,GAAY,CAAC,CAAEC,QAASA,EAASL,QAASO,IAG5Drb,EAAkBob,GAMbxY,KAAK2Y,iBAAiB3Y,KAAKoY,cAAcE,GAAWC,IAC1DvY,KAAKoY,cAAcE,GAAUM,KAAK,CAAEL,QAASA,EAASL,QAASO,KAN5B,IAA/BzY,KAAKmY,SAASha,QAAQqa,KACtBxY,KAAKmY,SAASS,KAAKJ,GACnBxY,KAAKoY,cAAcE,GAAUM,KAAK,CAAEL,QAASA,EAASL,QAASO,EAAOD,GAAIA,OActFP,EAAS/b,UAAU2c,IAAM,SAAUP,EAAUC,EAASC,GAClD,IAAIxY,KAAK0Y,SAASJ,GAAlB,CAGA,IAAIlC,EAAY/Z,EAASic,EAAUtY,KAAKoY,eACxC,GAAIG,GACA,IAAK,IAAI3b,EAAI,EAAGA,EAAIwZ,EAAUvZ,OAAQD,IAClC,GAAI4b,GACA,GAAIpC,EAAUxZ,GAAG4b,KAAOA,EAAI,CACxBpC,EAAU0C,OAAOlc,EAAG,GACpB,IAAImc,EAAgB/Y,KAAKmY,SAASha,QAAQqa,IACnB,IAAnBO,GACA/Y,KAAKmY,SAASW,OAAOC,EAAe,GAExC,YAGH,GAAIR,IAAYnC,EAAUxZ,GAAG2b,QAAS,CACvCnC,EAAU0C,OAAOlc,EAAG,GACpB,mBAKDoD,KAAKoY,cAAcE,KAWlCL,EAAS/b,UAAU8c,OAAS,SAAUV,EAAUW,EAAUC,EAAgBC,GACtE,GAAInZ,KAAK0Y,SAASJ,GACVY,GACAA,EAAe5X,KAAKtB,KAAMiZ,OAFlC,CAMIA,IACAA,EAASG,KAAOd,GAEpB,IACIlC,EAAY/Z,EAASic,EAAUtY,KAAKoY,eAAe/W,MAAM,GAC7D,GAAIK,OAAM,OACN,OAAO1B,KAAKqZ,eAAejD,EAAW6C,EAAUC,EAAgBC,EAAc,GAG9E,IAAK,IAAInb,EAAK,EAAGsb,EAAclD,EAAWpY,EAAKsb,EAAYzc,OAAQmB,IAAM,CACrE,IAAI4G,EAAM0U,EAAYtb,GACtB4G,EAAI2T,QAAQjX,KAAKsD,EAAIsT,QAASe,GAE9BC,GACAA,EAAe5X,KAAKtB,KAAMiZ,KAItChB,EAAS/b,UAAUmd,eAAiB,SAAUE,EAAMN,EAAUC,EAAgBC,EAAcK,GACxF,IAAIzZ,EAAQC,KACRyZ,EAAYD,IAAUD,EAAK1c,OAAS,EACxC,GAAI2c,EAAQD,EAAK1c,OAAQ,CACrB,IAAI6c,EAAQH,EAAKC,GACbG,EAAUD,EAAMnB,QAAQjX,KAAKoY,EAAMxB,QAASe,GAChD,GAAIU,GAAmC,oBAAjBA,EAAQC,KAAqB,CAC/C,IAAKV,EACD,OAAOS,EAEXA,EAAQC,MAAK,SAAUC,GAGnB,GAFAA,EAAuB,kBAATA,GAAqB9Z,EAAM+Z,OAAOD,GAAQE,KAAKC,MAAMH,EAAM9Z,EAAMka,aAAeJ,EAC9Fvb,EAAO2a,EAAUA,EAAUY,GAAM,IAC7BX,IAAkBO,EAIlB,OAAO1Z,EAAMsZ,eAAeE,EAAMN,EAAUC,EAAgBC,EAAcK,EAAQ,GAHlFN,EAAe5X,KAAKoY,EAAMxB,QAASe,MAKxCiB,OAAM,SAAUL,GACXV,GACAA,EAAa7X,KAAKoY,EAAMxB,QAAyB,kBAAT2B,GACpC9Z,EAAM+Z,OAAOD,GAAQE,KAAKC,MAAMH,EAAM9Z,EAAMka,aAAeJ,UAItE,KAAIX,IAAkBO,EAIvB,OAAOzZ,KAAKqZ,eAAeE,EAAMN,EAAUC,EAAgBC,EAAcK,EAAQ,GAHjFN,EAAe5X,KAAKoY,EAAMxB,QAASe,MAQ/ChB,EAAS/b,UAAU+d,YAAc,SAAUjd,EAAKR,GAE5C,OAAI8C,GAA6B,kBAAV9C,GAAgD,OAA1BA,EAAMiG,MADpC,wCAEH,IAAI0F,KAAK3L,GAEbA,GAEZyb,EAAS/b,UAAU4d,OAAS,SAAUtd,GAClC,IACIud,KAAKC,MAAMxd,GAEf,MAAOqE,GACH,OAAO,EAEX,OAAO,GAKXoX,EAAS/b,UAAUie,QAAU,WACzBna,KAAKoY,cAAgBpY,KAAKkY,aAAUlc,GAKxCic,EAAS/b,UAAUwc,SAAW,SAAUtV,GACpC,OAAmD,IAA5CpD,KAAKoY,cAAc5Y,eAAe4D,IAAmBpD,KAAKoY,cAAchV,GAAMvG,QAAU,GAKnGob,EAAS/b,UAAUyc,iBAAmB,SAAUP,EAAeG,GAC3D,IAAK,IAAIva,EAAK,EAAGoc,EAAkBhC,EAAepa,EAAKoc,EAAgBvd,OAAQmB,IAAM,CAEjF,GADUoc,EAAgBpc,GAClBua,UAAYA,EAChB,OAAO,EAGf,OAAO,GAEJN,EAnLmB,GCSnBoC,EAAe,IAAIpC,EAInBqC,GAAc,EAKdC,EAAW,GAKXC,EAAiB,QAKjBpM,EAAsB,MAqC7BqM,EAAsC,WACtC,SAASA,EAAqBC,GACtBA,IACA1a,KAAK+I,QAAU2R,GA6GvB,OArGAD,EAAqBve,UAAUye,cAAgB,SAAUtP,GACrD,OAAOxC,EAAWC,WAAW9I,KAAK4a,aAAcvP,GAAW,CAAEnB,KAAM,OAAQD,SAAU,SAAWsQ,IAOpGE,EAAqBve,UAAU2e,gBAAkB,SAAUxP,GAOvD,OANIA,IAAYA,EAAQ8C,WACpB9C,EAAQ8C,SAAWC,GAEnB9O,KAAc+L,IAAYA,EAAQtB,SAClCsB,EAAQgE,sBAAwB,GAE7B5B,EAAaC,gBAAgB1N,KAAK4a,aAAcvP,GAAW,GAAIkP,IAO1EE,EAAqBve,UAAU4e,cAAgB,SAAUzP,GACrD,OAAO6H,EAAWC,WAAWnT,KAAK4a,aAAcvP,GAAW,CAAEpB,SAAU,QAASC,KAAM,QAAUqQ,IAOpGE,EAAqBve,UAAU6e,gBAAkB,SAAU1P,GAIvD,OAHI/L,KAAc+L,IAAYA,EAAQtB,SAClCsB,EAAQgE,sBAAwB,GAE7B4H,EAAaC,aAAalX,KAAK4a,aAAcvP,GAAW,CAAEtB,OAAQ,KAAOwQ,IAQpFE,EAAqBve,UAAU8e,aAAe,SAAUxe,EAAOwM,GAC3D,OAAOhJ,KAAK6a,gBAAgB7R,EAArBhJ,CAA6BxD,IAQxCie,EAAqBve,UAAU+e,WAAa,SAAUze,EAAOwM,GACzD,OAAOhJ,KAAK2a,cAAc3R,EAAnBhJ,CAA2BxD,IAQtCie,EAAqBve,UAAUgf,UAAY,SAAU1e,EAAOwM,GACxD,OAAOhJ,KAAK8a,cAAc9R,EAAnBhJ,CAA2BxD,IAQtCie,EAAqBve,UAAUif,YAAc,SAAU3e,EAAOwM,GAC1D,OAAOhJ,KAAK+a,gBAAgB/R,EAArBhJ,CAA6BxD,IASxCie,EAAqBve,UAAUkf,eAAiB,SAAUpS,EAAQqS,GAC9D,OAAOC,EAASC,wBAAwBvb,KAAK4a,aAAc5R,EAAQuR,EAAUc,IAQjFZ,EAAqBve,UAAUsf,iBAAmB,SAAUxS,EAAQyS,GAChE,OAAOH,EAASI,sBAAsB1b,KAAK4a,aAAc5R,EAAQuR,EAAUkB,IAM/EhB,EAAqBve,UAAUyf,kBAAoB,WAC/C,OAAOL,EAASM,YAAY5b,KAAK4a,aAAcL,IAEnDE,EAAqBve,UAAU0e,WAAa,WACxC,OAAO5a,KAAK+I,SAAWyR,GAEpBC,EAhH+B,GAuHnC,SAASoB,EAAWnB,GACvBF,EAAiBE,EACjBL,EAAarB,OAAO,uBAAwB,CAAE,OAAUwB,ICrLrD,IAwBIc,EAxBAQ,EAAuB,CAC9B,QAAS,CACL,EAAK,QACL,EAAK,kBACL,EAAK,yBACL,EAAK,2BACL,EAAK,eACL,EAAK,sBACL,EAAK,SACL,EAAK,SACL,EAAK,sCACL,EAAK,sCACL,EAAK,gCACL,EAAK,UACL,EAAK,WACL,EAAK,iCACL,EAAK,gCACL,EAAK,YACL,EAAK,eAOb,SAAWR,GAEPA,EAAS/K,kBAAoB,qHAC7B+K,EAASS,YAAc,mHACvBT,EAASpO,eAAiB,uBAC1B,IAAI8O,EAAgB,SACpBV,EAAS9L,gBAAkB,IAC3B,IAAInK,EAAS,CAAC,WAAY,MAAO,QAAS,WACtC4W,EAAe,8BACfxI,EAAe,CACf,EAAK,GACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACLyI,IAAM,IACN,KAAM,SACN,GAAM,KACN,EAAK,OACL,KAAQ,OACR,EAAK,OAETZ,EAASa,oBAAsB,aAE/Bb,EAAS5R,aAAe,WACxB,IAAI0S,EAAiB,CACjB,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,EACP,IAAO,GAEXd,EAAS7M,YAAc,mCACvB6M,EAASe,oBAAsB,gCAC/Bf,EAASgB,sBAAwB,WACjC,IAAIC,EAAa,CACb,EAAK,aACL,IAAK,YACL,IAAK,aACLC,EAAG,QACHC,EAAG,QAykBP,SAASzS,EAAoBC,EAAUV,EAAYW,EAAMT,EAAWiT,GAChE,IAAI5S,EACA6S,EAAQzS,GAAQ,OACpB,GAAIwS,EACA5S,EAAaD,EAAyB,CAAEI,SAAUA,GAAYyS,GAAe3S,QACzEF,EAAyB,CAAEI,SAAU,KAAO,SAASF,WAExD,CACD,IAAkD,IAA9CuR,EAASsB,cAAcze,QAAQ8L,IAE/B,GADAH,EAAazN,EAASsgB,EAAQ,WAAa1S,EAAUV,GACvC,aAAVoT,EAAsB,CACtB,IAAIE,EAAWxgB,EAAS,eAAiB4N,EAAUV,GAC/CuT,EAAWzgB,EAAS,eAAiB4N,EAAUV,GACnDO,EAAaA,EAAWpN,QAAQ,MAAOmgB,GAAUngB,QAAQ,MAAOogB,SAIpEhT,EAAazN,EAAS,oCAAsC4N,EAAUV,GAEtEzM,EAAYgN,IAA4B,QAAbG,IAC3BH,EAAa,SAGrB,OAAOA,EAWX,SAASV,EAAeH,EAAMF,EAASgU,EAAM3X,GACzC,IAAIrB,EAAM,GACNiZ,EAAeD,GAAQ,YAE3B,GADAhZ,EAAI0G,aAAeD,EAAOzH,cAAckG,EAAMF,KAAazJ,IAAagc,EAAS2B,oBAAsB3B,EAAS4B,eAC5G9X,EACArB,EAAIgK,cAAgB1R,EAAS,UAAW0H,EAAI0G,kBAE3C,CACD,IAAI0S,EAAa7d,IAAa,QAAW,mBAAqB0d,EAC9DjZ,EAAIwF,WAAalN,EAAS8gB,EAAYpZ,EAAI0G,cAE9C,OAAO1G,EAYX,SAAS+K,EAAiB5E,EAAMkT,EAAW7gB,EAAKwS,GAC5C,OAAO1S,EAAS6N,EAAO,wBACnBkT,GAAarO,EAAY,cAAgB,aAAcxS,KAASwS,EAAY1S,EAAS6N,EAAO,wBAC5FkT,EAAY,YAAa7gB,GAAO,IAGxC,SAAS8N,EAAwBN,GAC7B,IAAIsT,EAAgBtT,EAAOtH,MAAM6Y,EAASa,qBAC1C,GAAIkB,GAAiB/d,IAAY,CAC7B,IAAIge,EAAyC,IAA5BD,EAAc,GAAGxgB,OAAe,MAAQ,OACzD,OAAOkN,EAAOrN,QAAQ4e,EAASa,oBAAqBmB,GAExD,OAAOvT,EAGX,SAASF,EAAyBL,EAAeT,GAC7C,IAAIgB,EAASP,EAAcO,QAAUP,EAAcS,SAC/CsT,EAAkBlhB,GAAU0M,GAAW,SAAW,IAAMgB,EAAQ+R,GAQpE,OAPKyB,IACDA,EAAkBlhB,EAAS,SAAW0N,EAAQ+R,IAE9CyB,IACAA,EAAkBlT,EAAwBkT,GAC1C/T,EAAcO,OAASwT,EAAgB7gB,QAAQ,KAAM,MAElD8M,EASX,SAASmF,EAAyB1E,GAC9B,IAAIqB,EAAUrB,EAASxH,MAAM6Y,EAAS7M,aAClC1K,EAAM,GACNuG,EAAUgB,EAAQ,GAAGiL,cAOzB,OANAxS,EAAIgL,UAAyB,MAAZzE,EAEjBvG,EAAImG,KAAOoR,EAASkC,eAAelT,GAC/BL,EAASpN,OAAS,IAClBkH,EAAIuL,eAAiB4F,SAAS5J,EAAQ,GAAI,KAEvCvH,EAYX,SAAS6L,EAActF,EAASmT,EAAcC,EAASC,GACnD,IAAIlO,EAAQkO,EAAe,GAAK,CAAE1L,MAAO,GAAIC,KAAM,IAC/CzP,EAAQ6H,EAAQ7H,MAAM6Y,EAASS,aACnC,GAAItZ,EAAO,CACFkb,IACDlO,EAAMwC,MAAQ2L,EAAqBnb,EAAM,GAAIib,GAC7CjO,EAAMyC,KAAO0L,EAAqBnb,EAAM,IAAKib,GAC7CjO,EAAMoO,aAAepb,EAAM,IAE/B,IAAIqb,EAAWrb,EAAM,GACrB,GAAIqb,GAAYL,EAAc,CAC1B,IAAIM,EAASD,EAASrb,MAAMuZ,GACvB5e,EAAkB2gB,GAInBtO,EAAMO,gBAAkB,EAHxBP,EAAMO,gBAAkB+N,EAAOlhB,OAKnC4S,EAAMS,gBAAkB4N,EAASjhB,OAAS,GAGlD,OAAO4S,EAUX,SAASmO,EAAqB1Z,EAAK8Z,GAC/B,OAAI9Z,EACOA,EAAIxH,QAAQ4e,EAAS9L,gBAAiBwO,GAE1C,GASX,SAAS9P,EAAkBH,EAAekQ,EAAc5P,GAIpD,OAFkBhS,EAAS,cAAgB4hB,GAD9B5P,EAAa,IAAMA,EAAa,WACqBN,IAC9D1R,EAAS,cAAgB4hB,EAAe,qBAAsBlQ,IAAkB,IAkCxF,SAASmQ,EAAmBnU,EAAQ+D,EAAUxE,GAC1C,IAAIuE,EAAW,CAAE3D,KAAM,UAAWmF,sBAAuB,EAAGD,sBAAuB,GAC/E9E,EAAUP,EAAOtH,MAAM6Y,EAASS,aACpC,GAAI3e,EAAkBkN,IAA4B,KAAfA,EAAQ,IAAwB,QAAXP,EAEpD,OADA8D,EAAS3D,UAAOlO,EACT6R,EAEXA,EAASoE,MAAQ3H,EAAQ,GACzBuD,EAASqE,KAAO5H,EAAQ,IACxB,IAAI6T,EAAc7T,EAAQ,GAC1BuD,EAAS0B,aAA4C,IAA9B4O,EAAYhgB,QAAQ,KAC3CggB,EAAcA,EAAYzhB,QAAQ,KAAM,IACxC,IAAI0hB,EAAe9T,EAAQ,GAuB3B,IAtBkC,IAA9B6T,EAAYhgB,QAAQ,OACpB0P,EAASgE,qBAAuBsM,EAAYthB,OAASshB,EAAYhgB,QAAQ,MAExEf,EAAkBghB,KACnBvQ,EAASwB,sBAAwB+O,EAAa3N,YAAY,KAC1D5C,EAASuB,sBAAwBgP,EAAa3N,YAAY,MAClB,IAApC5C,EAASwB,wBACTxB,EAASwB,sBAAwB,KAEG,IAApCxB,EAASuB,uBAAgCvB,EAASuB,sBAAwBvB,EAASwB,yBACnFxB,EAASuB,sBAAwBvB,EAASwB,wBAG7CjS,EAAkB0Q,GAOnBxP,EAAOuP,EAAUwQ,EAAkB,CAACxQ,EAASoE,MAAOpE,EAASqE,MAAO,IAAK,OANzE5T,EAAOuP,EAAUwQ,EAAkB,CAACxQ,EAASoE,MAAOpE,EAASqE,MAAO,IAAKpE,EAASG,iBAC7EJ,EAASe,YACVtQ,EAAOuP,EAAUwQ,EAAkB,CAACxQ,EAASoE,MAAOpE,EAASqE,MAAO,IAAKpE,EAASQ,kBAMrFlR,EAAkBkM,GAAY,CAC/B,IAAIqE,EAAgBmB,EAAiBjB,EAAS3D,KAAM4D,EAASE,aAAavJ,aAAc6E,GAAW,GAC/FuE,EAAS0B,cACT1B,EAASgC,eAAiB/B,EAASE,aAAa1I,cAAcD,EAAO,IACrEwI,EAASiC,UAAYrC,EAAasC,mBAAmBpC,EAAchR,MAAM,KAAK,KAElFkR,EAASoE,MAAQpE,EAASoE,MAAMvV,QAAQ,MAAO,IAC/CmR,EAASqE,KAAOrE,EAASqE,KAAKxV,QAAQ,MAAO,IAEjD,OAAOmR,EAUX,SAASwQ,EAAkBC,EAAOC,EAAQC,GAEtC,IADA,IAAInT,EAAU,CAAE4G,MAAOqM,EAAM,GAAIpM,KAAMoM,EAAM,IACpC1hB,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAI6hB,EAAOH,EAAM1hB,GACb8hB,EAAMD,EAAKtgB,QAAQogB,GACvB,IAAc,IAATG,IAAiBA,EAAMD,EAAKtgB,QAAQ,MAAWugB,EAAMD,EAAKhO,YAAY,MAAS,CAChFpF,EAAQkR,EAAW3f,IAAM6hB,EAAKrS,OAAO,EAAGsS,GAAOF,EAASC,EAAKrS,OAAOsS,EAAM,GAC1ErT,EAAQkR,EAAWgC,KAAW,EAC9BlT,EAAQnB,KAAOmB,EAAQuD,WAAa,WAAa,UACjD,OAGR,OAAOvD,EA30BXiQ,EAAS/P,eAAiB,iCAC1B+P,EAASsB,cAAgB,CAAC,QAAS,SAAU,OAAQ,QAErDtB,EAAS4B,cAAgB,CACrB,MAAS,CACL,UAAa,CACT,UAAa,CACT,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,IACN,GAAM,IACN,GAAM,KAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,cAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,gBACL,gBAAiB,oBACjB,EAAK,cACL,gBAAiB,cAErB,QAAW,CACP,EAAK,KACL,gBAAiB,MACjB,EAAK,KACL,gBAAiB,MAErB,UAAa,CACT,EAAK,IACL,gBAAiB,MACjB,EAAK,IACL,gBAAiB,OAGzB,YAAe,CACX,KAAQ,kBACR,KAAQ,YACR,OAAU,WACV,MAAS,UAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,KAAQ,cACR,KAAQ,aACR,IAAO,WACP,IAAO,UACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,IACL,GAAM,MACN,IAAO,QACP,KAAQ,WACR,KAAQ,QACR,MAAS,WACT,OAAU,cACV,MAAS,YAIrB,QAAW,CACP,OAAU,CACN,cAAe,CACX,YAAe,CACX,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,UACL,EAAK,SACL,EAAK,UACL,EAAK,OACL,EAAK,OACL,EAAK,OACL,GAAM,QACN,GAAM,gBACN,GAAM,iBAEV,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,GAAM,KACN,GAAM,KACN,GAAM,MAEV,KAAQ,CACJ,EAAK,WACL,EAAK,QACL,EAAK,eACL,EAAK,gBACL,EAAK,WACL,EAAK,YACL,EAAK,QACL,EAAK,eACL,EAAK,UACL,GAAM,UACN,GAAM,yBACN,GAAM,uBAIlB,KAAQ,CACJ,cAAe,CACX,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,OAAU,CACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,cAInB,WAAc,CACV,OAAU,CACN,KAAQ,CACJ,GAAM,KACN,GAAM,QAIlB,KAAQ,CACJ,SAAY,CACR,EAAK,MAET,QAAW,CACP,EAAK,MAET,UAAa,CACT,EAAK,OAGb,YAAe,CACX,KAAQ,oBACR,KAAQ,cACR,OAAU,aACV,MAAS,eAEb,YAAe,CACX,KAAQ,iBACR,KAAQ,cACR,OAAU,YACV,MAAS,UAEb,gBAAmB,CACf,KAAQ,eACR,KAAQ,eACR,OAAU,WACV,MAAS,WACT,iBAAoB,CAChB,EAAK,IACL,EAAK,MACL,GAAM,MACN,IAAO,WACP,IAAO,UACP,KAAQ,cACR,KAAQ,aACR,GAAM,MACN,MAAS,UACT,OAAU,aACV,QAAW,gBACX,EAAK,MACL,EAAK,KACL,GAAM,SACN,GAAM,QACN,IAAO,YACP,IAAO,WACP,EAAK,IACL,GAAM,MACN,IAAO,SACP,IAAO,MACP,KAAQ,QACR,MAAS,WACT,MAAS,SACT,GAAM,QACN,EAAK,MACL,KAAQ,MACR,MAAS,YACT,OAAU,cACV,QAAW,iBACX,QAAW,UACX,SAAY,aACZ,UAAa,gBACb,SAAY,WACZ,QAAW,UACX,SAAY,eAK5B,cAAiB,CACb,WAAc,gBACd,UAAa,SACb,cAAiB,QAGzB,QAAW,CACP,WAAc,CACV,IAAO,CACH,YAAe,YACf,OAAU,IACV,oBAAqB,KAEzB,IAAO,CACH,YAAe,OACf,OAAU,SACV,oBAAqB,UAEzB,IAAO,CACH,YAAe,gBACf,oBAAqB,SAG7B,uBAA0B,OAC1B,sBAAyB,IACzB,4BAA6B,CACzB,QAAW,IACX,MAAS,IACT,KAAQ,IACR,YAAe,IACf,SAAY,IACZ,UAAa,IACb,YAAe,IACf,uBAA0B,OAC1B,SAAY,SACZ,SAAY,SACZ,IAAO,MACP,cAAiB,KAErB,mCAAoC,CAChC,SAAY,aAEhB,mCAAoC,CAChC,SAAY,UAEhB,oCAAqC,CACjC,SAAY,eACZ,WAAc,+BAElB,sCAAuC,CACnC,SAAY,SAIxB5B,EAAS2B,oBAAsB,CAC3B,QAAW,CACP,OAAU,CACN,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,IACL,EAAK,KAET,aAAgB,aAChB,cAAiB,CACb,QAAW,IACX,MAAS,IACT,SAAY,IACZ,UAAa,IACb,YAAe,IACf,IAAO,MACP,cAAiB,IACjB,SAAY,UAEhB,cAAiB,IACjB,eAAkB,IAClB,cAAiB,CACb,MAAS,IACT,KAAQ,GACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,cAAiB,CACb,MAAS,KACT,KAAQ,IACR,eAAkB,IAClB,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,IACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,GAEvB,aAAgB,CACZ,MAAS,GACT,KAAQ,GACR,UAAa,CACT,QAAW,GAEf,gBAAmB,EACnB,gBAAmB,IAG3B,MAAS,CACL,WAAc,CACV,GAAM,KACN,GAAM,MAEV,cAAiB,IACjB,KAAQ,CACJ,YAAe,CACX,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,OAEX,MAAS,CACL,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,MAEX,KAAQ,CACJ,IAAO,SACP,IAAO,SACP,IAAO,UACP,IAAO,YACP,IAAO,WACP,IAAO,SACP,IAAO,aAGf,OAAU,CACN,YAAe,CACX,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,EAAK,MACL,GAAM,MACN,GAAM,MACN,GAAM,OAEV,KAAQ,CACJ,EAAK,UACL,EAAK,WACL,EAAK,QACL,EAAK,QACL,EAAK,MACL,EAAK,OACL,EAAK,OACL,EAAK,SACL,EAAK,YACL,GAAM,UACN,GAAM,WACN,GAAM,aAGd,KAAQ,CACJ,EAAK,QAKjB3B,EAASzQ,WAAa,CAClB8T,EAAG,cACHC,EAAG,OACHC,EAAG,SACHpC,EAAG,eAKPnB,EAASrV,MAAQ,SACjBqV,EAASxQ,KAAO,OAIhBwQ,EAASkC,eAAiB,CACtBsB,EAAG,WACHC,EAAG,UACHC,EAAG,UACHC,EAAG,WACHC,EAAG,cAmCP5D,EAAStR,oBAAsBA,EAsB/BsR,EAASlS,eAAiBA,EAe1BkS,EAASxM,iBAAmBA,EAS5BwM,EAASjR,wBAA0BA,EAanCiR,EAASzR,yBAA2BA,EAmBpCyR,EAAS3M,yBAA2BA,EAiCpC2M,EAAS1L,cAAgBA,EA2BzB0L,EAASpN,kBAAoBA,EAsB7BoN,EAAS5M,aAbT,SAAsB3E,EAAQ+D,EAAUvR,GAIpC,IAHA,IAAI8O,EAAU,GACV8T,EAAcpV,EAAOpN,MAAM,KAC3Bkd,EAAO,CAAC,QAAS,QAAS,YACrBjd,EAAI,EAAGA,EAAIuiB,EAAYtiB,OAAQD,IACpCyO,EAAQwO,EAAKjd,IAAMshB,EAAmBiB,EAAYviB,GAAIkR,EAAUvR,GAMpE,OAJIa,EAAkBiO,EAAQoE,SAC1BpE,EAAQoE,MAAQnR,EAAO,GAAI+M,EAAQqE,OACnCrE,EAAQoE,MAAMwC,MAAQ7U,EAAkB0Q,GAAY,IAAMzC,EAAQoE,MAAMwC,MAAQnE,EAASS,YAAclD,EAAQoE,MAAMwC,OAElH5G,GA+EXiQ,EAAS+C,kBAAoBA,EAW7B/C,EAASlR,iBAJT,SAA0BgV,GACtB,IAAI5iB,GAASH,EAAS,oBAAqB+iB,IAAY,IAAI3c,MAAM,kDACjE,OAAOjG,EAAQA,EAAM,GAAK,KA4C9B8e,EAASC,wBAjCT,SAAiCxS,EAASsC,EAASpC,EAAMoS,GACrD,IAAInS,EAAaE,EAAeH,EAAMF,EAASsC,EAAQhC,UACnD/J,MACA+L,EAAUxB,EAAyBwB,EAAStC,IAEhD,IAAIsW,EAAgBhU,EAAQtB,QAAUC,EAAoBqB,EAAQpB,SAAUf,EAAWK,WAAY8B,EAAQnB,MAC3G,GAAImR,EAAe,CAIf,IAAoC,KAHpCgE,EAAgBA,EAAc3iB,QAAQuf,GAAc,SAAU3R,GAC1D,OAAOmJ,EAAanJ,OAENnM,QAAQ,KAAa,CACnC,IAAImhB,EAAUD,EAAc5c,MAAM,MAAM5F,OACpC0iB,OAAkB,EAClBC,EAAY,CAAE,SAAY,IAC9BA,EAAUjV,UAAYC,EAAOrF,gBAAgB+D,EAAWuB,aAAcD,EAAOvH,mBAAmBgG,IAChGuW,EAAUtU,SAAW7O,EAAS,sBAAuB6M,EAAWuB,cAChE,IACIgC,GADQ,IAAItE,MACKuE,oBACjBpC,EAAWgV,EAAU,EAAK,QAAUE,EAAUtU,SAAS0B,WAC3DtC,EAAUA,EAAQ5N,QAAQ,KAAM8iB,EAAUjV,UAAUhF,eACnC,IAAbkH,EACA8S,EAAkBC,EAAUtU,SAAS2B,eAGrC0S,EAAkB1W,EAAWiE,iBAAiBL,EAAUnC,GACxDiV,EAAkBC,EAAUtU,SAAS6B,UAAUrQ,QAAQ,QAAS6iB,IAEpEF,EAAgBA,EAAc3iB,QAAQ,OAAQ,IAAM6iB,EAAkB,KAE1EF,EAAgBA,EAAc3iB,QAAQ,KAAM,IAEhD,OAAO2iB,GA6FX/D,EAASI,sBArET,SAA+B3S,EAASsC,EAASpC,EAAMwS,GACnD,IAGIgE,EAuBAJ,EA1BAnW,EAAaE,EAAeH,EAAMF,EAAS,IAAI,GAC/CsK,EAAe,CAAE8D,QAAQ,GACzBuI,EAAiBxW,EAAW6E,cAE5BvJ,EAAS,GACTmb,GAAYtU,EAAQtB,QAAU,IAAItH,MAAM6Y,EAASe,qBACjDnS,EAAOoR,EAAS7M,YAAY9E,KAAK0B,EAAQtB,QAAU4E,EAAyBtD,EAAQtB,QAAU,KAAO,GACrG+D,EAAW,GACf,GAAI6R,EAAU,CACV7R,EAASE,aAAe1O,IACpBhB,EAAO,GAAI4K,EAAW6E,eACtBvD,EAAOrF,gBAAgB+D,EAAWuB,aAAcD,EAAOvH,mBAAmBgG,IAAO,GACrF,IAAI2W,EAAUtgB,IAAajD,EAAS,iBAAkB6M,EAAW6E,eAC7DG,EAAkBhF,EAAW6E,cAAe1C,EAAQ8C,UAAYC,EAAqB/C,EAAQgD,WAC7FV,EAAgBmB,EAAiB,WAAYhB,EAASE,aAAavJ,aAAcyE,EAAW6E,cAAgB,KAAMpE,KAAK0B,EAAQtB,SAE/HpN,GADJgR,EAAgBA,EAAcjR,QAAQ,UAAWkjB,IACvBjjB,MAAM,KAChC6H,EAAOqb,qBAAqBvgB,KAAqB3C,EAAME,OAAS,EAChE2H,EAAOiL,MAAQnQ,IAAajD,EAAS6N,EAAKA,KAAO,QAASwV,GACtD9P,EAAcjT,EAAM,IAAM,IAAMA,EAAM,IAAI,EAAMijB,GACpDpb,EAAOkL,MAAQpQ,IAAajD,EAAS6N,EAAKA,KAAO,QAASwV,GACtD9P,EAAcjT,EAAM,IAAI,EAAOijB,GAC9BD,EAAS,IAAOtU,EAAQgE,uBAA0BhE,EAAQ+D,wBAC3DqQ,EAAU7P,EAAcjC,EAAchR,MAAM,KAAK,IAAI,EAAM,IAAI,GAAMqT,iBAI7E,GAAKsL,EAAS7M,YAAY9E,KAAK0B,EAAQtB,UAAcsB,EAAQtB,OAAS,CAIlE,GAHAzL,EAAO+U,EAAc1E,EAAyBtD,EAAQtB,QAAU,MAChEsJ,EAAa8D,QAAS,EACtBkI,EAAgB,OACZhM,EAAa/D,gBAAkBjE,EAAQgE,uBAAyBhE,EAAQ+D,uBAAyBqQ,EAAS,CAEtGpM,EAAa/D,iBACbjE,EAAQgE,sBAAwBhE,EAAQ+D,sBAAwBiE,EAAa/D,gBAEjF+P,EAiCZ,SAA+B/U,EAASwV,EAAWC,GAC/CzV,GAAW,IACX,IAAK,IAAIvC,EAAI,EAAGA,EAAI+X,EAAW/X,IAC3BuC,GAAW,IAEf,GAAIwV,EAAYC,EAEZ,IADA,IAAIC,EAAOD,EAAYD,EACdlZ,EAAI,EAAGA,EAAIoZ,EAAMpZ,IACtB0D,GAAW,IAGnB,OAAOA,EA5CiB2V,CAAsBZ,EAAeI,GAAWpM,EAAa/D,gBACzEjE,EAAQgE,uBALS,EAKgChE,EAAQ+D,uBALxC,GAazB,GANI/D,EAAQwG,uBACRwN,EA0CZ,SAA+B/U,EAASzF,GAGpC,IAFA,IAAI6L,EAAOpG,EAAQ3N,MAAM,KACrBujB,EAAU,GACLC,EAAI,EAAGA,EAAItb,EAAQsb,IACxBD,GAAW,IAEf,OAAOxP,EAAK,GAAMwP,EAAU,IAAMxP,EAAK,GAAMwP,EAhDrBE,CAAsBf,EAAehU,EAAQwG,uBAE7DxG,EAAQkE,cACR8P,EA+CZ,SAAyB/U,GACrB,IAAIoG,EAAOpG,EAAQ3N,MAAM,KACrBujB,EAAUxP,EAAK,GACfrD,EAAK,EAAI6S,EAAQrjB,OAAS,EAG9ByN,EAAU,GACV,IAAK,IAAI6V,GAFTD,GADY7S,GAAa,IAAPA,EAAY,IAAc,IAAPA,EAAW,KAAO,IACtC6S,GAEIrjB,OAAS,EAAGsjB,EAAI,EAAGA,GAAQ,EAC5C7V,EAAU,IAAM4V,EAAQC,EAAI,GAAKD,EAAQC,EAAI,GAAKD,EAAQC,GAAK7V,EAGnE,OADAA,EAAUA,EAAQjJ,MAAM,GACjBqP,EAAK,GAAMpG,EAAU,IAAMoG,EAAK,GAAMpG,EA1DrB+V,CAAgBhB,IAEV,aAAtBhM,EAAanJ,MAAwBmJ,EAAanJ,MAAQ5K,IAAa,CACnEA,KAAoC,aAAtB+T,EAAanJ,OAC3B1F,EAAOkL,MAAQrT,EAASgX,EAAanJ,KAAO,QAASwV,GACrDlb,EAAOiL,MAAQpT,EAASgX,EAAanJ,KAAO,QAASwV,IAEzD,IAAIY,EAAWjB,EACfA,EAAgB7a,EAAOkL,MAAMuC,MAAQqO,EAAW9b,EAAOkL,MAAMwC,MACzD1N,EAAOqb,oBAAsBvgB,OAC7B+f,GAAiB,IAAM7a,EAAOiL,MAAMwC,MAAQqO,EAAW9b,EAAOiL,MAAMyC,MAGlD,YAAtBmB,EAAanJ,MAAuB5K,MACpC+f,GAAiB,WAIrBA,EAAgBhU,EAAQtB,OAAOrN,QAAQ,MAAO,KAKlD,OAHIwB,OAAOjB,KAAK6Q,GAAUjR,OAAS,IAC/BwiB,EAAiB5D,EAAmD4D,EArF5E,SAAuBd,EAAQvV,GAC3B,IAA6B,IAAzBuV,EAAOpgB,QAAQ,KAAa,CAE5B,IAAIxB,EAAQ4hB,EAAO5hB,MAAM,KACzB4hB,EAAU5hB,EAAM,GAAKN,EAAS,mCAAoC2M,GAC9DrM,EAAM,GAAGD,QAAQ,IAAKL,EAAS,qCAAsC2M,SAGzEuV,EAASA,EAAO7hB,QAAQ,IAAKL,EAAS,qCAAsC2M,IAEhF,OAAOuV,EA2EwBgC,CAAclB,EAAevR,IAErDuR,GAkDX/D,EAASM,YAbT,SAAqB7S,EAASE,GAC1B,IAAIuX,EAthCc,MAuhCdnb,EAAShJ,EAAS,iCAAkC4M,GACpDwX,EAAW1X,EAQf,MAPK,MAAOY,KAAK8W,KACbA,EAAWA,EAASpf,MAAM,IAE9Bof,EAAWA,EAASpf,MAAM,EAAG,GAAGkV,cAAgBkK,EAASrU,OAAO,GAC5D/G,IACAmb,EAAWnb,EAAOob,IA9hCJ,OAgiCXrE,EAAeoE,IAmB1BlF,EAAS3L,sBAVT,SAA+BD,EAAOgR,EAAWC,GAC7C,IAAIC,ER9wBDvkB,EQ8wBqCskB,GR9wBZ,GAAIhb,GQ+wBhC,GAAI+a,IAAcE,EACd,IAAK,IAAI5iB,EAAK,EAAG6iB,EAAUnR,EAAO1R,EAAK6iB,EAAQhkB,OAAQmB,IAAM,CACzD,IAAI6b,EAAOgH,EAAQ7iB,GACnB6b,EAAK3H,KAAO2H,EAAK3H,KAAKxV,QAAQgkB,EAAWE,GACzC/G,EAAK5H,MAAQ4H,EAAK5H,MAAMvV,QAAQgkB,EAAWE,KA6BvDtF,EAAStO,cArBT,SAAuBpF,GACnB,IAEIkZ,EAFAC,EAAU,IAAI5Y,KAAKP,EAAKxB,cAAe,EAAG,GAC1CL,EAAMgb,EAAQ/U,SAElBjG,EAAOA,GAAO,EAAIA,EAAMA,EAAM,EAC9B,IAAIib,EAASxa,KAAKC,OAAOmB,EAAKqZ,UAAYF,EAAQE,UACa,KAA1DrZ,EAAK8E,oBAAsBqU,EAAQrU,sBAAgC,OAAY,EACpF,GAAI3G,EAAM,GAEN,IADA+a,EAAUta,KAAKC,OAAOua,EAASjb,EAAM,GAAK,GAAK,GACjC,GAAI,CACd,IACImb,EADQ,IAAI/Y,KAAKnI,KAAKoG,cAAgB,EAAG,EAAG,GAC/B4F,SAEjB8U,GADAI,EAAOA,GAAQ,EAAIA,EAAOA,EAAO,GAChB,EAAI,EAAI,SAI7BJ,EAAUta,KAAKC,OAAOua,EAASjb,EAAM,GAAK,GAE9C,OAAO+a,GAjmCf,CAomCGxF,IAAaA,EAAW,KCloC3B,IAAI6F,EAAc,6BAedC,GAAsB,WAQtB,SAASA,EAAK/V,EAASnB,EAAMmX,EAAOC,GAKhCthB,KAAK+c,MAAO,EAMZ/c,KAAKuhB,WAAY,EACjBvhB,KAAKqL,QAAU,GACQ,kBAAZA,GACPrL,KAAKwhB,IAAMnW,EACXrL,KAAKkK,KAAOA,EAAOA,EAAKqM,cArClB,MAsCNvW,KAAK+c,OAAQ3f,EAAkBikB,IAASA,GAEhB,kBAAZhW,IACZrL,KAAKqL,QAAUA,EACf1N,EAAMqC,KAAMA,KAAKqL,UAErBrL,KAAKkK,KAAOlK,KAAKkK,KAAOlK,KAAKkK,KAAKqM,cA5CxB,MA6CVvW,KAAKshB,iBAAoCtlB,IAArBgE,KAAKshB,YAA6BthB,KAAKshB,YAAcA,EA8G7E,OAvGAF,EAAKllB,UAAUulB,KAAO,SAAU5H,GAC5B,IAAI9Z,EAAQC,KACZA,KAAK6Z,KAAOzc,EAAkByc,GAAQ7Z,KAAK6Z,KAAOA,EAClD,IAAI6H,EAAY,CACZC,QAAQ,EACRC,YAAa,MAqCjB,OAnCc,IAAIC,SAAQ,SAAUC,EAASC,GACzChiB,EAAM6hB,YAAc,IAAII,eACxBjiB,EAAM6hB,YAAYK,mBAAqB,WAAcliB,EAAMmiB,YAAYJ,EAASC,IAC3E3kB,EAAkB2C,EAAMoiB,UACzBpiB,EAAM6hB,YAAYQ,OAASriB,EAAMoiB,QAEhC/kB,EAAkB2C,EAAMsiB,cACzBtiB,EAAM6hB,YAAYU,WAAaviB,EAAMsiB,YAGpCjlB,EAAkB2C,EAAMwiB,WACzBxiB,EAAM6hB,YAAYY,QAAUziB,EAAMwiB,SAGjCnlB,EAAkB2C,EAAM0iB,WACzB1iB,EAAM6hB,YAAYc,QAAU3iB,EAAM0iB,SAIjCrlB,EAAkB2C,EAAM4iB,oBACzB5iB,EAAM6hB,YAAYgB,OAAON,WAAaviB,EAAM4iB,kBAEhD5iB,EAAM6hB,YAAYjgB,KAAK5B,EAAMmK,KAAMnK,EAAMyhB,IAAKzhB,EAAMgd,MAE/C3f,EAAkB2C,EAAM8Z,OAA+B,OAAtB9Z,EAAMuhB,aACxCvhB,EAAM6hB,YAAYiB,iBAAiB,eAAgB9iB,EAAMuhB,aAAe,mCAExEvhB,EAAM+iB,aACNpB,EAAUE,YAAc7hB,EAAM6hB,YAC9B7hB,EAAM+iB,WAAWpB,IAEhBA,EAAUC,QACX5hB,EAAM6hB,YAAYH,KAAMrkB,EAAkB2C,EAAM8Z,MAAqB,KAAb9Z,EAAM8Z,UAK1EuH,EAAKllB,UAAUgd,eAAiB,SAAUW,GAItC,OAHI7Z,KAAK+iB,WACL/iB,KAAK+iB,UAAUlJ,EAAM7Z,MAElB6Z,GAEXuH,EAAKllB,UAAU8mB,eAAiB,SAAUC,GAItC,OAHIjjB,KAAKkjB,WACLljB,KAAKkjB,UAAUljB,KAAK4hB,aAEjBqB,GAEX7B,EAAKllB,UAAUgmB,YAAc,SAAUJ,EAASC,GAC5C,IAAIlI,EAAO7Z,KAAK4hB,YAAYuB,aAC5B,GAAInjB,KAAKojB,UAA4C,SAAhCpjB,KAAKojB,SAAS5M,cAC/B,GAAa,KAATqD,EACAA,OAAO7d,OAGP,IACI6d,EAAOE,KAAKC,MAAMH,GAEtB,MAAOwJ,IAKqB,IAAhCrjB,KAAK4hB,YAAY0B,aAEZtjB,KAAK4hB,YAAY2B,QAAU,KAAOvjB,KAAK4hB,YAAY2B,QAAU,KAAoC,MAA5BvjB,KAAK4hB,YAAY2B,OACvFzB,EAAQ9hB,KAAKkZ,eAAeW,IAGxB7Z,KAAKuhB,UACLQ,EAAO,IAAInhB,MAAMZ,KAAKgjB,eAAehjB,KAAK4hB,YAAY4B,cAGtD1B,MAUhBV,EAAKllB,UAAUunB,kBAAoB,SAAUzmB,GACzC,IAAI0mB,EACAC,EACJD,EAAkB,GAElB,IADA,IAAIE,EAAUzC,EAAY0C,KAAK7jB,KAAK4hB,YAAYkC,yBACzCF,GACHF,EAAgBE,EAAQ,GAAGpN,eAAiBoN,EAAQ,GACpDA,EAAUzC,EAAY0C,KAAK7jB,KAAK4hB,YAAYkC,yBAGhD,OAAO1mB,EADPumB,EAASD,EAAgB1mB,EAAIwZ,gBACM,KAAOmN,GAEvCvC,EA7Ie,GCftB2C,GAAc,wEACdC,GAAU,gBACVC,GAAY,eACZC,GAAW,4BACXC,GAAY,yEACZC,GAAe,WACfC,GAAe,8BACfC,GAAe,0BACfC,GAAe,CACfC,MAAO,0CACPC,KAAM,qCACNC,OAAQ,+BACRC,WAAY,4BACZC,OAAQ,yBACRC,OAAQ,yBACRC,KAAM,2BACNC,QAAS,kCAGS,qBAAXrjB,SACPA,OAAOsjB,eAAiBtjB,OAAOsjB,gBAAkB,IAMrD,IAAIC,GAAyB,WACzB,SAASA,KAwST,OAtSAA,EAAQC,qBAAuB,WAI3B,IAHA,IAAIC,EAAc,CAAEpc,QAAS,IAEzBqc,EAAa,GACRpnB,EAAK,EAAGC,EAFNC,OAAOjB,KAAKsnB,IAESvmB,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAIhB,EAAMiB,EAAOD,GAEjB,GADAonB,EAAaH,EAAQI,UAAU5iB,MAAM8hB,GAAavnB,IAClC,CAKZ,GAJAmoB,EAAY/L,KAAwC,QAAhCgM,EAAW,GAAG5O,cAA0B,QAAU4O,EAAW,GAAG5O,cACpF2O,EAAY/L,KAAwC,UAAhCgM,EAAW,GAAG5O,cAA4B,SAAW2O,EAAY/L,KACrF+L,EAAYG,QAAUF,EAAW,GACjCD,EAAYpc,QAAQqQ,KAAO+L,EAAYpc,QAAQwc,SAAWC,UAAUD,SAC9DN,EAAQI,UAAU5iB,MAAMwhB,IAAY,CACtCkB,EAAY/L,KAAO,OACnB,MAEJ,IAAIkM,EAAUL,EAAQI,UAAU5iB,MAAM6hB,IACb,WAArBa,EAAY/L,MAAqBkM,IACjCH,EAAYG,QAAUA,EAAQ,IAElC,OAGR,OAAOH,GAOXF,EAAQQ,SAAW,SAAUC,GAEzB,IAAIC,EAAS,CACTzoB,MAAO,CACH0oB,UAAW,cAAeC,QAAS,aAAcC,SAAU,aAE/DC,KAAM,CACFH,UAAW,cAAeC,QAAS,YAAaC,SAAU,aAE9DpO,IAAK,CACDkO,UAAW,YAAaC,QAAS,WAAYC,SAAU,WAE3DnE,OAAQ,CACJiE,UAAW,gBAAiBC,QAAS,cAAeC,SAAU,eAGtE,OAAQb,EAAQW,YAAcX,EAAQe,UAAYL,EAAOD,GAAOE,UAC3DX,EAAQY,QAAUF,EAAOD,GAAOG,SAAYZ,EAAQa,SAA0C,GAA/B,IAAMH,EAAOD,GAAOI,UAC9EH,EAAOD,GAAOI,UAM5Bb,EAAQgB,mBAAqB,WACzB,OAAOhB,EAAQQ,SAAS,UAM5BR,EAAQiB,iBAAmB,WACvB,OAAOjB,EAAQQ,SAAS,QAM5BR,EAAQkB,kBAAoB,WACxB,OAAOlB,EAAQQ,SAAS,SAM5BR,EAAQmB,oBAAsB,WAC1B,OAAOnB,EAAQQ,SAAS,WAQ5BR,EAAQ5oB,SAAW,SAAUW,EAAKqpB,GAC9B,IAAIrB,EAAiBtjB,OAAOsjB,eAC5B,MAAI,qBAAuBA,EAAehoB,GAC/BgoB,EAAehoB,GAAOqpB,EAAK1c,KAAKsb,EAAQI,WAE5CL,EAAehoB,IAE1BkB,OAAOooB,eAAerB,EAAS,YAAa,CACxCsB,IAAK,WACD,OAAOtB,EAAQuB,IAOnBC,IAAK,SAAUD,GACXvB,EAAQuB,GAAKA,EACb9kB,OAAOsjB,eAAiB,IAE5B0B,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,OAAQ,CAMnCsB,IAAK,WACD,OAAIzpB,EAAY4E,OAAOsjB,eAAe4B,MAC3BllB,OAAOsjB,eAAe4B,KAAO3B,EAAQC,uBAEzCxjB,OAAOsjB,eAAe4B,MAEjCF,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,OAAQ,CAInCsB,IAAK,WACD,OAAOtB,EAAQ5oB,SAAS,OAAQ2nB,KAEpC0C,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,UAAW,CAItCsB,IAAK,WACD,OAAIzpB,EAAY4E,OAAOsjB,eAAea,SAC1BnkB,OAAOsjB,eAAea,QACzB,iBAAkBnkB,OAAO8jB,WACrB9jB,QACGA,OAAO8jB,WACN9jB,OAAO8jB,UAAUqB,eAAiB,GAAQ,iBAAkBnlB,OAEtEA,OAAOsjB,eAAea,SAEjCa,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,YAAa,CAIxCsB,IAAK,WACD,OAAIzpB,EAAY4E,OAAOsjB,eAAeY,WAC3BlkB,OAAOsjB,eAAeY,UAAa,mBAAoBlkB,OAAO8jB,UAElE9jB,OAAOsjB,eAAeY,WAEjCc,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,cAAe,CAI1CsB,IAAK,WACD,OAAIzpB,EAAY4E,OAAOsjB,eAAe8B,aAC3BplB,OAAOsjB,eAAe8B,YAAe,qBAAsBplB,OAAO8jB,UAEtE9jB,OAAOsjB,eAAe8B,aAEjCJ,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,WAAY,CAIvCsB,IAAK,WACD,OAAOtB,EAAQ5oB,SAAS,WAAY0nB,KAExC2C,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,QAAS,CAIpCsB,IAAK,WACD,OAAOtB,EAAQ5oB,SAAS,QAAS6nB,KAErCwC,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,SAAU,CAIrCsB,IAAK,WACD,OAAOtB,EAAQ5oB,SAAS,SAAU8nB,KAEtCuC,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,YAAa,CAIxCsB,IAAK,WACD,OAAOtB,EAAQ5oB,SAAS,YAAa+nB,KAEzCsC,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,YAAa,CAIxCsB,IAAK,WACD,OAAIzpB,EAAY4E,OAAOsjB,eAAe+B,YAClCrlB,OAAOsjB,eAAe+B,YAAcjqB,EAAY4E,OAAOslB,UAAYlqB,EAAY4E,OAAOulB,WAC/EnqB,EAAY4E,OAAOwlB,WAA8B,WAAjBxlB,OAAOylB,OACvCzlB,OAAOsjB,eAAe+B,WAE1BrlB,OAAOsjB,eAAe+B,WAEjCL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,YAAa,CAIxCsB,IAAK,WACD,OAAOtB,EAAQ5oB,SAAS,YAAagoB,KAEzCqC,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,kBAAmB,CAI9CsB,IAAK,WACD,OAAIzpB,EAAY4E,OAAOsjB,eAAeoC,iBAC3B1lB,OAAOsjB,eAAeoC,gBAAkBnC,EAAQgB,qBAEpDvkB,OAAOsjB,eAAeoC,iBAEjCV,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,iBAAkB,CAI7CsB,IAAK,WACD,OAAIzpB,EAAY4E,OAAOsjB,eAAeqC,gBAC3B3lB,OAAOsjB,eAAeqC,eAAiBpC,EAAQkB,oBAEnDzkB,OAAOsjB,eAAeqC,gBAEjCX,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,gBAAiB,CAI5CsB,IAAK,WACD,OAAIzpB,EAAY4E,OAAOsjB,eAAesC,eAC3B5lB,OAAOsjB,eAAesC,cAAgBrC,EAAQiB,mBAElDxkB,OAAOsjB,eAAesC,eAEjCZ,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAerB,EAAS,mBAAoB,CAI/CsB,IAAK,WACD,OAAIzpB,EAAY4E,OAAOsjB,eAAeuC,kBAC3B7lB,OAAOsjB,eAAeuC,iBAAmBtC,EAAQmB,sBAErD1kB,OAAOsjB,eAAeuC,kBAEjCb,YAAY,EACZC,cAAc,IAGlB1B,EAAQuB,GAA0B,qBAAdhB,UAA4BA,UAAUH,UAAY,GAC/DJ,EAzSkB,GCLzBuC,GAA8B,WAC9B,SAASA,KAqHT,OAlHAA,EAAaC,kBAAoB,SAAUzmB,GACvC,OAAIA,EACI,gBAAiBA,EACVA,EAAQ0mB,YAAY/B,QAG3B3kB,EAAQ0mB,YAAc,GACf1mB,EAAQ0mB,YAAY/B,OAAS,IAIjC,IAYf6B,EAAaG,IAAM,SAAU3mB,EAAS4mB,EAAWC,EAAUC,EAAQC,GAC/D,IACIC,EADAC,EAAYT,EAAaC,kBAAkBzmB,GAG3CgnB,EADAD,EACmBpoB,EAASkoB,EAAUE,GAGnBF,EAEnBC,IACAE,EAAmBA,EAAiB7rB,KAAK2rB,IAG7C,IADA,IAAIpC,EAAQkC,EAAUjrB,MAAM,KACnBC,EAAI,EAAGA,EAAI8oB,EAAM7oB,OAAQD,IAC9BqrB,EAAUrP,KAAK,CACXQ,KAAMsM,EAAM9oB,GACZirB,SAAUA,EACVloB,SAAUqoB,IAEV/C,GAAQiD,KACRlnB,EAAQmnB,iBAAiBzC,EAAM9oB,GAAIorB,GAGnChnB,EAAQmnB,iBAAiBzC,EAAM9oB,GAAIorB,EAAkB,CAAEI,SAAS,IAGxE,OAAOJ,GASXR,EAAaa,OAAS,SAAUrnB,EAAS4mB,EAAWC,GAmBhD,IAlBA,IAAII,EAAYT,EAAaC,kBAAkBzmB,GAC3C0kB,EAAQkC,EAAUjrB,MAAM,KACxBkC,EAAU,SAAUsI,GACpB,IACI6gB,EADAxO,GAAS,EAETyO,GAAkC,IAArBA,EAAUprB,QACvBorB,EAAUK,MAAK,SAAUnI,EAAGvjB,GACxB,OAAOujB,EAAE/G,OAASsM,EAAMve,IAAMgZ,EAAE0H,WAAaA,IACxCrO,EAAQ5c,EAAGorB,EAAmB7H,EAAExgB,UAAU,OAGxC,IAAX6Z,GACAyO,EAAUnP,OAAOU,EAAO,GAExBwO,GACAhnB,EAAQunB,oBAAoB7C,EAAMve,GAAI6gB,IAGrC7gB,EAAI,EAAGA,EAAIue,EAAM7oB,OAAQsK,IAC9BtI,EAAQsI,IAQhBqgB,EAAagB,YAAc,SAAUxnB,GACjC,IAAIinB,EACAQ,EAEJA,EAAWnqB,EAAO,GAAImqB,EADtBR,EAAYT,EAAaC,kBAAkBzmB,IAE3C,IAAK,IAAIpE,EAAI,EAAGA,EAAI6rB,EAAS5rB,OAAQD,IACjCoE,EAAQunB,oBAAoBE,EAAS7rB,GAAGwc,KAAMqP,EAAS7rB,GAAG+C,UAC1DsoB,EAAUS,SAWlBlB,EAAamB,QAAU,SAAU3nB,EAAS4mB,EAAWgB,GAGjD,IAFA,IAES5qB,EAAK,EAAG6qB,EAFDrB,EAAaC,kBAAkBzmB,GAELhD,EAAK6qB,EAAYhsB,OAAQmB,IAAM,CACrE,IAAI8qB,EAAUD,EAAY7qB,GACtB8qB,EAAQ1P,OAASwO,GACjBkB,EAAQnpB,SAAS2B,KAAKtB,KAAM4oB,KAIjCpB,EAtHuB,GCnB9BuB,GAAQ,IAAIllB,OAAO,kBAAmB,KACtCmlB,GAAS,IAAInlB,OAAO,QACpBolB,GAAU,IAAIplB,OAAO,WACrBqlB,GAAc,IAAIrlB,OAAO,gBACzBslB,GAAY,IAAItlB,OAAO,QACvBulB,GAAW,IAAIvlB,OAAO,YACtBwlB,GAAY,IAAIxlB,OAAO,cACvBylB,GAAgB,IAAIzlB,OAAO,aAAc,IACzC0lB,GAAa,IAAI1lB,OAAO,WAAY,KACpC2lB,GAAO,IAAI3lB,OAAO,iBAAkB,KACpC4lB,GAAiB,IAAI5lB,OAAO,UAAW,KACvC6lB,GAAS,IAAI7lB,OAAO,oBAAqB,KACzC8lB,GAAM,IAAI9lB,OAAO,eAAgB,KAEjC+lB,GAAU,UACVC,GAAe,OACfC,GAAe,SACfC,GAAW,IAAIlmB,OAAO,oBAAqB,KAC3CmmB,GAAa,cAkCV,SAASC,GAAQC,EAAUC,GAC9B,IACIC,EAOR,SAAiBzmB,EAAKrH,EAAW6tB,GAC7B,IAAIE,EAAW,EAIXC,EAAY,GACZC,EAAU5mB,EAAIlB,MAAM,0BACpB+nB,EAAc,GACdD,GACAA,EAAQvrB,SAAQ,SAAUxC,GACtBguB,EAAchuB,EAAME,QAAQ,SAAU,KACtCiH,EAAMA,EAAIjH,QAAQF,EAAOguB,MAGjC,OAAO7mB,EAAIjH,QAAQqsB,GAAO,IAAIrsB,QAAQ+sB,GAAgB,QAAU/sB,QAAQitB,IAAK,SAAUlnB,EAAOgoB,EAAKC,EAAQC,GACvG,IACIrf,EAAUmf,EAAIhoB,MAAM6mB,IAExB,GAAIhe,EAAS,CACT,IAAIsf,EAAQtf,EAAQ,GACpB,GAAI4d,GAAYvf,KAAK8gB,GAEjBA,EAAM,OAASA,EAAI/tB,QAAQ4O,EAAQ,GAAIsf,EAAMluB,QAAQ8sB,IAAM,SAAU7lB,GAEjE,OAAOknB,GADPlnB,EAAMA,EAAImnB,QACiB9B,GAAOrf,KAAKhG,KAAsC,IAA5B2mB,EAAUnsB,QAAQwF,GAAcrH,EAAWguB,OAC1F,0BAEL,GAAIrB,GAAQtf,KAAK8gB,GAElBA,EAAM,MAAQA,EAAI/tB,QAAQ4O,EAAQ,GAAIsf,EAAMluB,QAAQgtB,IAAQ,SAAUqB,GAClE,OAAOC,GAAwBD,EAAMzuB,EAAWguB,GAAW,OACzD,0BAEL,GAAIlB,GAASzf,KAAK8gB,GAAM,CAEzB,IAAIQ,EAAU3f,EAAQ,GAAG3O,MAAM,QAE/B8tB,EAAM,MAAQA,EAAI/tB,QAAQ4O,EAAQ,IAAI,SAAU4f,GAK5C,OAJAZ,EAAU1R,KAAKqS,EAAQ,IACvBX,EAAU1R,KAAKqS,EAAQ,GAAK,SAGrB,SAFPZ,GAAsB,GAEM,QAAUA,EAAW,MAAQQ,GAAaI,EAAQ,IAAI,EAAM3uB,EAAWguB,GAAa,aAAeD,EAAW,QALxI,YAMkBY,EAAQ,GAAK,KAAOJ,GAAaI,EAAQ,IAAI,EAAM3uB,EAAWguB,GAChF,KAAOD,EAAW,aAAeY,EAAQ,GAAK,UAAYZ,EAAW,yBAE1E,CAED,IAAIc,EAAQV,EAAI9tB,MAAM,KAClByuB,EAAcjB,GAAUA,EAAO3qB,eAAe2rB,EAAM,IAAM,QAAU,SACxEC,EAAc,KAAKzhB,KAAKwhB,EAAM,IAAM,GAAKC,EACzC,IAAIC,EAAU/f,EAAQ,GAAG3O,MAAM,KACL,IAAtB2O,EAAQ,GAAGzO,QAAkB,OAAQ8M,KAAK0hB,EAAQ,KAAS,UAAW1hB,KAAK0hB,EAAQ,MACnF/f,EAAQ,GAAqB,WAAf8f,EAA0B9uB,EAAY,IAAMgP,EAAQ,GAAKA,EAAQ,IAInF,GAAI0e,GAAWrgB,KAAK8gB,IADP,SACsB9gB,KAAK8gB,IAFxB,aAE0C9gB,KAAK8gB,GAAM,CAC9C,kBACF9gB,KAAK8gB,KAElBA,EAAM,OAAwB,WAAfW,EAA0B,GAAKA,GAAcX,EAAI/tB,QAAQ4O,EAAQ,GAAIsf,EAAMluB,QAAQqtB,IAAU,SAAUgB,GAClH,OAAOC,GAAwBD,EAAMzuB,EAAWguB,OAC9C,YAIVG,EAAM,QAAyB,WAAfW,EAA0B,GAAKA,GAC3CX,EAAI/tB,QAAQkuB,EAAOC,GAAavf,EAAQ,GAAG5O,QAAQ,iBAAkB,IAAMJ,EAAY,KAAKI,QAAQ,qBAAsB,WAA4B,WAAf0uB,EAAyC9uB,EAAWguB,IAC3L,WAIPnB,GAAUxf,KAAK8gB,GAEpBA,EAAM,MAAQA,EAAI/tB,QAAQysB,GAAW,6BAE9BsB,EAAIhoB,MAAM4mB,IAEjBoB,EAAMA,EAAI/tB,QAAQ2sB,GAAW,4BAhEd,aAkEG1f,KAAK8gB,IAEnBA,EAAIhoB,MAAMonB,MACVY,EAAMa,GAAab,IAEvBA,EAAM,KAAOc,GAAwBd,GAAkC,IAA5BH,EAAUnsB,QAAQssB,GAAcnuB,EAAWguB,GAAa,QAM/FG,EAFAA,EAAIhoB,MAAMonB,IAEJ,KAAO0B,GADbd,EAAMa,GAAab,IACoD,IAA5BH,EAAUnsB,QAAQssB,GAAcnuB,EAAWguB,GAAa,OAI7F,KAAOO,GAAaJ,EAAI/tB,QAAQ,OAAQ,IAAMJ,EAAY,MAAmC,IAA5BguB,EAAUnsB,QAAQssB,GAAcnuB,EAAWguB,GAAa,KAGvI,OAAOG,KA1GSe,CAAQtB,EADd,OACiCC,GAI/C,OADS,IAAIluB,SAJC,OAED,YAAemuB,EAAgB,kBAGlCjuB,KAAKguB,GAyGnB,SAASU,GAAalnB,EAAK8nB,EAAOnvB,EAAWovB,EAAYC,GAErD,OAAIA,GAAyB,KAARhoB,EACVA,EAEF8nB,IAAWlC,GAAW5f,KAAKhG,KAAoD,IAA3C+nB,EAAWvtB,QAAQwF,EAAIhH,MAAM,KAAK,IAAcL,EAAY,IAAMqH,EAAMA,EAWzH,SAAS4nB,GAAwB5nB,EAAK8nB,EAAOnvB,EAAWovB,GACpD,OAASD,IAAWlC,GAAW5f,KAAKhG,KAAoD,IAA3C+nB,EAAWvtB,QAAQwF,EAAIhH,MAAM,KAAK,IAAcL,EAAY,KAAOqH,EAAMA,EAG1H,SAAS2nB,GAAaM,GASlB,OALIA,EADAA,EAAQnpB,MAAMqnB,IACJ8B,EAGAA,EAAQlvB,QAAQmtB,GALjB,QASjB,SAASmB,GAAwBrnB,EAAKkoB,EAAc5uB,EAAM0uB,GACtDhoB,EAAMA,EAAImnB,OAEV,GADiB,cACDnhB,KAAKhG,GAcjB,OAAOA,EAbP,IAAImoB,EAAS,QAKb,MAJgB,aACFniB,KAAKhG,KACfA,EAAM4nB,GAAwB5nB,GAA6B,IAAvB1G,EAAKkB,QAAQwF,GAAckoB,EAAc5uB,GAAQ,MAErF2sB,GAAQjgB,KAAKhG,GAjCzB,SAAyBA,EAAK8nB,EAAOnvB,EAAWovB,GAE5C,OAASD,GAAWlC,GAAW5f,KAAKhG,KACW,IAA3C+nB,EAAWvtB,QAAQwF,EAAIhH,MAAM,KAAK,KAFtB,UAEgDgN,KAAKhG,GAAiCA,EAAxBrH,EAAY,IAAMqH,EA+BjFooB,CAAgBpoB,GAAOmoB,EAAOniB,KAAKhG,KAAiC,IAAvB1G,EAAKkB,QAAQwF,GAAckoB,EAAc5uB,GAGtF4tB,GAAalnB,GAAOmoB,EAAOniB,KAAKhG,KAAiC,IAAvB1G,EAAKkB,QAAQwF,GAAckoB,EAAc5uB,EAAM0uB,GC5M5G,IAAIK,GAAU,sBACVC,GAAU,8BACHC,GAAkB,GACtB,SAASC,KACZ,MAAO,IAAM3lB,KAAK4lB,SAASlgB,SAAS,IAAIE,OAAO,EAAG,GAS/C,SAAS6d,GAAQoC,EAAgBlC,GACpC,IAAImC,EAAWC,GAAUtC,QAAQoC,EAAgBlC,GAEjD,OAAO,SAAUtQ,EAAM2S,EAAWC,EAAUC,EAAYC,EAAkBnT,EAAOxY,GAC7E,IAAIrC,EAAS2tB,EAASzS,EAAM2S,EAAWC,EAAUzrB,GAGjD,GAAI1B,MAAeqtB,EAAkB,CACjC,IACIC,EAAWF,EADAP,KAKf,GAHKD,GAAgBQ,KACjBR,GAAgBQ,GAAc,IAE7BtvB,EAAkBoc,GAanBK,EAAI,iBAAqB+S,EACzBV,GAAgBQ,GAAY9T,KAAKiB,QAZjC,IADA,IACS7b,EAAK,EAAGC,EADNC,OAAOjB,KAAKivB,GAAgBQ,GAAYlT,IACnBxb,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAIhB,EAAMiB,EAAOD,GAVN,qBAWPhB,GAA4B6c,EAAK7c,KACjCkvB,GAAgBQ,GAAYlT,GAAOxc,GAAO6c,EAAK7c,IAZxC,qBAcPA,IACA4vB,EAAWV,GAAgBQ,GAAYlT,GAAOxc,IAS1D,MAAoB,gBAAbyvB,EAA6B,CAACtrB,GAAc,KAAM,CAAEqX,GAAIoU,EAAUC,UAAW,uBAEhF,CAAC1rB,GAAc,MAAO,CAAEqX,GAAIoU,EAAUC,UAAW,uBAEzD,MAAsB,kBAAXluB,EACHstB,GAAQtiB,KAAKhL,GACHwC,GAAc,MAAO,CAAEc,UAAWtD,IACjCmuB,WAGD3rB,GAAe6qB,GAAQriB,KAAKhL,GAAU,QAAU,MAAQ,CAAEsD,UAAWtD,IACpEmuB,WAIRnuB,GAIZ,SAASouB,GAAqBL,EAAYM,EAAcC,EAAMC,EAASC,GAE1E,GAAI7tB,IAAY,CAEZoC,OAAM,SAAY0rB,eAAeJ,EAAcd,GAAgBQ,GAAaA,EAAYO,EAAME,IAC9E,IAAZD,IACAhB,GAAgBQ,GAAc,KAInC,SAASW,GAAoBX,EAAYM,EAAcxT,GAC1D,IAAI8T,EAAc9sB,SAAS+sB,eAAeb,GAC1C,GAAIY,EAGA,IADA,IAAIE,EAAiBF,EAAYG,uBAAuB,yBAC/C7wB,EAAI,EAAGA,EAAI4wB,EAAe3wB,OAAQD,IAAK,CAC5C,IAAI8wB,EAAS,IAKTA,EAJCtwB,EAAkBoc,GAIVgU,EAAe5wB,GAAG+wB,aAAa,mBAH/BH,EAAehU,GAAOmU,aAAa,mBAKhD,IAAIC,EAAcptB,SAAS+sB,eAAeG,GAC1C,GAAIE,EAEA,IADA,IAAIjiB,EAAWiiB,EAAYd,WAAWjwB,OAC7BsK,EAAI,EAAGA,EAAIwE,EAAUxE,IACrB/J,EAAkBoc,GAKnBgU,EAAe5wB,GAAGgF,YAAYgsB,EAAYd,WAAW,KAJrDU,EAAehU,GAAO5X,YAAYgsB,EAAYd,WAAW,IACzDlwB,EAAI4wB,EAAe3wB,SAepC,SAASgxB,GAAkBC,GAC9BvB,GAAUtC,QAAU6D,EAAS7D,QAO1B,SAAS8D,KACZ,OAAOxB,GAAUtC,QAGrB,ICzFW+D,GDkGPzB,GAAY,CAAEtC,SAAS,IATC,WACxB,SAASgE,KAMT,OAJAA,EAAO/xB,UAAU+tB,QAAU,SAAUoC,EAAgBlC,GAEjD,YADe,IAAXA,IAAqBA,EAAS,IAC3B+D,GAAO7B,EAAgBlC,IAE3B8D,EAPiB,KASYhE,SCnIpCkE,GAAc,mCACdC,GAAqB,kCACrBC,GAAkB,UAClBC,GAAe,CACf,IAAK,YACL,IAAK,MAGLC,GAAW,CAAE1B,UAAW,uBAAwBrU,GAAI,gBAAiBgW,QAAS,WAC9EC,GAAgB,CAAC,OAAQ,OAAQ,WAAY,KAAM,MAAO,QAAS,KAAM,MAAO,QAChF,OAAQ,OAAQ,QAAS,QAAS,UAAW,SAAU,SAAU,QAAS,OAC1EC,GAAgB,CAAC,IAAK,UAAW,UAAW,SAAU,QAAS,QAAS,aACxE,SAAU,SAAU,SAAU,KAAM,MAAO,MAAO,MAAO,KAAM,KAAM,WAAY,aAAc,SAC/F,SAAU,OAAQ,WAAY,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,SAAU,SAAU,KAAM,SAAU,MACtG,UAAW,KAAM,MAAO,OAAQ,WAAY,WAAY,SAAU,KAAM,SAAU,IAAK,MAAO,UAC9F,SAAU,QAAS,QAAS,KAAM,QAAS,KAAM,QAAS,KAAM,KAAM,SACtEC,GAAgB,CAAC,OAAQ,UAAW,SAAU,IAAK,WAAY,MAAO,MAAO,KAAM,SACnF,OAAQ,OAAQ,MAAO,MAAO,KAAM,OAAQ,IAAK,SAAU,MAAO,QAAS,MAAO,MAAO,QAAS,MAClG,SAAU,IAAK,IAAK,OAAQ,SAAU,SAAU,QAAS,OAAQ,SAAU,SAAU,MAAO,MAAO,WACnG,KAAM,IAAK,OACXC,GAAsB,CAAC,WAAY,KAAM,KAAM,KAAM,UAAW,IAAK,KAAM,QAAS,KACpF,QAAS,MACTC,GAAY,CAAC,UAAW,UAAW,UAAW,QAAS,WAAY,QAAS,WAC5E,SAAU,WAAY,UAAW,SAAU,WAAY,YACvDC,GAAa,CAAC,SAAU,SACxBC,GAAa,CAAE,SAAY,YAC3BC,GAAa,iHACbC,GAAW,6BACXC,GAAiB,sGAMrB,SAAWlB,GAoCP,SAASmB,EAAaC,EAAW7uB,GACzBA,GAAU6uB,GACVA,EAAUpwB,SAAQ,SAAUsB,GAOxB,OANIhD,EAASgD,KACLA,EAAMC,QACN8uB,EAAO/uB,GAEXA,EAAMC,OAASA,GAEZD,KA4BnB,SAAS+uB,EAAOruB,GACZ,IAAIT,EAASS,EAAQT,OACrB,GAAIA,EAAQ,CACR,IAAIiZ,EAAQjZ,EAAO+uB,SAASnxB,QAAQ6C,IACrB,IAAXwY,GACAjZ,EAAO+uB,SAASxW,OAAOU,GAG/B,OAAOjZ,EAgFX,SAASgvB,EAAgBC,EAAUnqB,GAC/B,IAAI5C,EAAQ+sB,EAAS/sB,MAAM4rB,IACvB9xB,EAAM,GACV,GAAIkG,EAAO,CACP,IAAIgtB,EAAYnB,GAAa7rB,EAAM,IACnC,GAAkB,cAAdgtB,EAA2B,CAC3B,IAAIjrB,EAASa,EAAOqqB,QAAO,SAAUnzB,GAAO,OAAOA,EAAIiD,eAAe,gBAAiB,GACnFmwB,GAAU,EACTnrB,IACDmrB,GAAU,EACVnrB,EAAS,IAEb,IAAIorB,EAAaprB,EAAOirB,IAAc,GACtCjrB,EAAOirB,GAAaG,EAzMb,uBAyM2ClzB,QAAQ,UAAW8yB,EAAS9yB,QAAQ,IAAK,KACvFizB,GACAtqB,EAAOuT,KAAKpU,QAIhBjI,EAAIkzB,GAAaD,EAAS9yB,QAAQ+F,EAAM,GAAI,IAC5C4C,EAAOuT,KAAKrc,QAIhB8I,EAAOuT,KAAK,CAAE4V,QAASgB,IAI/B,SAASK,EAAcC,EAAKzqB,EAAQ0qB,EAAWC,GAC3C,GAAIF,EAAIR,SAAU,CAEd,IAAIW,EAASH,EAAIR,SAASI,QAAO,SAAUpvB,GACvC,GAAuB,kBAAXA,EAAqB,CAE7B,IADA,IAAI4vB,GAAU,EACLlyB,EAAK,EAAGmyB,EAAW9qB,EAAQrH,EAAKmyB,EAAStzB,OAAQmB,IAAM,CAC5D,IAAI0F,EAAMysB,EAASnyB,GACfhB,EAAMkB,OAAOjB,KAAKyG,GAAK,GACvB0sB,EAAW1sB,EAAI1G,GACfqzB,EAAch0B,EAASkyB,GAASvxB,GAAMsD,GAC1C,GAAY,cAARtD,GACA,IAAM,IAAI6G,OAAO,IAAMusB,EAAW,OAAOzmB,KAAK0mB,GAAe,CACzDH,GAAU,EACV,YAGH,GAAIG,IAAgBD,EAAU,CAC/BF,GAAU,EACV,OAGR,OAAOA,EAGP,OAAO,KAUf,OAPKF,GAAqBC,EAAOpzB,SAAUkzB,GACvCD,EAAIR,SAAStwB,SAAQ,SAAUsB,GACvBhD,EAASgD,KACT2vB,EAASA,EAAOK,OAAOT,EAAcvvB,EAAO+E,EAAQ0qB,QAIzDE,EAGP,MAAO,GAIf,SAASM,EAAkBC,GAMvB,IALA,IACIC,EADAC,EAAU,GAEVC,EAAW,GAEXC,EAAY,GACTJ,GAAY,CACfC,GAAS,EACT,IAAII,EAAUC,EAAaH,GAC3B,GAAKE,GAAYE,EAASjC,GAAY+B,GA4BlCL,EAAaA,EAAW9zB,QAAQ,IAAImH,OAAO,iBAAoBitB,EAAaF,GAAa,WAAW,SAAUI,EAAK1f,GAG/G,OADA2f,EADA3f,EAAOA,EAAK5U,QAAQ,8CAA+C,SAE5D,MAEXw0B,EAAc,GAAIJ,EAAaH,QAjCa,CAC5C,GAAiC,IAA7BH,EAAWryB,QAAQ,OACfsE,EAAQ+tB,EAAW/tB,MAAMwsB,OAEzBuB,EAAaA,EAAWrkB,UAAU1J,EAAM,GAAG5F,QAE3C4F,EAAM,GAAG/F,QAAQuyB,GAAUiC,IAE/BT,GAAS,OAER,GAAgC,IAA5BD,EAAWryB,QAAQ,KAAY,CACpC,IAAIsE,KAAQ+tB,EAAW/tB,MAAMusB,OAEzBwB,EAAaA,EAAWrkB,UAAU1J,EAAM,GAAG5F,QAE3C4F,EAAM,GAAG/F,QAAQsyB,GAAYmC,IAEjCV,GAAS,EAEb,GAAIA,EAAQ,CACR,IAAIW,EAAWZ,EAAWryB,QAAQ,KAC9BmT,EAAO8f,EAAW,EAAIZ,EAAaA,EAAWrkB,UAAU,EAAGilB,GAC/DZ,EAAaY,EAAW,EAAI,GAAKZ,EAAWrkB,UAAUilB,GACtDH,EAAY3f,IAYXkf,EAEb,SAASW,EAAgBj0B,EAAOsxB,EAAS6C,GAErC,GADA7C,EAAUA,EAAQhY,cACdua,EAASrC,GAAeF,GACxB,KAAOsC,EAAaH,IAAaI,EAASpC,GAAemC,EAAaH,KAClEO,EAAc,GAAIJ,EAAaH,IAGnCI,EAASnC,GAAqBJ,IAAYsC,EAAaH,IACvDO,EAAc,GAAI1C,GAEtB,IAAI8C,EAAYP,EAAStC,GAAeD,GACnC8C,GACDX,EAAS/X,KAAK4V,GAElB,IAAI+C,EAAQ,GAEZF,EAAK30B,QAAQwyB,IAAgB,SAAUzsB,EAAO2W,GAE1C,IADA,IAAIoY,EAAQ,GACHxzB,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCwzB,EAAMxzB,EAAK,GAAKY,UAAUZ,GAG9B,IAAIkG,EAAMstB,EAAM,GAAKA,EAAM,GACvBA,EAAM,GAAKA,EAAM,GACbA,EAAM,GAAKA,EAAM,GACbT,EAASlC,GAAWzV,GAAQA,EAAO,GAC/C,GAAa,UAATA,EAAkB,CAGlB,IAFA,IAAIqY,EAASvtB,EAAIvH,MAAM,KACnB+0B,EAAO,GACF90B,EAAI,EAAG+0B,EAAWF,EAAO50B,OAAQD,EAAI+0B,EAAU/0B,IAAK,CACzD,IAAIg1B,EAAOH,EAAO70B,GACdi1B,EAAaD,EAAKj1B,MAAM,KAC5B+0B,EAAKG,EAAW,IAAMA,EAAW,GAErC3tB,EAAMwtB,EAGVH,EADAnY,EAAO2V,GAAW3V,IAASA,GACblV,KAGlBqtB,EAAM,WAAapF,KACnB,IAAI2F,EAAY,CACZtD,QAASA,EACTuD,WAAYR,GAEhB,GAAID,EAAW,CACX,IAAIU,EAAYpB,EAAU,IAAMF,OACN10B,IAAtBg2B,EAAS1C,WACT0C,EAAS1C,SAAW,IAExBwC,EAAUvxB,OAASyxB,EACnBA,EAAS1C,SAAS1W,KAAKkZ,QAGvBlB,EAAU70B,QAAQ+1B,GAG1B,SAASZ,EAAch0B,EAAOsxB,GAC1B,IAAI9Z,EACJ,GAAK8Z,EAID,IAAK9Z,EAAMic,EAAS9zB,OAAS,EAAG6X,GAAO,GAC/Bic,EAASjc,KAAS8Z,EADgB9Z,UAH1CA,EAAM,EASV,GAAIA,GAAO,EAAG,CACV,IAAK,IAAIvN,EAAIypB,EAAU/zB,OAAS,EAAGsK,GAAKuN,EAAKvN,IAAK,CAE9C,IAAI8qB,EAAOrB,EAAUlI,QACrB,GAAyB,IAArBkI,EAAU/zB,OACV6zB,EAAQ9X,KAAKqZ,OAEZ,CACD,IAAIC,EAAWtB,EAAU,QACC50B,IAAtBk2B,EAAS5C,WACT4C,EAAS5C,SAAW,IAExB2C,EAAK1xB,OAAS2xB,EACdA,EAAS5C,SAAS1W,KAAKqZ,IAG/BtB,EAAS9zB,OAAS6X,GAG1B,SAASuc,EAAY3f,GACjB,GAAyB,IAArBsf,EAAU/zB,OACV6zB,EAAQ9X,KAAKtH,OAEZ,CACD,IAAI6gB,EAAWvB,EAAU,QACC50B,IAAtBm2B,EAAS7C,WACT6C,EAAS7C,SAAW,IAExB6C,EAAS7C,SAAS1W,KAAKtH,IAG/B,OAAOof,EAIX,SAASI,EAAasB,GAClB,OAAOA,EAAIA,EAAIv1B,OAAS,GAE5B,SAASk0B,EAASqB,EAAKp1B,GACnB,OAA6B,IAAtBo1B,EAAIj0B,QAAQnB,GA9VvBgxB,EAAW7sB,cAjCX,SAAuBqtB,EAAS6D,GAC5B,IAAI/C,EAAW,GACXgD,EAAWh0B,EAAO,GAAI,GAAI+zB,GAAY,GAC1C,IAAKj1B,EAAkBi1B,IACRn0B,OAAOjB,KAAKo1B,GACdx1B,SACDy1B,EAASrwB,YACTqtB,EAAWiB,EAAkB+B,EAASrwB,kBAC/BqwB,EAASrwB,WAEhBqwB,EAASf,QACTjzB,EAAOg0B,EAAUA,EAASf,cACnBe,EAASf,OAEhBe,EAASC,QAAQ,CAGjB,IAFA,IAAId,EAASa,EAASC,OAAO51B,MAAM,KAC/B+0B,EAAO,GACF90B,EAAI,EAAG+O,EAAW8lB,EAAO50B,OAAQD,EAAI+O,EAAU/O,IAAK,CACzD,IACIi1B,EADOJ,EAAO70B,GACID,MAAM,KAC5B+0B,EAAKG,EAAW,IAAMA,EAAW,UAE9BS,EAASC,OAChBD,EAASE,MAAQd,EAI7B,MAAO,CACHlD,QAASA,EACTuD,WAAYO,GAAY,GACxBhD,SAAUA,IAiBlBtB,EAAWmB,aAAeA,EAU1BnB,EAAWyE,OATX,SAAgBC,EAAcC,GAC1BxD,EAAauD,EAAcC,GACvBA,EAAUrD,SACVqD,EAAUrD,SAAWqD,EAAUrD,SAASgB,OAAOoC,GAG/CC,EAAUrD,SAAW,GAAGgB,OAAOoC,IAgBvC1E,EAAW4E,QAZX,SAAiBtyB,EAAOqyB,GAEpB,GADAxD,EAAa7uB,EAAOqyB,GACfA,EAAUrD,UAAaqD,EAAUrD,SAASzyB,OAK3C,IAAK,IAAID,EAAI0D,EAAMzD,OAAS,EAAGD,GAAK,EAAGA,IACnC+1B,EAAUrD,SAASvzB,QAAQuE,EAAM1D,SALrC+1B,EAAUrD,SAAW,GACrBqD,EAAUrD,SAASgB,OAAOhwB,IAmBlC0tB,EAAWqB,OAASA,EA6EpBrB,EAAW6E,aA3EX,SAASA,EAAaC,GAIlB,IAHA,IAAIhD,EAAMgD,EAAGhD,IAAKN,EAAWsD,EAAGtD,SAAUO,EAAY+C,EAAG/C,UAAWC,EAAkB8C,EAAG9C,gBACrF+C,EAAYvD,EAAS7yB,MAAM,KAC3Bq2B,EAAUlD,EACLlzB,EAAI,EAAGq2B,EAAWF,EAAUl2B,OAAQD,EAAIq2B,EAAUr2B,IAAK,CAC5D,IAAIs2B,GAAe,EACfC,EAAWH,EACXI,EAAcL,EAAUn2B,GAExByI,EAAS,GACb,GAAI8oB,GAAYxkB,KAAKypB,IACA,EACjB7D,EAAgB6D,EAAa/tB,QAE5B,IAAkC,IAA9B+tB,EAAYj1B,QAAQ,KAEzB,IADA,IACSH,EAAK,EAAGq1B,EADGD,EAAY3wB,MAAM2rB,IACYpwB,EAAKq1B,EAAgBx2B,OAAQmB,IAAM,CAEjFuxB,EADa8D,EAAgBr1B,GACLqH,QAG3B,IAAkC,IAA9B+tB,EAAYj1B,QAAQ,KAAa,CACtC+0B,GAAe,EAMf,IALA,IAEII,EAAUxD,EACVyD,OAAa,EACb7gB,EAAO,EACF8gB,EAAK,EAAGC,EALDL,EAAYz2B,MAAM,KAKQ62B,EAAKC,EAAY52B,OAAQ22B,IAAM,CACrE,IAAIE,EAAMD,EAAYD,GACtB,IAAKF,EACD,MAEJ,GAAIA,EAAQz2B,OAAQ,CAEhB,IADA,IAAI82B,EAAkB,GACbC,EAAK,EAAGC,EAAYP,EAASM,EAAKC,EAAUh3B,OAAQ+2B,IAAM,CAC/D,IAAItzB,EAAQuzB,EAAUD,GACtBD,EAAkBA,EAAgBrD,OAAOuC,EAAa,CAClD/C,IAAKxvB,EAAOkvB,SAAUkE,EACtB3D,UAAWA,EAAWC,kBAAmBtd,KAGjD6gB,EAAaI,OAGbJ,EAAaV,EAAa,CAAE/C,IAAKwD,EAAS9D,SAAUkE,EAAK3D,UAAWA,EAAWC,kBAAmBtd,IAEtGA,IACA4gB,EAAUC,EAEVA,IACAP,EAAUO,GAGlB,IAAKL,EACD,GAAIC,EAASt2B,OAAQ,CAEjB,IADA,IAAIi3B,EAAe,GACVC,EAAK,EAAGC,EAAWb,EAAUY,EAAKC,EAASn3B,OAAQk3B,IAAM,CAC9D,IAAIE,EAAYD,EAASD,GACzBD,EAAeA,EAAaxD,OAAOT,EAAcoE,EAAW5uB,EAAQ0qB,EAAWC,IAEnFgD,EAAUc,OAGVd,EAAUnD,EAAcsD,EAAU9tB,EAAQ0qB,EAAWC,GAIjE,OAAID,EACOiD,EAGAA,EAAQ,IAAM,MAyE7BhF,EAAW6B,cAAgBA,EAqJ3B7B,EAAWuC,kBAAoBA,EAsB/BvC,EAAWnsB,UAbX,SAAmBiuB,EAAKpxB,GACpB,OAAIpB,EAASwyB,GACLpxB,EACOJ,EAAO,GAAI,GAAIwxB,GAAK,GAGpB,CAAEtB,QAASsB,EAAItB,QAASuD,WAAYjC,EAAIiC,YAI5CjC,EAAIjuB,UAAUnD,IAY7BsvB,EAAWkG,kBARX,SAA2BlzB,EAASuwB,GAC5BvwB,EAAQ+wB,WAAWS,MAClBxxB,EAAQ+wB,WAAYS,MAAQl0B,EAAO,GAAIizB,GAGxCvwB,EAAQ+wB,WAAWS,MAAQl0B,EAAO0C,EAAQ+wB,WAAWS,MAAOjB,IAvZxE,CA4ZGvD,KAAeA,GAAa,KC1b/B,IAAImG,GAAU,gBAYP,SAAShzB,GAAcqtB,EAAS6D,GAEnC,IAAIrxB,EAAWmzB,GAAQxqB,KAAK6kB,GAAWhuB,SAAS4zB,gBAAgB,6BAA8B5F,GAAWhuB,SAASW,cAAcqtB,GAChI,MAA4B,qBAAhB6D,IAGZrxB,EAAQiB,UAAaowB,EAAWpwB,UAAYowB,EAAWpwB,UAAY,QACtCjG,IAAzBq2B,EAAWxF,YACX7rB,EAAQ6rB,UAAYwF,EAAWxF,gBAEb7wB,IAAlBq2B,EAAW7Z,KACXxX,EAAQwX,GAAK6Z,EAAW7Z,SAEFxc,IAAtBq2B,EAAWE,QACXvxB,EAAQqzB,aAAa,QAAShC,EAAWE,aAEpBv2B,IAArBq2B,EAAWd,OACXQ,GAAW/wB,EAASqxB,EAAWd,QAbxBvwB,EAuBR,SAASszB,GAASC,EAAUC,GAE/B,IADA,IAAIC,EAAYC,GAAaF,GACpBx2B,EAAK,EAAG80B,EAAKyB,EAAUv2B,EAAK80B,EAAGj2B,OAAQmB,IAAM,CAClD,IAAI8xB,EAAMgD,EAAG90B,GACb,GAAI8xB,GAAO2E,EACP,IAAK,IAAIjB,EAAK,EAAGmB,EAAcF,EAAWjB,EAAKmB,EAAY93B,OAAQ22B,IAAM,CACrE,IAAI3G,EAAY8H,EAAYnB,GAC5B,GAAIl2B,EAASwyB,GAAM,CACf,IAAI8E,EAAWv4B,EAAS,uBAAwByzB,GAC5C1yB,EAAkBw3B,GAClB73B,EAAS,uBAAwB8vB,EAAWiD,GAEtC,IAAIjsB,OAAO,MAAQgpB,EAAY,MAAO,KAAKljB,KAAKirB,IACtD73B,EAAS,uBAAwB63B,EAAW,IAAM/H,EAAWiD,QAI5DA,EAAI2E,UAAU1D,SAASlE,IACxBiD,EAAI2E,UAAU9M,IAAIkF,IAMtC,OAAO0H,EAQJ,SAASM,GAAYN,EAAUC,GAElC,IADA,IAAIC,EAAYC,GAAaF,GACpBx2B,EAAK,EAAG80B,EAAKyB,EAAUv2B,EAAK80B,EAAGj2B,OAAQmB,IAAM,CAClD,IAAI8xB,EAAMgD,EAAG90B,GACb,GAAI8xB,GAAO2E,EAAW,CAClB,IAAI/hB,EAAOpV,EAASwyB,GAEpB,GADgBpd,EAAOrW,EAAS,uBAAwByzB,GAAyB,KAAlBA,EAAIjD,UAE/D,IAAK,IAAI2G,EAAK,EAAGsB,EAAcL,EAAWjB,EAAKsB,EAAYj4B,OAAQ22B,IAAM,CACrE,IAAI3G,EAAYiI,EAAYtB,GAC5B,GAAI9gB,EAAM,CACN,IACIqiB,EADY14B,EAAS,uBAAwByzB,GACxBnzB,MAAM,KAC3B6c,EAAQub,EAAS52B,QAAQ0uB,IACd,IAAXrT,GACAub,EAASjc,OAAOU,EAAO,GAE3Bzc,EAAS,uBAAwBg4B,EAASnxB,KAAK,KAAMksB,QAGrDA,EAAI2E,UAAUpM,OAAOwE,KAMzC,OAAO0H,EAEX,SAASG,GAAaF,GAClB,IAAIC,EAAY,GAOhB,MANuB,kBAAZD,EACPC,EAAU7b,KAAK4b,GAGfC,EAAYD,EAETC,EAOJ,SAASO,GAAUh0B,GACtB,IAAI8uB,EAAM9uB,EACV,MAAiC,KAAzB8uB,EAAI0C,MAAMyC,YAAqBnF,EAAIoF,YAAc,EAQtD,SAAStC,GAAQF,EAAcC,EAAWwC,GAE7C,GAAI73B,EAASq1B,GACT3E,GAAW4E,QAAQF,EAAcC,OAEhC,CAED,IADA,IAAIyC,EAAU50B,SAAS60B,yBACdr3B,EAAK,EAAG80B,EAAKJ,EAAc10B,EAAK80B,EAAGj2B,OAAQmB,IAAM,CACtD,IAAI8xB,EAAMgD,EAAG90B,GACbo3B,EAAQxzB,YAAYkuB,GAExB6C,EAAU2C,aAAaF,EAASzC,EAAU4C,mBACtCJ,GACAK,GAAc7C,GAGtB,OAAOD,EAQJ,SAASD,GAAOC,EAAcC,EAAWwC,GAC5C,GAAI73B,EAASq1B,GACT3E,GAAWyE,OAAOC,EAAcC,OAE/B,CAED,IADA,IAAIyC,EAAU50B,SAAS60B,yBACdr3B,EAAK,EAAG80B,EAAKJ,EAAc10B,EAAK80B,EAAGj2B,OAAQmB,IAAM,CACtD,IAAI8xB,EAAMgD,EAAG90B,GACbo3B,EAAQxzB,YAAYkuB,GAExB6C,EAAU/wB,YAAYwzB,GAClBD,GACAK,GAAc7C,GAGtB,OAAOD,EAMX,SAAS8C,GAAc1F,GACJA,EAAItuB,iBAAiB,UAC3BxC,SAAQ,SAAUgC,GACvB,IAAIy0B,EAASj1B,SAASW,cAAc,UACpCs0B,EAAOnkB,KAAOtQ,EAAQiB,UACtBzB,SAASk1B,KAAK9zB,YAAY6zB,GAC1BpG,GAAOoG,MAQR,SAASpG,GAAOruB,GACnB,GAAI1D,EAAS0D,GACT,OAAOgtB,GAAWqB,OAAOruB,GAGzB,IAAIP,EAAaO,EAAQP,WACzB,OAAIA,EACOA,EAAWk1B,YAAY30B,QADlC,EAWD,SAASqnB,GAAOrnB,GACnB,GAAI1D,EAAS0D,GACTgtB,GAAWqB,OAAOruB,OAEjB,CACD,IAAIP,EAAaO,EAAQP,WACzB+mB,GAAagB,YAAYxnB,GACzBP,EAAWk1B,YAAY30B,IASxB,SAAS+wB,GAAW/wB,EAAS+wB,GAChC,IAAI90B,EAAOiB,OAAOjB,KAAK80B,GACnBjC,EAAM9uB,EACV,GAAI8uB,EACA,IAAK,IAAI9xB,EAAK,EAAGC,EAAShB,EAAMe,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAIhB,EAAMiB,EAAOD,GACjB,GAAIV,EAASwyB,GAAM,CACf,IAAI8F,EAAO54B,EACC,aAARA,IACA44B,EAAO,YAEX9F,EAAIiC,WAAW6D,GAAQ7D,EAAW/0B,QAGlC8yB,EAAIuE,aAAar3B,EAAK+0B,EAAW/0B,IAI7C,OAAO8yB,EASJ,SAAS+F,GAAOrG,EAAUtX,EAAS4d,GAEtC,YADgB,IAAZ5d,IAAsBA,EAAU1X,UAChClD,EAAS4a,IAAY4d,EAEd9H,GAAW6E,aAAa,CAAE/C,IAAK5X,EAASsX,SAAUA,EAAUO,WAAW,KAG9EP,EAAWuG,GAAcvG,GAClBtX,EAAQ8d,cAAcxG,IAS9B,SAASO,GAAUP,EAAUtX,EAAS4d,GAEzC,YADgB,IAAZ5d,IAAsBA,EAAU1X,UAChClD,EAAS4a,KAAa4d,EAEf9H,GAAW6E,aAAa,CAAE/C,IAAK5X,EAASsX,SAAUA,EAAUO,WAAW,KAG9EP,EAAWuG,GAAcvG,GACVtX,EAAQ1W,iBAAiBguB,IAIhD,SAASuG,GAAcvG,GACnB,IAAIyG,EAAY,+DAChB,GAAIzG,EAAS/sB,MAAM,YAAc+sB,EAAS/sB,MAAMwzB,GAAY,CAExD,IADA,IAAIC,EAAS1G,EAAS7yB,MAAM,KACnBC,EAAI,EAAGA,EAAIs5B,EAAOr5B,OAAQD,IAAK,CAEpC,IADA,IAAIu5B,EAAOD,EAAOt5B,GAAGD,MAAM,KAClBwK,EAAI,EAAGA,EAAIgvB,EAAKt5B,OAAQsK,IAC7B,GAAIgvB,EAAKhvB,GAAGhJ,QAAQ,MAAQ,IACnBg4B,EAAKhvB,GAAG1E,MAAM,UAAW,CAC1B,IAAI2zB,EAAUD,EAAKhvB,GAAGxK,MAAM,KAC5B,GAAIy5B,EAAQ,GAAG3zB,MAAM,QAAU2zB,EAAQ,GAAG3zB,MAAMwzB,GAAY,CACxD,IAAII,EAAQF,EAAKhvB,GAAGxK,MAAM,KAC1B05B,EAAM,GAAKA,EAAM,GAAG35B,QAAQ,IAAK,SAAY,KAC7Cy5B,EAAKhvB,GAAKkvB,EAAMzyB,KAAK,MAKrCsyB,EAAOt5B,GAAKu5B,EAAKvyB,KAAK,KAE1B,OAAOsyB,EAAOtyB,KAAK,KAEvB,OAAO4rB,EAQJ,SAAS8G,GAAQt1B,EAASwuB,GAC7B,IAAI+G,EAAKv1B,EACT,GAA0B,oBAAfu1B,EAAGD,QACV,OAAOC,EAAGD,QAAQ9G,GAEtB,KAAO+G,GAAsB,IAAhBA,EAAGC,UAAgB,CAC5B,GAAIlrB,GAAQirB,EAAI/G,GACZ,OAAO+G,EAEXA,EAAKA,EAAG91B,WAEZ,OAAO,KAoDJ,SAASyzB,GAAkBlzB,EAASuwB,QACzBv1B,IAAVu1B,IACIj0B,EAAS0D,GAETgtB,GAAWkG,kBAAkBlzB,EAASuwB,GAGtCrzB,OAAOjB,KAAKs0B,GAAOvyB,SAAQ,SAAUhC,GAEjCgE,EAAQwxB,MAAMx1B,GAAOu0B,EAAMv0B,OAapC,SAASy3B,GAAUzzB,EAASy1B,EAAYC,GAC3CpC,GAAS,CAACtzB,GAAUy1B,GACpB5B,GAAY,CAAC7zB,GAAU01B,GASpB,SAASprB,GAAQtK,EAASwuB,GAE7B,IAAIlkB,EAAUtK,EAAQsK,SAAWtK,EAAQ21B,mBAAqB31B,EAAQ41B,sBACtE,OAAItrB,EACOA,EAAQhK,KAAKN,EAASwuB,IAG6C,IAAnE,GAAGrxB,QAAQmD,KAAKd,SAASgB,iBAAiBguB,GAAWxuB,GCxZpE,IAAI61B,GAAa,IAAIhzB,OAAO,KAMxBizB,GAAsB,WAItB,SAASA,EAAKzrB,EAASrK,GACnBhB,KAAK+2B,YAAa,EAClB/2B,KAAKg3B,sBAAuB,EAC5Bh3B,KAAK4J,kBAAmB,EACxB5J,KAAKi3B,wBAAyB,EAC9Bj3B,KAAKk3B,qBAAsB,EAC3Bl3B,KAAKqyB,WAAa,GAClBryB,KAAKm3B,kBAAoB,GACzBn3B,KAAKo3B,cAAgB,GACrBp3B,KAAKq3B,YAAc,GACnBr3B,KAAKs3B,YAAa,EAClBt3B,KAAKu3B,uBAAwB,EAE7Bv3B,KAAKw3B,YAAc,aACnBx3B,KAAKy3B,uBAAyB,GAC9Bz3B,KAAK03B,cAAgB,IAAIzf,EAASjY,MAC7BlD,EAAYkE,KAEThB,KAAKgB,QADL,kBAAqBA,EACNR,SAASw1B,cAAch1B,GAGvBA,EAEd5D,EAAkB4C,KAAKgB,WACxBhB,KAAKk3B,qBAAsB,EAC3Bl3B,KAAK23B,gBAGR76B,EAAYuO,IACbrL,KAAK43B,cAAcvsB,GAAS,GAEhCrL,KAAK63B,aAAc,EAmNvB,OA1MAf,EAAK56B,UAAU07B,cAAgB,SAAUx0B,EAAM00B,GAC3C,IAAIC,EAAgB/3B,KAAKk3B,oBACzBl3B,KAAKk3B,sBAAwBY,EAC7Bn6B,EAAMqC,KAAMoD,IACS,IAAjB00B,GACAn6B,EAAMqC,KAAKm3B,kBAAmB/zB,GAC9BpD,KAAKg4B,YAEA14B,KAAcU,KAAK+2B,YACxB/2B,KAAKi4B,eAAe70B,GAExBpD,KAAKw3B,cACLx3B,KAAKm3B,kBAAoB,GACzBn3B,KAAKo3B,cAAgB,GACrBp3B,KAAKk3B,oBAAsBa,GAU/BjB,EAAKoB,kBAAoB,SAAU37B,EAAKgE,GAEpC,IADA,IACSvC,EAAK,EAAGC,EADNC,OAAOjB,KAAKV,GACSyB,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAIhB,EAAMiB,EAAOD,GACjB,GAAIuC,EAAOvD,aAAgBoB,MACvB,IAAK,IAAI00B,EAAK,EAAGU,EAAKjzB,EAAOvD,GAAM81B,EAAKU,EAAG32B,OAAQi2B,IAAM,CACrD,IAAIpZ,EAAQ8Z,EAAGV,QACQ92B,IAAnB0d,EAAMse,UACNte,EAAMse,gBAKdz3B,EAAOvD,GAAKg7B,aAIxBlB,EAAK56B,UAAUi8B,aAAe,WAC1Bn4B,KAAKw3B,cACLx3B,KAAKm3B,kBAAoB,GACzBn3B,KAAKo3B,cAAgB,GACrBp3B,KAAKy3B,uBAAyB,IAKlCX,EAAK56B,UAAU87B,SAAW,WAEtB,GADAlB,EAAKoB,kBAAkBl4B,KAAKy3B,uBAAwBz3B,MAChD9B,OAAOk6B,oBAAoBp4B,KAAKm3B,mBAAmBt6B,OAAQ,CAC3D,IAAIk7B,EAAgB/3B,KAAKk3B,oBACrBmB,EAAar4B,KAAKm3B,kBAClBmB,EAAat4B,KAAKo3B,cACtBp3B,KAAKm4B,eACLn4B,KAAKk3B,qBAAsB,EAC3Bl3B,KAAKu4B,kBAAkBF,EAAYC,GACnCt4B,KAAKk3B,oBAAsBa,IAKnCjB,EAAK56B,UAAU+7B,eAAiB,SAAUI,GACtC,GAAK/4B,IAAL,CAGA+4B,EAAaA,GAA0B,GACvC/5B,EAAO0B,KAAKq3B,YAAa,GAAIgB,GAAY,GAErCr4B,KAAKi3B,wBAA0Bv1B,OAAM,SAAW82B,cAChD92B,OAAM,SAAW82B,YAAYx4B,MAC7BA,KAAKq3B,YAAc,MAI3BP,EAAK56B,UAAUu8B,YAAc,SAAUz7B,EAAK07B,EAAUC,GAClD,GAAIr5B,IAAY,CAEZ,IAAI+4B,EAAa,GACjBA,EAAWr7B,GAAO07B,EAClB14B,KAAKi4B,eAAeI,GAEpBr4B,KAAKk3B,sBAGTl3B,KAAKo3B,cAAcp6B,GAAO27B,EAC1B34B,KAAKm3B,kBAAkBn6B,GAAO07B,EAC9B14B,KAAKw3B,cACLx3B,KAAKw3B,YjBlHN,SAAsBjf,GACzB,IAAIqgB,EACA3iB,EAAM,IAAI4iB,YAAY,IACVn3B,OAAOo3B,UAAYp3B,OAAOq3B,QAChCC,gBAAgB/iB,GAC1B,IAAIgjB,EAAS,MAkZjB,SAAsBhjB,GAElB,IADA,IAAIlS,EAAM,GACDnH,EAAI,EAAGA,EAAI,EAAGA,IACnBmH,IAAQnH,EAAI,IAAM,IAAMqZ,EAAIrZ,GAEhC,OAAOmH,EAvZcm1B,CAAajjB,GAC9BkjB,EAAiB,SAAUzT,GACvBA,EAAM9nB,SAAW8D,QAAgC,kBAAfgkB,EAAM7L,MAAqB6L,EAAM7L,KAAKhd,QAAU,IAAM6oB,EAAM7L,OAASof,IACvG1gB,IACAqgB,MAKR,OAFAl3B,OAAOymB,iBAAiB,UAAWgR,GAAgB,GACnDz3B,OAAO03B,YAAYH,EAAQ,KACpBL,EAAS,WACZl3B,OAAO6mB,oBAAoB,UAAW4Q,GACtC5gB,EAAU4gB,EAAiBF,OAASj9B,GiBkGjBq9B,CAAar5B,KAAKg4B,SAAS77B,KAAK6D,SAUvD82B,EAAK56B,UAAUisB,iBAAmB,SAAUP,EAAWrP,GACnDvY,KAAK03B,cAAcrf,GAAGuP,EAAWrP,IAQrCue,EAAK56B,UAAUqsB,oBAAsB,SAAUX,EAAWrP,GACtDvY,KAAK03B,cAAc7e,IAAI+O,EAAWrP,IAYtCue,EAAK56B,UAAUysB,QAAU,SAAUf,EAAWgB,EAAW1P,EAAgBC,GACrE,IAAIpZ,EAAQC,KACZ,IAAyB,IAArBA,KAAK63B,YAAsB,CAC3B,IAAIE,EAAgB/3B,KAAKk3B,oBACzBl3B,KAAKk3B,qBAAsB,EAC3B,IAAIrd,EAAO7Z,KAAK03B,cAAc1e,OAAO4O,EAAWgB,EAAW1P,EAAgBC,GAC3E,GAAI0d,GAAWltB,KAAKie,GAAY,CAC5B,IAAIrP,EAAUlc,EAASurB,EAAW5nB,MAClC,GAAIuY,EAAS,CAET,GAAI7W,OAAM,OAAU,CAChB,IAAIiY,EAAUpB,EAAQjX,KAAKtB,KAAM4oB,GAC7BjP,GAAmC,oBAAjBA,EAAQC,KACrBV,EAIDS,EAAQC,MAAK,SAAUC,GACfX,IACAW,EAAuB,kBAATA,GAAqB9Z,EAAM23B,cAAc5d,OAAOD,GAC1DE,KAAKC,MAAMH,GAAQA,EACvBX,EAAe5X,KAAKvB,EAAO8Z,OAEhCK,OAAM,SAAUL,GACXV,IACAU,EAAuB,kBAATA,GAAqB9Z,EAAM23B,cAAc5d,OAAOD,GAAQE,KAAKC,MAAMH,GAAQA,EACzFV,EAAa7X,KAAKvB,EAAO8Z,OAZjCA,EAAOF,EAiBNT,GACLA,EAAe5X,KAAKtB,KAAM4oB,QAI9BrQ,EAAQjX,KAAKtB,KAAM4oB,GACf1P,GACAA,EAAe5X,KAAKtB,KAAM4oB,QAI7B1P,GACLA,EAAe5X,KAAKtB,KAAM4oB,GAIlC,OADA5oB,KAAKk3B,oBAAsBa,EACpBle,IAMfid,EAAK56B,UAAUy7B,YAAc,WAEzB,IAAI2B,EAAc,KAAOt5B,KAAKu5B,gBAAgB/iB,cAC9C8d,GAAS,CAACt0B,KAAKgB,SAAU,CAAC,QAASs4B,IAC9Bl8B,EAAkB4C,KAAKgB,QAAQw4B,eAIhCz8B,EAAS,gBAAiB,CAACiD,MAAOA,KAAKgB,SAHvChB,KAAKgB,QAAQw4B,cAAc5gB,KAAK5Y,OASxC82B,EAAK56B,UAAUie,QAAU,WACrB,IAAIpa,EAAQC,KACZA,KAAKgB,QAAQw4B,cACTx5B,KAAKgB,QAAQw4B,cAAc9J,QAAO,SAAU9yB,GAAK,OAAOA,IAAMmD,KAClE80B,GAAY,CAAC70B,KAAKgB,SAAU,CAAC,KAAOhB,KAAKu5B,kBACC,IAAtCv5B,KAAKgB,QAAQw4B,cAAc38B,QAE3Bg4B,GAAY,CAAC70B,KAAKgB,SAAU,CAAC,UAEjChB,KAAKm4B,eACLn4B,KAAK03B,cAAcvd,UACnBna,KAAK63B,aAAc,GAEhBf,EAtPe,GCD1B,SAAS2C,GAAUC,EAAUC,EAAQC,EAAc1vB,GAI/C,OAHKwvB,EAASrH,WAAW7yB,eAAem6B,IAAaD,EAASrH,WAAWsH,aAAmBzvB,IACxFwvB,EAASrH,WAAWsH,GAAUh+B,EAAeuO,EAAM,CAACwvB,EAAUC,EAAQC,KAEnEF,EAASrH,WAAWsH,GAW/B,SAASE,GAAeH,EAAUC,EAAQC,EAAc1vB,EAAM4vB,EAAUC,GAGpE,IAFA,IAAIp7B,EAAS,GACTmD,EAAM83B,EAAeA,EAAa/8B,OAAS,EACtCD,EAAI,EAAGA,EAAIkF,EAAKlF,IAAK,CAC1B,IAAIo9B,EAAU9vB,EAId,GAHI6vB,IACAC,EAAU9vB,EAAK0vB,EAAah9B,GAAI88B,IAEhCI,EAAU,CACV,IAAIG,EAAOt+B,EAAeq+B,EAAS,CAACN,EAAUC,EAAQ,IAAI,IAC1DM,EAAKrC,cAAcgC,EAAah9B,IAAI,GACpC+B,EAAOia,KAAKqhB,QAGZt7B,EAAOia,KAAKjd,EAAeq+B,EAAS,CAACN,EAAUC,EAAQC,EAAah9B,IAAI,KAGhF,OAAO+B,EAOX,SAASu7B,GAAeN,EAAcD,GAClC,OAAO,WAIH,OAHK35B,KAAKqyB,WAAW7yB,eAAem6B,KAChC35B,KAAKqyB,WAAWsH,GAAUC,GAEvB55B,KAAKqyB,WAAWsH,IAQ/B,SAASQ,GAAeP,EAAcD,GAClC,OAAO,SAAUjB,GACb,GAAI14B,KAAKqyB,WAAWsH,KAAYjB,EAAU,CACtC,IAAI0B,EAASp6B,KAAKqyB,WAAW7yB,eAAem6B,GAAU35B,KAAKqyB,WAAWsH,GAAUC,EAChF55B,KAAKy4B,YAAYkB,EAAQjB,EAAU0B,GACnCp6B,KAAKqyB,WAAWsH,GAAUjB,IAOtC,SAAS2B,GAAcT,EAAcD,EAAQzvB,GACzC,OAAO,WACH,OAAOuvB,GAAUz5B,KAAM25B,EAAQC,EAAc1vB,IAMrD,SAASowB,GAAcV,EAAcD,EAAQzvB,GACzC,OAAO,SAAUwuB,GACbe,GAAUz5B,KAAM25B,EAAQC,EAAc1vB,GAAM0tB,cAAcc,IAoBlE,SAAS6B,GAAmBX,EAAcD,EAAQzvB,GAC9C,OAAO,WACH,IAAInK,EAAQC,KACZ,IAAKA,KAAKqyB,WAAW7yB,eAAem6B,GAAS,CACzC,IAAIa,EAAgBX,GAAe75B,KAAM25B,EAAQC,EAAc1vB,GAAM,GACrElK,KAAKqyB,WAAWsH,GAAUa,EAE9B,IAAIC,OAAkCz+B,IAAvBgE,KAAK06B,eAA+B16B,KAAK06B,cAAcnD,uBAC/Dv3B,KAAKu3B,sBAaZ,OAZKv3B,KAAKqyB,WAAWsH,GAAQn6B,eAAe,SAAYi7B,GACpD,CAAC,OAAQ,OAAOz7B,SAAQ,SAAU27B,GAC9B,IAAIC,EAAa,CACbp+B,MAAOq+B,GAA4BF,EAAYhB,EAAQzvB,EAAMnK,EAAMsyB,WAAWsH,IAASx9B,KAAK4D,GAC5F4mB,cAAc,GAElBzoB,OAAOooB,eAAevmB,EAAMsyB,WAAWsH,GAASgB,EAAYC,MAG/D56B,KAAKqyB,WAAWsH,GAAQn6B,eAAe,mBACxCtB,OAAOooB,eAAetmB,KAAKqyB,WAAWsH,GAAS,iBAAkB,CAAEn9B,OAAO,IAEvEwD,KAAKqyB,WAAWsH,IAG/B,SAASmB,GAAmBlB,EAAcD,EAAQzvB,GAC9C,OAAO,SAAUwuB,GACb14B,KAAKg3B,sBAAuB,EAC5B,IAAI+D,EAAqBlB,GAAe75B,KAAM25B,EAAQC,EAAc1vB,GAAM,GACtE8wB,EAAmBnB,GAAe75B,KAAM25B,EAAQjB,EAAUxuB,GAAM,GACpElK,KAAKg3B,sBAAuB,EAC5Bh3B,KAAKy4B,YAAYkB,EAAQqB,EAAkBD,GAC3C/6B,KAAKqyB,WAAWsH,GAAUqB,GAqBlC,SAASH,GAA4BI,EAAOtB,EAAQzvB,EAAM9G,GAEtD,OAAO,WAEH,IADA,IAAIs1B,EAAW,GACN16B,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpC06B,EAAS16B,GAAMY,UAAUZ,GAE7B,IAAIk9B,EAAYl7B,KAAKysB,SAAWzsB,KAAKm7B,eAAiB,IAAMxB,EAAS,IAAMA,EAAS,IACpF,OAAQsB,GACJ,IAAK,OACD,IAAK,IAAIr+B,EAAI,EAAGA,EAAI87B,EAAS77B,OAAQD,IAAK,CACtCwB,MAAMlC,UAAU++B,GAAO7+B,MAAMgH,EAAM,CAACs1B,EAAS97B,KAC7C,IAAIw+B,EAAUC,GAAcH,GAAa93B,EAAKvG,OAAS,GAAI67B,EAAS97B,IAAKoD,KAAK06B,cAAeO,GAC7Fj7B,KAAKi4B,eAAemD,EAAS1C,EAAS97B,IAAI,EAAOq+B,GAErD,MACJ,IAAK,MACD78B,MAAMlC,UAAU++B,GAAO7+B,MAAMgH,GAC7B,IAAIk4B,EAAQD,GAAcH,EAAY93B,EAAKvG,OAAQ,MAAOmD,KAAK06B,cAAeO,GAC9Ej7B,KAAKi4B,eAAeqD,EAAO,CAAEC,UAAW,QAAS,EAAON,GAGhE,OAAO73B,GAIf,SAASi4B,GAAcH,EAAW1+B,EAAOg/B,EAAiBC,GACtD,IAAIC,EAAcR,EAClB,GAAIM,KACAE,EAAc,IACFR,GAAa1+B,EACrBA,GAA0B,kBAAVA,GAAoB,CAEpCk/B,EAAYR,GAAZ,UAAiCO,EAGzC,OAAOC,EAWJ,SAASC,GAAS/B,GACrB,OAAO,SAAUgC,EAAQ5+B,GACrB,IAAI6+B,EAAqB,CACrBpV,IAAK0T,GAAeP,EAAc58B,GAClCupB,IAAK2T,GAAeN,EAAc58B,GAClC0pB,YAAY,EACZC,cAAc,GAGlBzoB,OAAOooB,eAAesV,EAAQ5+B,EAAK6+B,GACnCC,GAAsBF,EAAQ5+B,EAAK,OAAQ48B,IAa5C,SAASmC,GAAQnC,EAAc1vB,GAClC,OAAO,SAAU0xB,EAAQ5+B,GACrB,IAAI6+B,EAAqB,CACrBpV,IAAK6T,GAAcV,EAAc58B,EAAKkN,GACtCqc,IAAK8T,GAAcT,EAAc58B,EAAKkN,GACtCwc,YAAY,EACZC,cAAc,GAGlBzoB,OAAOooB,eAAesV,EAAQ5+B,EAAK6+B,GACnCC,GAAsBF,EAAQ5+B,EAAK,cAAe48B,EAAc1vB,IAoCjE,SAAS8xB,GAAWpC,EAAc1vB,GACrC,OAAO,SAAU0xB,EAAQ5+B,GACrB,IAAI6+B,EAAqB,CACrBpV,IAAKqU,GAAmBlB,EAAc58B,EAAKkN,GAC3Cqc,IAAKgU,GAAmBX,EAAc58B,EAAKkN,GAC3Cwc,YAAY,EACZC,cAAc,GAGlBzoB,OAAOooB,eAAesV,EAAQ5+B,EAAK6+B,GACnCC,GAAsBF,EAAQ5+B,EAAK,UAAW48B,EAAc1vB,IAmC7D,SAAS3K,KACZ,OAAO,SAAUq8B,EAAQ5+B,GACrB,IAAIi/B,EAAkB,CAClBxV,IAAK,SAAUiS,GACX,IAAIC,EAAW34B,KAAKqyB,WAAWr1B,GAC/B,GAAI27B,IAAaD,EAAU,CACvB,IAAIwD,EAkJxB,SAASC,EAAiBjkB,EAASvF,GAC/B,IAA4C,IAAxCuF,EAAQ1Y,eAAe,aACvB,MAAO,CAAE0Y,QAASA,EAASvF,OAAQA,GAGnC,IAAIypB,EAAU//B,EAAS,WAAY6b,GAInC,OAHIkkB,IACAzpB,EAASypB,EAAU,IAAMzpB,GAEtBwpB,EAAiB9/B,EAAS,YAAa6b,GAAUvF,GA3JzBwpB,CAAiBn8B,KAAMhD,IACZ,IAA1BF,EAAY67B,IACZuD,EAAahkB,QAAQqQ,oBAAoB2T,EAAavpB,OAAQgmB,GAElEuD,EAAahkB,QAAQiQ,iBAAiB+T,EAAavpB,OAAQ+lB,GAC3D14B,KAAKqyB,WAAWr1B,GAAO07B,IAG/BnS,IAAK2T,QAAel+B,EAAWgB,GAC/B0pB,YAAY,EACZC,cAAc,GAElBzoB,OAAOooB,eAAesV,EAAQ5+B,EAAKi/B,GACnCH,GAAsBF,EAAQ5+B,EAAK,UAwBpC,SAASq/B,GAAsBC,IAOtC,SAASR,GAAsBF,EAAQ5+B,EAAKu/B,EAAc3C,EAAc1vB,GAChEpN,EAAY8+B,EAAOY,YACnBZ,EAAOY,SAAW,CACdh5B,MAAO,GACPi5B,aAAc,GACdC,SAAU,GACV/W,OAAQ,GACRgX,UAAW,GACXC,iBAAkB,GAClBC,aAAc,GACdC,WAAY,KAIpBlB,EAAOY,SAASD,EAAe,KAAK3jB,KAAK,CACrCmkB,aAAc//B,EACd48B,aAAcA,EACd1vB,KAAMA,IAEV0xB,EAAOY,SAASD,EAAe,SAAS3jB,KAAK5b,GChYjD,IAAIggC,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQ5+B,EAAKwgC,GAC7E,IAA2H12B,EAAvHD,EAAIjI,UAAU/B,OAAQ4gC,EAAI52B,EAAI,EAAI+0B,EAAkB,OAAT4B,EAAgBA,EAAOt/B,OAAOw/B,yBAAyB9B,EAAQ5+B,GAAOwgC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQ5+B,EAAKwgC,QACpH,IAAK,IAAI5gC,EAAI2gC,EAAW1gC,OAAS,EAAGD,GAAK,EAAGA,KAASkK,EAAIy2B,EAAW3gC,MAAI6gC,GAAK52B,EAAI,EAAIC,EAAE22B,GAAK52B,EAAI,EAAIC,EAAE80B,EAAQ5+B,EAAKygC,GAAK32B,EAAE80B,EAAQ5+B,KAASygC,GAChJ,OAAO52B,EAAI,GAAK42B,GAAKv/B,OAAOooB,eAAesV,EAAQ5+B,EAAKygC,GAAIA,GAkB5DI,GAA2B,SAAUC,GAErC,SAASD,EAAUxyB,GACf,IAAItL,EAAQ+9B,EAAOx8B,KAAKtB,KAAMqL,OAASrP,IAAcgE,KAcrD,OAVAD,EAAMg+B,OAAS,CACXC,KAAM,2CACNC,OAAQ,2CACRC,OAAQ,2CACRC,QAAS,2CACTC,UAAW,2CACXC,aAAc,oCACdC,UAAW,oCACXC,WAAY,qCAETx+B,EAgKX,IAAIy+B,EA4BJ,OA5MAxB,GAAUa,EAAWC,GAkBrBU,EAAcX,EAOdA,EAAU3hC,UAAUuiC,QAAU,SAAUz9B,EAASqK,GAC7CA,EAAWA,GAAU,GACrB,IAAIiwB,EAAQt7B,KAAK0+B,SAASrzB,GAC1B,GAAuB,kBAAZrK,EAEP,IADA,IACShD,EAAK,EAAG2gC,EADFvgC,MAAMlC,UAAUmF,MAAMC,KAAKyuB,GAAU/uB,EAASR,WACrBxC,EAAK2gC,EAAW9hC,OAAQmB,IAAM,CAClE,IAAI4gC,EAAYD,EAAW3gC,GAC3Bs9B,EAAMt6B,QAAU49B,EAChBJ,EAAYK,eAAevD,QAI/BA,EAAMt6B,QAAUA,EAChBw9B,EAAYK,eAAevD,IASnCuC,EAAUiB,KAAO,SAAU99B,EAASs6B,GAChCt6B,EAAQwxB,MAAMuM,UAAY,GAC1B/9B,EAAQg+B,gBAAgB,aACxB,IAAIC,EAAcj+B,EAAQ2sB,aAAa,kBACvC,GAAIsR,EAAa,CACb,IAAIC,EAAUhqB,SAAS+pB,EAAa,IACpCE,qBAAqBD,GACrBl+B,EAAQg+B,gBAAgB,kBAExB1D,GAASA,EAAM5jB,KACf4jB,EAAM5jB,IAAIpW,KAAKtB,KAAMs7B,IAQ7BuC,EAAUgB,eAAiB,SAAUvD,GAC7BA,EAAMz7B,MACNO,YAAW,WAAco+B,EAAYY,eAAe9D,KAAWA,EAAMz7B,OAGrE2+B,EAAYY,eAAe9D,IAQnCuC,EAAUuB,eAAiB,SAAU9D,GACjC,IAAIv7B,EAAQC,KACZs7B,EAAM+D,UAAY,EAClB,IAAIC,EAAO,EACPC,EAAU,EAEVC,EAAgB,EAChBC,EAAWnE,EAAMmE,SACrBnE,EAAMt6B,QAAQqzB,aAAa,YAAa,SACnB,SAAjBqL,EAA2BL,GAC3B,IACI,GAAIA,EAAW,CAGXG,EAAkC,IAAlBA,EAAsBH,EAAYG,EAClDlE,EAAM+D,UAAaA,EAAY/D,EAAM+D,UAAaG,EAClDA,EAAgBH,GAGXC,GAAQhE,EAAMqE,OACfrE,EAAMqE,MAAMr+B,KAAKvB,EAAOu7B,GAE5BgE,GAAc,EACd,IAAIM,EAAMtE,EAAM+D,UAAYC,EACxBhE,EAAM+D,UAAYI,GAAYnE,EAAM+D,UAAYO,EAAMH,GAAYnE,EAAMt6B,QAAQ2sB,aAAa,cAE7F2N,EAAMt6B,QAAQwxB,MAAMuM,UAAYzD,EAAMliB,KAAO,IAAMkiB,EAAMmE,SAAW,MAAQnE,EAAMuE,eAC9EvE,EAAMwE,UACNxE,EAAMwE,SAASx+B,KAAKvB,EAAOu7B,GAG/ByE,sBAAsBL,KAItBP,qBAAqBI,GACrBjE,EAAMt6B,QAAQg+B,gBAAgB,kBAC9B1D,EAAMt6B,QAAQg+B,gBAAgB,aAC9B1D,EAAMt6B,QAAQwxB,MAAMuM,UAAY,GAC5BzD,EAAM5jB,KACN4jB,EAAM5jB,IAAIpW,KAAKvB,EAAOu7B,SAKlB0E,YAAYC,MAExBV,EAAUQ,sBAAsBL,GAChCpE,EAAMt6B,QAAQqzB,aAAa,iBAAkBkL,EAAQrzB,YAG7D,MAAOrL,GACHs+B,qBAAqBI,GACrBjE,EAAMt6B,QAAQg+B,gBAAgB,kBAC1B1D,EAAM4E,MACN5E,EAAM4E,KAAK5+B,KAAKvB,EAAOc,IAInC6+B,IAOJ7B,EAAU3hC,UAAUwiC,SAAW,SAAUrzB,GACrC,MAAO,CACH+N,KAAM/N,EAAQ+N,MAAQpZ,KAAKoZ,KAC3BvZ,MAAOwL,EAAQxL,OAASG,KAAKH,MAC7B4/B,cAAgCzjC,IAArBqP,EAAQo0B,SAAyBp0B,EAAQo0B,SAAWz/B,KAAKy/B,SACpEE,MAAOt0B,EAAQs0B,OAAS3/B,KAAK2/B,MAC7BjoB,IAAKrM,EAAQqM,KAAO1X,KAAK0X,IACzBwoB,KAAM70B,EAAQ60B,MAAQlgC,KAAKkgC,KAC3BJ,SAAUz0B,EAAQy0B,UAAY9/B,KAAK8/B,SACnCD,eAAgB7/B,KAAK+9B,OAAO1yB,EAAQw0B,gBAAkB7/B,KAAK+9B,OAAO1yB,EAAQw0B,gBACrEx0B,EAAQw0B,gBAAkB7/B,KAAK+9B,OAAO/9B,KAAK6/B,kBAMxDhC,EAAU3hC,UAAUq8B,kBAAoB,SAAU4H,EAASC,KAO3DvC,EAAU3hC,UAAUq9B,cAAgB,WAChC,MAAO,aAKXsE,EAAU3hC,UAAUie,QAAU,aAI9BmjB,GAAW,CACP3B,GAAS,WACVkC,EAAU3hC,UAAW,YAAQ,GAChCohC,GAAW,CACP3B,GAAS,MACVkC,EAAU3hC,UAAW,gBAAY,GACpCohC,GAAW,CACP3B,GAAS,SACVkC,EAAU3hC,UAAW,sBAAkB,GAC1CohC,GAAW,CACP3B,GAAS,IACVkC,EAAU3hC,UAAW,aAAS,GACjCohC,GAAW,CACP/9B,MACDs+B,EAAU3hC,UAAW,gBAAY,GACpCohC,GAAW,CACP/9B,MACDs+B,EAAU3hC,UAAW,aAAS,GACjCohC,GAAW,CACP/9B,MACDs+B,EAAU3hC,UAAW,WAAO,GAC/BohC,GAAW,CACP/9B,MACDs+B,EAAU3hC,UAAW,YAAQ,GAChC2hC,EAAYW,EAAclB,GAAW,CACjCjB,IACDwB,GA5MwB,CA8M7B/G,IAcK,SAASuJ,GAAar/B,EAASs/B,EAAeC,GACjD,IAAIC,EAmBR,SAAwBF,GAQpB,MAPkB,CACd9Q,SAAU8Q,GAAiBA,EAAc9Q,SAAW8Q,EAAc9Q,SAAW,KAC7EiL,OAAQ6F,GAAiBA,EAAc7F,OAAS6F,EAAc7F,OAAS,KACvEgG,WAAYH,GAAiBA,EAAcG,WAC3CC,eAAgBJ,GAAiBA,EAAcI,eAC/CjB,SAAUa,GAAiBA,EAAcb,SAAWa,EAAcb,SAAW,KAzB/DkB,CAAeL,GACjC,OAA+B,IAA3BE,EAAYC,iBAAoDzkC,IAA3BwkC,EAAYC,aAA6BG,GACvE3kC,UAEX+E,EAAQqzB,aAAa,cAAe,QACpC7M,GAAaG,IAAI3mB,EAAS,YAAa6/B,GAAe,CAAEtgC,OAAQS,EAASs/B,cAAeE,IACxFhZ,GAAaG,IAAI3mB,EAAS,UAAW8/B,GAAiB,CAAEvgC,OAAQS,EAASs/B,cAAeE,EAAaD,KAAMA,IAC3G/Y,GAAaG,IAAI3mB,EAAS,aAAc+/B,GAAoB,CAAExgC,OAAQS,EAASs/B,cAAeE,IAC1Fvb,GAAQW,WACR4B,GAAaG,IAAI3mB,EAAS,gBAAiB+/B,GAAoB,CAAExgC,OAAQS,EAASs/B,cAAeE,IAE7F,WACJx/B,EAAQg+B,gBAAgB,eACxBxX,GAAaa,OAAOrnB,EAAS,YAAa6/B,IAC1CrZ,GAAaa,OAAOrnB,EAAS,UAAW8/B,IACxCtZ,GAAaa,OAAOrnB,EAAS,aAAc+/B,IAC3CvZ,GAAaa,OAAOrnB,EAAS,gBAAiB+/B,MAmBtD,SAASF,GAAchgC,GACnB,IAAI+6B,EAAU/6B,EAAE+6B,OACZpM,EAAWxvB,KAAKsgC,cAAc9Q,SAC9BxuB,EAAUwuB,EAAW8G,GAAQsF,EAAQpM,GAAYoM,EACrD,MAAK56B,GAAYhB,KAAKsgC,eAAiBhK,GAAQsF,EAAQ57B,KAAKsgC,cAAc7F,SAA1E,CAGA,IAAI/P,EAAS1pB,EAAQggC,wBACjBC,EAAUpgC,EAAEqgC,MAAQ1gC,SAAS2gC,KAAKC,WAClCC,EAAUxgC,EAAEygC,QAAW9gC,SAAS2gC,KAAKI,WAAa/gC,SAASghC,gBAC3DhhC,SAASghC,gBAAgBD,UAAY/gC,SAAS2gC,KAAKI,WACnDL,EAAQ16B,KAAK4L,IAAI5L,KAAK8G,IAAI2zB,EAAUvW,EAAO+W,MAAOj7B,KAAK8G,IAAI2zB,EAAUvW,EAAOgX,QAC5EJ,EAAQ96B,KAAK4L,IAAI5L,KAAK8G,IAAI+zB,EAAU3W,EAAOiX,KAAMn7B,KAAK8G,IAAI+zB,EAAU3W,EAAOkX,SAC3EC,EAASr7B,KAAKs7B,KAAKZ,EAAQA,EAAQI,EAAQA,GAC3CS,EAAoB,EAATF,EAAa,KACxB1hB,EAAI8gB,EAAUvW,EAAO+W,KAAOI,EAC5BxsB,EAAIgsB,EAAU3W,EAAOiX,IAAME,EAC3B7hC,KAAKsgC,eAAiBtgC,KAAKsgC,cAAcI,iBACzCvgB,EAAI,EACJ9K,EAAI,EACJ0sB,EAAW,QAEf/gC,EAAQyzB,UAAU9M,IAAI,YACtB,IAGIqa,EAAgB7gC,GAAc,MAAO,CAAE0rB,UAAW,mBAAoB0F,OAF7D,UAAYwP,EAAW,YAAcA,EAAW,UAAY5hB,EAAI,WAAa9K,EAA7E,2BADErV,KAAKsgC,cAAcb,SAASvzB,WAEF,QAEzClL,EAAQY,YAAYogC,GACpBtgC,OAAOugC,iBAAiBD,GAAeE,iBAAiB,WACxDF,EAAcxP,MAAM2P,UAAY,WAC5BnhC,IAAYhB,KAAKO,QACjBinB,GAAaG,IAAI3mB,EAAS,aAAc+/B,GAAoB,CAAExgC,OAAQP,KAAKO,OAAQ+/B,cAAetgC,KAAKsgC,iBAS/G,SAASQ,GAAgBjgC,GACrBuhC,GAAavhC,EAAGb,MAQpB,SAAS+gC,GAAmBlgC,GACxBuhC,GAAavhC,EAAGb,MASpB,SAASoiC,GAAavhC,EAAG6gB,GACrB,IAAI+d,EAAW/d,EAAU4e,cAAcb,SACnC7D,EAAU/6B,EAAE+6B,OACZpM,EAAW9N,EAAU4e,cAAc9Q,SACnCxuB,EAAUwuB,EAAW8G,GAAQsF,EAAQpM,GAAYoM,EACrD,GAAK56B,KAAYA,IAAsD,IAA3CA,EAAQ6rB,UAAU1uB,QAAQ,aAAtD,CAGA,IAAIkkC,EAAiBtS,GAAU,oBAAqB/uB,GAChDghC,EAAgBK,EAAeA,EAAexlC,OAAS,GACvDmlC,IACAA,EAAcxP,MAAM8P,QAAU,OAE9B5gB,EAAUnhB,SAAWS,GACrBwmB,GAAaa,OAAOrnB,EAAS,aAAc+/B,IAG/C3gC,YAAW,WACH4hC,GAAiBA,EAAcvhC,YAC/BuhC,EAAcvhC,WAAWk1B,YAAYqM,GAEpChhC,EAAQysB,uBAAuB,oBAAoB5wB,QACpDmE,EAAQyzB,UAAUpM,OAAO,YAEzB3G,EAAU6e,MACV7e,EAAU6e,KAAK1/B,KAEpB4+B,IAEA,IAAImB,IAAkB,ECvX7B,IC0BI2B,GDzBAC,GAA8B,WAC9B,SAASA,EAAajiC,GAClBP,KAAKyiC,cAAgB,GACrBziC,KAAKO,OAASA,EA8FlB,OArFAiiC,EAAatmC,UAAUwmC,OAAS,SAAUC,EAAiBC,GACvD,IAAIC,EAAYF,EAAgB9lC,OAChC,GAAkB,IAAdgmC,EAAJ,CAII7iC,KAAKyiC,cAAc5lC,QACnBmD,KAAK8iC,kBAAkBH,GAE3B,IAAK,IAAI/lC,EAAI,EAAGA,EAAIimC,EAAWjmC,IAE3B,IADA,IAAImmC,EAAOJ,EAAgB/lC,GAClBoB,EAAK,EAAGglC,EAAeJ,EAAY5kC,EAAKglC,EAAanmC,OAAQmB,IAAM,CACxE,IAAIilC,EAASD,EAAahlC,GACtBklC,EAAUH,EAAKI,OACnB,GAAIF,EAAO/mC,UAAUq9B,kBAAoBwJ,EAAKI,SAAWnjC,KAAKojC,eAAeF,GAAU,CACnF,IAAIG,EAAe1nC,EAAesnC,EAAQF,EAAK9iC,MAC3CqjC,EAAatjC,KAAKujC,cAAcL,GAChCH,EAAKS,WACLzmC,EAASumC,EAAYL,EAAQjjC,KAAKO,QAGlCxD,EAASumC,EAAYD,EAAcrjC,KAAKO,QAE5C,IAAIkjC,EAAeV,EACnBU,EAAaN,OAASG,EACtBtjC,KAAKyiC,cAAc7pB,KAAK6qB,UAtBhCzjC,KAAK0jC,SA+BblB,EAAatmC,UAAUwnC,MAAQ,WAC3B,IAAK,IAAI1lC,EAAK,EAAG80B,EAAK9yB,KAAKyiC,cAAezkC,EAAK80B,EAAGj2B,OAAQmB,IAAM,CAC5D,IAAI2lC,EAAU7Q,EAAG90B,GACZ2lC,EAAQH,YACTnnC,EAASsnC,EAAQR,OAAQnjC,KAAKO,QAAQ4Z,UAG9Cna,KAAKyiC,cAAgB,IAOzBD,EAAatmC,UAAU4mC,kBAAoB,SAAUF,GAMjD,IALA,IAAI7iC,EAAQC,KACR4jC,EAAchB,EAAWl/B,KAAI,SAAUmgC,GAAO,OAAO9jC,EAAMwjC,cAAcM,EAAIV,WAIxEnlC,EAAK,EAAG8lC,EAHK9jC,KAAKyiC,cAAc/S,QAAO,SAAUuT,GACtD,OAA+C,IAAxCW,EAAYzlC,QAAQ8kC,EAAOE,WAEgBnlC,EAAK8lC,EAAkBjnC,OAAQmB,IAAM,CACvF,IAAI+lC,EAAMD,EAAkB9lC,GACvB+lC,EAAIP,YACLnnC,EAAS0nC,EAAIZ,OAAQnjC,KAAKO,QAAQ4Z,UAEtCna,KAAKyiC,cAAc3pB,OAAO9Y,KAAKyiC,cAActkC,QAAQ4lC,GAAM,GAC3D1mC,EAAa2C,KAAKO,OAAQwjC,EAAIZ,UAQtCX,EAAatmC,UAAUqnC,cAAgB,SAAUnqB,GAC7C,OAAOA,EAAK,GAAG5C,cAAgB4C,EAAKjN,UAAU,GAlFlC,UAyFhBq2B,EAAatmC,UAAUknC,eAAiB,SAAUF,GAC9C,IAAK,IAAIllC,EAAK,EAAG80B,EAAK9yB,KAAKyiC,cAAezkC,EAAK80B,EAAGj2B,OAAQmB,IAAM,CAE5D,GADU80B,EAAG90B,GACLmlC,SAAWnjC,KAAKujC,cAAcL,GAClC,OAAO,EAGf,OAAO,GAEJV,EAjGuB,GEC9BwB,GAA+B,WAC/B,SAASA,EAAczjC,EAAQksB,EAAUmN,EAAcv7B,GACnD2B,KAAKg3B,sBAAuB,EAC5Bh3B,KAAKqyB,WAAa,GAClBryB,KAAKm3B,kBAAoB,GACzBn3B,KAAKy3B,uBAAyB,GAC9Bz3B,KAAKo3B,cAAgB,GAErBp3B,KAAKw3B,YAAc,aACnBx3B,KAAKk4B,kBAAoB77B,EAAS,oBAAqBy6B,IACvD92B,KAAKikC,UAAY1jC,EACjBP,KAAK06B,cAAgB16B,KAAKikC,UAAUvJ,eAAiB16B,KAAKikC,UAC1DjkC,KAAKysB,SAAWA,EAChBzsB,KAAKkkC,cAAgB7lC,EACrB2B,KAAK43B,cAAcgC,GAAc,GAgJrC,OAxIAoK,EAAc9nC,UAAUioC,aAAe,SAAUjgC,EAAKuoB,IACtC,IAARvoB,EACAlE,KAAKikC,UAAUxM,uBAAuBhL,GAAYvoB,SAG3ClE,KAAKikC,UAAUxM,uBAAuBhL,GAE7CzsB,KAAKikC,UAAUE,cACfnkC,KAAKikC,UAAUE,aAAajgC,EAAKlE,KAAKikC,UAAUxX,WAMxDuX,EAAc9nC,UAAUkoC,cAAgB,WACpC,GAAIpkC,KAAKikC,UAAUG,cACfpkC,KAAKikC,UAAUzM,cACfx3B,KAAKikC,UAAUG,oBAEd,CACD,IAAIC,EAAejkC,WAAWJ,KAAKikC,UAAUjM,SAAS77B,KAAK6D,KAAKikC,YAIhEjkC,KAAKw3B,YAHa,WACdr3B,aAAakkC,MAQzBL,EAAc9nC,UAAUi8B,aAAe,WACnCn4B,KAAKw3B,cACLx3B,KAAKmkC,cAAa,EAAOnkC,KAAKysB,UAC9BzsB,KAAKo3B,cAAgB,GACrBp3B,KAAKm3B,kBAAoB,IAQ7B6M,EAAc9nC,UAAU07B,cAAgB,SAAUx0B,EAAM00B,IAC/B,IAAjBA,GACAn6B,EAAMqC,KAAMoD,GACZpD,KAAKmkC,cAAa,EAAOnkC,KAAKysB,UAC9BzsB,KAAKm4B,gBAGLx6B,EAAMqC,KAAMoD,IAMpB4gC,EAAc9nC,UAAU87B,SAAW,WAE/B,GADAh4B,KAAKk4B,kBAAkBl4B,KAAKy3B,uBAAwBz3B,MAChDA,KAAKkkC,cAAe,CACpB,IAAII,EAAWtkC,KAAKikC,UAAUjkC,KAAKysB,UAAUtuB,QAAQ6B,MACjD9B,OAAOjB,KAAK+C,KAAKm3B,mBAAmBt6B,SACpCE,EAASiD,KAAKysB,SAAW,IAAM6X,EAAUtkC,KAAKm3B,kBAAmBn3B,KAAKikC,UAAU9M,mBAChFp6B,EAASiD,KAAKysB,SAAW,IAAM6X,EAAUtkC,KAAKo3B,cAAep3B,KAAKikC,UAAU7M,qBAIhFp3B,KAAKikC,UAAU9M,kBAAkBn3B,KAAKysB,UAAYzsB,KAAKm3B,kBACvDn3B,KAAKikC,UAAU7M,cAAcp3B,KAAKysB,UAAYzsB,KAAKo3B,cAEvDp3B,KAAKm4B,gBAST6L,EAAc9nC,UAAUu8B,YAAc,SAAUz7B,EAAK07B,EAAUC,EAAU4L,GACjEvkC,KAAK06B,cAAcxD,sBAGlBqN,GACDvkC,KAAKi4B,eAAej7B,EAAK07B,GAAU,GAEvC14B,KAAKo3B,cAAcp6B,GAAO27B,EAC1B34B,KAAKm3B,kBAAkBn6B,GAAO07B,EAC9B14B,KAAKmkC,cAAa,EAAMnkC,KAAKysB,UAC7BzsB,KAAKw3B,cACLx3B,KAAKokC,kBAETJ,EAAc9nC,UAAU+7B,eAAiB,SAAUj7B,EAAKR,EAAOgoC,EAAeC,GAC1E,GAAInlC,MAAeU,KAAKikC,UAAUjN,qBAAsB,CAEpD,IAAIhD,EACAqE,EAAa,GACbqM,EAAYF,EAAgBxkC,KAAKm7B,cAAa,GAAQ,IAAMn+B,EAAMA,EAEtE,IAAgC,IAA5B0nC,EAAUvmC,QAAQ,KAAa,CAC/B,IAAIwmC,EAAcD,EAAU/nC,MAAM,KAClCq3B,EAAWqE,EACX,IAAK,IAAIz7B,EAAI,EAAGA,EAAI+nC,EAAY9nC,OAAQD,IAAK,CACzC,IAAIgoC,EAAUhoC,IAAM+nC,EAAY9nC,OAAS,EACzCm3B,EAAS2Q,EAAY/nC,IAAMgoC,EAAUpoC,EAAQ,GAC7Cw3B,EAAW4Q,EAAU5Q,EAAWA,EAAS2Q,EAAY/nC,UAIzDy7B,EAAWqM,GAAa,GACxB1Q,EAAWqE,EAAWqM,GACtBrM,EAAWqM,GAAW1nC,GAAOR,EAGjC,GAAIwD,KAAKkkC,cAAe,CAEpBlQ,EAAQ,UAAmByQ,GAAkB,OAEjDzkC,KAAK06B,cAAczC,eAAeI,KAG1C2L,EAAc9nC,UAAUi/B,aAAe,SAAUqJ,GAE7C,IAAIhrB,EAAQ,GACRiT,EAAWzsB,KAAKysB,SAEpB,GAAIzsB,KAAKkkC,cAAe,CACpB1qB,EAAQxZ,KAAKikC,UAAUjkC,KAAKysB,UAAUtuB,QAAQ6B,MAC9C,IAAI6kC,EAAc7kC,KAAKikC,UAAUjkC,KAAKysB,UAAU5vB,OAChDgoC,EAAcL,EAAgBK,EAAeA,EAAc,EAAIA,EAAc,EAAI,EAEjFpY,GADAjT,GAAmB,IAAXA,EAAe,IAAMA,EAAQ,IAAMqrB,EAM/C,OAHI7kC,KAAK06B,gBAAkB16B,KAAKikC,YAC5BxX,EAAWzsB,KAAKikC,UAAU9I,eAAiB,IAAMn7B,KAAKysB,SAAWjT,GAE9DiT,GAEJuX,EA9JwB,GDN/BhH,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQ5+B,EAAKwgC,GAC7E,IAA2H12B,EAAvHD,EAAIjI,UAAU/B,OAAQ4gC,EAAI52B,EAAI,EAAI+0B,EAAkB,OAAT4B,EAAgBA,EAAOt/B,OAAOw/B,yBAAyB9B,EAAQ5+B,GAAOwgC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQ5+B,EAAKwgC,QACpH,IAAK,IAAI5gC,EAAI2gC,EAAW1gC,OAAS,EAAGD,GAAK,EAAGA,KAASkK,EAAIy2B,EAAW3gC,MAAI6gC,GAAK52B,EAAI,EAAIC,EAAE22B,GAAK52B,EAAI,EAAIC,EAAE80B,EAAQ5+B,EAAKygC,GAAK32B,EAAE80B,EAAQ5+B,KAASygC,GAChJ,OAAO52B,EAAI,GAAK42B,GAAKv/B,OAAOooB,eAAesV,EAAQ5+B,EAAKygC,GAAIA,GAY5DqH,GAAiB,EAEjBC,GAAiB,EACVC,IAA+B,EAa1C,IAAIC,GAA2B,SAAUnH,GAKrC,SAASmH,EAAU55B,EAASmkB,GACxB,IAAIzvB,EAAQ+9B,EAAOx8B,KAAKtB,KAAMqL,EAASmkB,IAAaxvB,KAsBpD,OArBAD,EAAMmlC,SrBsXP,WAEH,GAAwB,qBAAZxjC,OAAZ,CAIA,IAAIuU,EAAM,IAAI4iB,YAAY,GAE1B,OADgBn3B,OAAOo3B,UAAYp3B,OAAOq3B,QACzBC,gBAAgB/iB,IqB9XZkvB,GAKjBplC,EAAM4sB,kBAAmB,EACzB5sB,EAAMqlC,SAAU,EAChBrlC,EAAMslC,eAAgB,EAClBjoC,EAAkB2C,EAAMulC,YACxBvlC,EAAM63B,cAAc,CAAE,UAAatd,IAAe,GAElDld,EAAkB2C,EAAMwlC,SACxBxlC,EAAM63B,cAAc,CAAE,OAAUpd,IAAkB,GAEtDza,EAAMylC,aAAe,IAAIhD,GAAaziC,GACtCA,EAAM0lC,cAAgB,IAAIxtB,EAASlY,GAEnCsa,EAAahC,GAAG,uBAAwBtY,EAAM2lC,eAAgB3lC,EAAOA,EAAMmlC,UACtEpoC,EAAY0yB,IACbzvB,EAAM4lC,WAEH5lC,EA6WX,OAxYAi9B,GAAUiI,EAAWnH,GA6BrBmH,EAAU/oC,UAAUymC,gBAAkB,WAClC,MAAO,IAMXsC,EAAU/oC,UAAUie,QAAU,WACtBna,KAAK63B,cAGL73B,KAAK4lC,mBACL5lC,KAAK6lC,iBAET7lC,KAAKylC,cAActrB,UACfna,KAAKs3B,aAGTzC,GAAY,CAAC70B,KAAKgB,SAAU,CAAC,cAC7BhB,KAAK2oB,QAAQ,YAAa,CAAEhH,QAAQ,IACpCmc,EAAO5hC,UAAUie,QAAQ7Y,KAAKtB,MAC9BA,KAAKwlC,aAAa9B,QAClBrpB,EAAaxB,IAAI,uBAAwB7Y,KAAK0lC,eAAgB1lC,KAAKklC,aAKvED,EAAU/oC,UAAU4pC,QAAU,WAC1B9lC,KAAKs3B,YAAa,EAClBt3B,KAAKwlC,aAAa9B,QAClB1jC,KAAKma,UACLna,KAAKm4B,eACLn4B,KAAKylC,cAAgB,IAAIxtB,EAASjY,MAClCA,KAAK+lC,YACL/lC,KAAKgmC,gBACLhmC,KAAKkuB,SACLluB,KAAKs3B,YAAa,GAGtB2N,EAAU/oC,UAAU+pC,YAAc,WAC1BjmC,KAAKkmC,QAAUlmC,KAAKqlC,eACpBrlC,KAAKkmC,SAObjB,EAAU/oC,UAAUiqC,eAAiB,WACjC,OAAInmC,KAAKqlC,cACErlC,KAAKomC,cAGLpmC,KAAKgB,SAQpBikC,EAAU/oC,UAAUmqC,aAAe,WAC/B,IAAIC,EAAQtmC,KAAKu5B,gBAAkBv5B,KAAKgB,QAAQwX,GAChD,OAAIwsB,GACOtjC,OAAO6kC,aAAaC,QAAQF,EAAQtmC,KAAKymC,4BAGzC/kC,OAAO6kC,aAAaC,QAAQF,IAO3CrB,EAAU/oC,UAAUypC,SAAW,SAAUnW,GAOrC,GANKpyB,EAAkBoyB,IAAmC,kBAAdA,EAGlCpyB,EAAkBoyB,KACxBxvB,KAAKgB,QAAUwuB,GAHfxvB,KAAKgB,QAAU60B,GAAOrG,EAAUhvB,WAK/BpD,EAAkB4C,KAAKgB,SAAU,CAClC,IAAIs4B,EAAc,KAAOt5B,KAAKu5B,gBAAgB/iB,cAC9C8d,GAAS,CAACt0B,KAAKgB,SAAU,CAAC,YAAas4B,IACvCt5B,KAAKk3B,qBAAsB,EACvBl3B,KAAKolC,UAAYplC,KAAKgB,QAAQwX,KAC9BxY,KAAKgB,QAAQwX,GAAKxY,KAAKP,YAAYO,KAAKu5B,kBAExCv5B,KAAK4lC,oBACL5lC,KAAK0mC,mBACLhlC,OAAOymB,iBAAiB,SAAUnoB,KAAK6lC,eAAe1pC,KAAK6D,QAE/D,IAAIi6B,EAAO59B,EAAS,gBAAiB2D,KAAKgB,SACrCi5B,IAAgC,IAAxBA,EAAK97B,QAAQ6B,OACtB89B,EAAO5hC,UAAUy7B,YAAYr2B,KAAKtB,MAEtCA,KAAK+lC,YACL/lC,KAAKgmC,gBACLhmC,KAAKkuB,SACAluB,KAAKkmC,MAINlmC,KAAKimC,cAHLjmC,KAAK2oB,QAAQ,aAUzBsc,EAAU/oC,UAAUyqC,eAAiB,SAAUC,GAC3C,GAAItnC,IAAY,CAGZoC,OAAM,SAAWilC,eAAe3mC,KAAKgB,QAAS4lC,GAElD5mC,KAAK+2B,YAAa,GAKtBkO,EAAU/oC,UAAU87B,SAAW,WAC3Bh4B,KAAKgmC,gBACLlI,EAAO5hC,UAAU87B,SAAS12B,KAAKtB,OAYnCilC,EAAU/oC,UAAUmc,GAAK,SAAUqN,EAAOnN,EAASL,GAC/C,GAAqB,kBAAVwN,EACP1lB,KAAKylC,cAAcptB,GAAGqN,EAAOnN,EAASL,QAGtC,IAAK,IAAIla,EAAK,EAAG8qB,EAAUpD,EAAO1nB,EAAK8qB,EAAQjsB,OAAQmB,IAAM,CACzD,IAAI6lC,EAAM/a,EAAQ9qB,GAClBgC,KAAKylC,cAAcptB,GAAGwrB,EAAIne,MAAOme,EAAItrB,QAASsrB,EAAI3rB,WAW9D+sB,EAAU/oC,UAAU2c,IAAM,SAAU6M,EAAOnN,GACvC,GAAqB,kBAAVmN,EACP1lB,KAAKylC,cAAc5sB,IAAI6M,EAAOnN,QAG9B,IAAK,IAAIva,EAAK,EAAG6oC,EAAUnhB,EAAO1nB,EAAK6oC,EAAQhqC,OAAQmB,IAAM,CACzD,IAAI6lC,EAAMgD,EAAQ7oC,GAClBgC,KAAKylC,cAAc5sB,IAAIgrB,EAAIne,MAAOme,EAAItrB,WAWlD0sB,EAAU/oC,UAAU8c,OAAS,SAAUV,EAAUW,IACpB,IAArBjZ,KAAK63B,aACL73B,KAAKylC,cAAczsB,OAAOV,EAAUW,IAO5CgsB,EAAU/oC,UAAU4qC,mBAAqB,WACrC,OAAO9mC,KAAK+mC,iBAMhB9B,EAAU+B,OAAS,WAEf,IADA,IAAIpE,EAAa,GACR5kC,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpC4kC,EAAW5kC,GAAMY,UAAUZ,GAE1BgC,KAAK9D,UAAU6qC,kBAChB/mC,KAAK9D,UAAU6qC,gBAAkB,IAErC,IAAK,IAAInqC,EAAI,EAAGA,EAAIgmC,EAAW/lC,OAAQD,KAC4B,IAA3DoD,KAAK9D,UAAU6qC,gBAAgB5oC,QAAQykC,EAAWhmC,KAClDoD,KAAK9D,UAAU6qC,gBAAgBnuB,KAAKgqB,EAAWhmC,KAU3DqoC,EAAU/oC,UAAUiF,cAAgB,SAAUqtB,EAASprB,EAAM6jC,GACzD,OAAIA,GAAUjnC,KAAKqlC,eACXjiC,IACAA,EAAO,IAEXA,EAAK,WAAa+oB,KACX6B,GAAW7sB,cAAcqtB,EAASprB,IAGlCjC,GAAcqtB,EAASprB,IAWtC6hC,EAAU/oC,UAAUgrC,mBAAqB,SAAU3uB,EAASU,GACpDjZ,KAAKqlC,gBAELrlC,KAAKmnC,WACLnnC,KAAKonC,eAAiB,CAAEC,MAAO9uB,EAAStY,KAAMgZ,KAItDgsB,EAAU/oC,UAAU8pC,cAAgB,WAC5BhmC,KAAK+mC,iBAAmB/mC,KAAK+mC,gBAAgBlqC,QAC7CmD,KAAKwlC,aAAa9C,OAAO1iC,KAAK2iC,kBAAmB3iC,KAAK+mC,kBAG9D9B,EAAU/oC,UAAUwpC,eAAiB,SAAUzlC,GAC3C,IAAImD,EAAOlF,OAAOjB,KAAKgD,GACnBmD,EAAKvG,SACLmD,KAAKoD,EAAK,IAAMnD,EAAKmD,EAAK,MAGlC6hC,EAAU/oC,UAAUwqC,iBAAmB,WACnC,IAAI7sB,EAOEzc,EALFyc,EADAmrB,GACOtjC,OAAO6kC,aAAaC,QAAQxmC,KAAKu5B,gBAAkBv5B,KAAKgB,QAAQwX,GAAKxY,KAAKymC,4BAG1E/kC,OAAO6kC,aAAaC,QAAQxmC,KAAKu5B,gBAAkBv5B,KAAKgB,QAAQwX,MAEhC,KAATqB,GAC9B7Z,KAAK43B,cAAc7d,KAAKC,MAAMH,IAAO,IAG7CorB,EAAU/oC,UAAU2pC,eAAiB,WAC5B7lC,KAAK63B,cACFmN,GACAtjC,OAAO6kC,aAAae,QAAQtnC,KAAKu5B,gBAAkBv5B,KAAKgB,QAAQwX,GAAKxY,KAAKymC,2BAA4BzmC,KAAKunC,kBAG3G7lC,OAAO6kC,aAAae,QAAQtnC,KAAKu5B,gBAAkBv5B,KAAKgB,QAAQwX,GAAIxY,KAAKunC,oBAKrFtC,EAAU/oC,UAAUsrC,qBAAuB,aAI3CvC,EAAU/oC,UAAUurC,cAAgB,SAAUza,EAAcxT,KAG5DyrB,EAAU/oC,UAAUuD,YAAc,SAAUC,GAMxC,OALIM,KAAK0nC,qBACL5C,GAAiB,GAErBvC,GAAaviC,KAAK2nC,OAAOC,SAASC,MAClC9C,GAAiB+C,QAAQjrC,OAClB6C,EAAc,IAAM6iC,GAAa,IAAMuC,MAElDG,EAAU/oC,UAAUyrC,OAAS,SAAUnmB,GACnC,IAAIumB,EAAO,EACX,GAAmB,IAAfvmB,EAAI3kB,OACJ,OAAOkrC,EAEX,IAAK,IAAInrC,EAAI,EAAGA,EAAI4kB,EAAI3kB,OAAQD,IAAK,CAEjCmrC,GAASA,GAAQ,GAAKA,EADXvmB,EAAIwmB,WAAWprC,GAE1BmrC,GAAcA,EAElB,OAAOvhC,KAAK8G,IAAIy6B,IAEpB9C,EAAU/oC,UAAUwrC,iBAAmB,WACnC,OAAOnF,KAAeviC,KAAK2nC,OAAOC,SAASC,OAAS9C,KAAmB+C,QAAQjrC,QAEnFooC,EAAU/oC,UAAU+rC,aAAe,SAAU58B,GAGzC,IAFA,IAAItL,EAAQC,KACRkoC,EAAa,GACRlqC,EAAK,EAAGwhB,EAAYnU,EAASrN,EAAKwhB,EAAU3iB,OAAQmB,IAAM,CAC/D,IACImqC,EADAnrC,EAAMwiB,EAAUxhB,GAGflB,EADLqrC,EAAW9rC,EAASW,EAAKgD,QAErBjD,EAASC,EAAKgD,KAAKooC,oBAAoBD,GAAWD,GAG1D,OAAOnuB,KAAKsuB,UAAUH,GAAY,SAAUlrC,EAAKR,GAC7C,OAAOuD,EAAMqoC,oBAAoB5rC,OAGzCyoC,EAAU/oC,UAAUksC,oBAAsB,SAAU7rC,GAChD,OAAIA,aAAeynC,GACR3nC,EAAS,aAAcE,GAGvBA,GAGf0oC,EAAU/oC,UAAUosC,gBAAkB,SAAUj9B,GAC5C,OAAO0O,KAAKsuB,UAAUroC,KAAKuoC,sBAAsBvoC,KAAKqyB,WAAYhnB,KAEtE45B,EAAU/oC,UAAUqsC,sBAAwB,SAAUhsC,EAAKmvB,GAoBvD,IAnBA,IAAI8c,EAAS,GACT3pC,EAAU,SAAU7B,GACpB,IAAiC,IAA7B0uB,EAAWvtB,QAAQnB,GAAa,CAEhC,IAAIR,EAAQD,EAAIS,GAChB,GAAqB,kBAAVR,GAAwBA,aAAiB4B,MAShDoqC,EAAOxrC,GAAOR,MAT0C,CACxD,IAAIisC,EAAU/c,EAAWgE,QAAO,SAAU/rB,GACtC,OAAO,IAAIE,OAAO7G,EAAM,KAAK2M,KAAKhG,MACnCD,KAAI,SAAUC,GACb,OAAOA,EAAIjH,QAAQM,EAAM,IAAK,OAElCwrC,EAAOxrC,GAAO0rC,EAAOH,sBAAsBG,EAAON,oBAAoB5rC,GAAQisC,MAOtFC,EAAS1oC,KACJhC,EAAK,EAAG80B,EAAK50B,OAAOjB,KAAKV,GAAMyB,EAAK80B,EAAGj2B,OAAQmB,IAAM,CAE1Da,EADUi0B,EAAG90B,IAGjB,OAAOwqC,GAEXlL,GAAW,CACP3B,IAAS,IACVsJ,EAAU/oC,UAAW,yBAAqB,GAC7CohC,GAAW,CACP3B,MACDsJ,EAAU/oC,UAAW,iBAAa,GACrCohC,GAAW,CACP3B,MACDsJ,EAAU/oC,UAAW,cAAU,GAClC+oC,EAAY3H,GAAW,CACnBjB,IACD4I,GAxYwB,CA0Y7BnO,IAKwB,qBAAXp1B,QACPA,OAAOymB,iBAAiB,YAExB,WACI2c,GAAiB,KEhc7B,IAAI9H,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQ5+B,EAAKwgC,GAC7E,IAA2H12B,EAAvHD,EAAIjI,UAAU/B,OAAQ4gC,EAAI52B,EAAI,EAAI+0B,EAAkB,OAAT4B,EAAgBA,EAAOt/B,OAAOw/B,yBAAyB9B,EAAQ5+B,GAAOwgC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQ5+B,EAAKwgC,QACpH,IAAK,IAAI5gC,EAAI2gC,EAAW1gC,OAAS,EAAGD,GAAK,EAAGA,KAASkK,EAAIy2B,EAAW3gC,MAAI6gC,GAAK52B,EAAI,EAAIC,EAAE22B,GAAK52B,EAAI,EAAIC,EAAE80B,EAAQ5+B,EAAKygC,GAAK32B,EAAE80B,EAAQ5+B,KAASygC,GAChJ,OAAO52B,EAAI,GAAK42B,GAAKv/B,OAAOooB,eAAesV,EAAQ5+B,EAAKygC,GAAIA,GAU5DkL,GAAkB,CAAElH,KAAM,EAAGE,IAAK,EAAGC,OAAQ,EAAGF,MAAO,GAIvDkH,GAAkB,CAAEC,WAAW,GAI/BC,GAA0B,SAAUhL,GAEpC,SAASgL,IACL,OAAkB,OAAXhL,GAAmBA,EAAO1hC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAg9B,GAAU8L,EAAUhL,GAIpBR,GAAW,CACP3B,GAAS,IACVmN,EAAS5sC,UAAW,YAAQ,GAC/BohC,GAAW,CACP3B,GAAS,IACVmN,EAAS5sC,UAAW,WAAO,GACvB4sC,EAXmB,CAY5B9E,IAkBE+E,GAA2B,SAAUjL,GAErC,SAASiL,EAAU/nC,EAASqK,GACxB,IAAItL,EAAQ+9B,EAAOx8B,KAAKtB,KAAMqL,EAASrK,IAAYhB,KAgBnD,OAfAD,EAAMipC,UAAYC,EAAYC,qBAC9BnpC,EAAMopC,YAAcF,EAAYC,qBAChCnpC,EAAMqpC,QAAUH,EAAYC,qBAC5BnpC,EAAMspC,MAAQ,EACdtpC,EAAMupC,SAAW,EACjBvpC,EAAMwpC,QAAU,EAChBxpC,EAAMypC,oBAAqB,EAE3BzpC,EAAM0pC,aAAe,EACrB1pC,EAAM2pC,oBAAqB,EAC3B3pC,EAAM4pC,MAAQ,EACd5pC,EAAM6pC,cAAgB,EACtB7pC,EAAM8pC,cAAgB,EACtB9pC,EAAM+pC,WAAa,GACnB/pC,EAAM5D,OACC4D,EAooBX,IAAIkpC,EAyEJ,OA/tBAjM,GAAU+L,EAAWjL,GAoBrBmL,EAAcF,EACdA,EAAU7sC,UAAUC,KAAO,WACvB6D,KAAK+pC,eACD9kB,GAAQiD,MACRoM,GAAS,CAACt0B,KAAKgB,SAAU,iBAE7BhB,KAAK8pC,WAAW9pC,KAAKgqC,OAAS,IAElCjB,EAAUG,mBAAqB,WAC3B,OAAO5qC,EAAO,GAAIqqC,KAEtBI,EAAU7sC,UAAU6tC,aAAe,SAAUE,GACzC,IAAIna,EACChzB,EAAYkD,KAAKkqC,UAClBpa,EAAM+F,GAAO71B,KAAKkqC,OAAQlqC,KAAKgB,UAEnC,IAAIuX,EAAWvY,KAAKmqC,eAAiBllB,GAAQa,UAAYb,GAAQY,QAAW7lB,KAAKoqC,iBAAmBpqC,KAAKqqC,WACrGJ,EACAziB,GAAaa,OAAOyH,GAAO9vB,KAAKgB,QAASikB,GAAQmC,gBAAiB7O,GAGlEiP,GAAaG,IAAImI,GAAO9vB,KAAKgB,QAASikB,GAAQmC,gBAAiB7O,EAASvY,OAIhF+oC,EAAU7sC,UAAUkuC,iBAAmB,SAAUE,GAC7C,IAAIvqC,EAAQC,KACR47B,EAAS0O,EAAIC,cACjBvqC,KAAKypC,aAAerpC,YAAW,WAC3BL,EAAM2pC,oBAAqB,EAC3B3pC,EAAMyqC,qBACNzqC,EAAMsqC,WAAWC,EAAK1O,KACvB57B,KAAKyqC,kBACRjjB,GAAaG,IAAInnB,SAAUykB,GAAQoC,eAAgBrnB,KAAKwqC,mBAAoBxqC,MAC5EwnB,GAAaG,IAAInnB,SAAUykB,GAAQqC,cAAetnB,KAAKwqC,mBAAoBxqC,OAG/E+oC,EAAU7sC,UAAUsuC,mBAAqB,WACrCrqC,aAAaH,KAAKypC,cAClBjiB,GAAaa,OAAO7nB,SAAUykB,GAAQoC,eAAgBrnB,KAAKwqC,oBAC3DhjB,GAAaa,OAAO7nB,SAAUykB,GAAQqC,cAAetnB,KAAKwqC,qBAG9DzB,EAAU7sC,UAAUwuC,oBAAsB,SAAU1pC,EAAS2pC,GAGzD,OAAIvtC,EAAkB4D,GACX,KAEPA,EALS,CAAE,SAAY,eAAgB,WAAc,eAKtC2pC,IAAS3pC,EAJf,CAAE,SAAY,eAAgB,WAAc,eAId2pC,MAC1B,aAATA,EAAsB3pC,EAAQugC,UAAY,EAAIvgC,EAAQogC,WAAa,IACtD,aAATuJ,GACA3qC,KAAK6pC,cAAgB7pC,KAAK6pC,eACE,IAAvB7pC,KAAK6pC,cAAsB7oC,EAAQugC,UAAYvgC,EAAQugC,UAAYvhC,KAAK6pC,eAC7E7pC,KAAK4qC,iBAAmB5pC,EAAQ6pC,eAGhC7qC,KAAK4pC,cAAgB5pC,KAAK4pC,eACE,IAAvB5pC,KAAK4pC,cAAsB5oC,EAAQogC,WAAapgC,EAAQogC,WAAaphC,KAAK4pC,eAC/E5pC,KAAK8qC,gBAAkB9pC,EAAQ+pC,aAE9B3tC,EAAkB4D,GAIZA,EAHAhB,KAAK0qC,oBAAoB1pC,EAAQP,WAAYkqC,IAWrD3qC,KAAK0qC,oBAAoB1pC,EAAQP,WAAYkqC,IAG5D5B,EAAU7sC,UAAU8uC,oBAAsB,WACtChrC,KAAK4pC,cAAgB,EACrB5pC,KAAK6pC,cAAgB,EACD7pC,KAAKgB,QAAQyzB,UAAU1D,SAAS,aAAe/wB,KAAKgB,QAAQyzB,UAAU1D,SAAS,eACxE/wB,KAAK0qC,oBAAoB1qC,KAAKgB,QAAQP,WAAY,YAChDT,KAAK0qC,oBAAoB1qC,KAAKgB,QAAQP,WAAY,eAEnFsoC,EAAU7sC,UAAUmuC,WAAa,SAAUC,EAAKW,GAE5C,GADAjrC,KAAKkrC,mBAAqBZ,EAAI1O,QAC1B57B,KAAKmrC,gBAAT,CASA,GALInrC,KAAKmrC,eAAc,GACnBnrC,KAAK0pC,oBAAqB,EAE9B1pC,KAAK47B,OAAU0O,EAAIC,eAAiBU,EACpCjrC,KAAKwpC,oBAAqB,EACtBxpC,KAAKorC,MAAO,CAEZ,IAAIC,EAAiBrrC,KAAKorC,MACI,kBAAnBC,IACPA,EAAiB,CAACA,IAEtB,IAAK,IAAIzuC,EAAI,EAAGA,EAAIyuC,EAAexuC,OAAQD,IACvC,IAAKQ,EAAkBk5B,GAAQgU,EAAI1O,OAAQyP,EAAezuC,KAKtD,YAHIoD,KAAKmrC,iBACLnrC,KAAKmrC,eAAc,IAM/BnrC,KAAKsrC,iBAAmBxuC,EAAYwtC,EAAIiB,iBAAgC,eAAbjB,EAAIpgC,MAC/DogC,EAAIgB,iBAERtrC,KAAKgB,QAAQqzB,aAAa,eAAgB,QAC1C,IAAImX,EAAWxrC,KAAKyrC,eAAenB,GAEnC,GADAtqC,KAAK0rC,gBAAkB,CAAEvrB,EAAGqrB,EAAStK,MAAO7rB,EAAGm2B,EAASlK,QACnDthC,KAAKf,MAAO,CACb,IAAIyV,EAAM1U,KAAKgB,QAAQggC,wBACvBhhC,KAAKgrC,sBACDV,EAAIqB,UAAYrB,EAAIpJ,QACpBlhC,KAAK4pC,cAAgB,GAErBU,EAAIsB,UAAYtB,EAAIhJ,QACpBthC,KAAK6pC,cAAgB,GAEzB7pC,KAAK6rC,kBAAoBL,EAAStK,OAASxsB,EAAI+sB,KAAOzhC,KAAK4pC,eAC3D5pC,KAAK8rC,kBAAoBN,EAASlK,OAAS5sB,EAAIitB,IAAM3hC,KAAK6pC,eAE1D7pC,KAAK0pC,mBACL1pC,KAAK+rC,aAAazB,IAGlB9iB,GAAaG,IAAInnB,SAAUykB,GAAQoC,eAAgBrnB,KAAK+rC,aAAc/rC,MACtEwnB,GAAaG,IAAInnB,SAAUykB,GAAQqC,cAAetnB,KAAKgsC,WAAYhsC,OAEvEA,KAAK+pC,cAAa,GACD,eAAbO,EAAIpgC,MAAyBlK,KAAKisC,iBAClCzrC,SAAS2gC,KAAK1M,UAAU9M,IAAI,oBAEhC3nB,KAAK0pC,oBAAqB,EAC1BliB,GAAamB,QAAQnoB,SAASghC,gBAAiBvc,GAAQmC,gBAAiBkjB,KAE5EvB,EAAU7sC,UAAU6vC,aAAe,SAAUzB,GACzCtqC,KAAKwqC,qBACL,IAAI0B,GAAiBpvC,EAAYwtC,EAAIiB,gBACrC,IAAIW,GAAgD,IAA9B5B,EAAIiB,eAAe1uC,OAAzC,CAGIqvC,GACA5B,EAAIgB,iBAER,IACI52B,EADAy3B,EAAensC,KAAKyrC,eAAenB,GAEnC8B,EAAYnK,iBAAiBjiC,KAAKgB,SACtChB,KAAKqsC,OAAS,CACV5K,KAAMvsB,SAASk3B,EAAUE,WAAY,IACrC3K,IAAKzsB,SAASk3B,EAAUG,UAAW,IACnC7K,MAAOxsB,SAASk3B,EAAUI,YAAa,IACvC5K,OAAQ1sB,SAASk3B,EAAUK,aAAc,KAE7C,IAAIzrC,EAAUhB,KAAKgB,QACnB,GAAIhB,KAAKf,OAASe,KAAK0sC,WAAY,CAC/B,IAAIC,EAAarW,GAAQgU,EAAI1O,OAAQ57B,KAAK0sC,YACrCtvC,EAAkBuvC,KACnB3rC,EAAU2rC,GAId3sC,KAAK4sC,mBACL5rC,EAAUhB,KAAK6sC,kBAAkBvC,EAAI1O,OAAQ56B,IAEjDhB,KAAK0qB,OAAS1qB,KAAK8sC,wBAAwB9rC,GAC3ChB,KAAK+sC,SAAW/sC,KAAKgtC,iBAAiB1C,EAAKtqC,KAAKitC,cAChD,IAAI9sB,EAAIngB,KAAK0rC,gBAAgBvrB,EAAIgsB,EAAajL,MAC1C7rB,EAAIrV,KAAK0rC,gBAAgBr2B,EAAI82B,EAAa7K,MAE9C,GADe96B,KAAKs7B,KAAM3hB,EAAIA,EAAM9K,EAAIA,IACvBrV,KAAKktC,UAAYltC,KAAK0pC,mBAAqB,CACxD,IAAI5Z,EAAM9vB,KAAKmtC,iBAAiB7C,GAChC,IAAKxa,GAAO1yB,EAAkB0yB,GAC1B,OAEJ,IAAIsd,EAAoBptC,KAAKqtC,cAAgBvd,EAE7C,GADA9vB,KAAKstC,iBAAmBttC,KAAK8sC,wBAAwBM,EAAkBG,cACnEvtC,KAAKwtC,UAAW,CAChB,IACIvtC,EAAO,CACPylB,MAAO4kB,EACPtpC,QAASA,EACT46B,OAJY57B,KAAKytC,uBAAuBnD,GAKxCoD,WAAYpuC,IAAaU,KAAK2tC,eAAexxC,KAAK6D,MAAQ,KAC1D4tC,YAAaR,GAEjBptC,KAAK2oB,QAAQ,YAAa1oB,GAE1BD,KAAK6tC,SACL7tC,KAAK8tC,eAGL9tC,KAAKgpC,UAAY,CAAEvH,KAAM,EAAGC,MAAO,EAAGE,OAAQ,EAAGD,IAAK,GACtD3hC,KAAKmpC,YAAc,CAAExH,IAAK,EAAGF,KAAM,IAEvC/sB,EAAM,CAAE+sB,KAAMzhC,KAAK+sC,SAAStL,KAAOzhC,KAAKstC,iBAAiB7L,KAAME,IAAK3hC,KAAK+sC,SAASpL,IAAM3hC,KAAKstC,iBAAiB3L,KAC1G3hC,KAAKf,QAAUe,KAAK+tC,iBACpB/tC,KAAKqpC,MAAQrpC,KAAK+sC,SAAStL,KAAOzhC,KAAK0qB,OAAO+W,KAC9CzhC,KAAK2pC,MAAQ3pC,KAAK+sC,SAASpL,IAAM3hC,KAAK0qB,OAAOiX,KAEjD3hC,KAAKgrC,sBAEL,IAAIzY,EAAS0P,iBAAiBjhC,GAC1BurC,EAAYz0B,WAAWya,EAAOga,WAE9BvsC,KAAKf,OAAuB,IAAdstC,IACd73B,EAAIitB,KAAO4K,GAEf,IAAIyB,EAAWhuC,KAAKiuC,0BAA0B,CAC1CtM,IAAMjtB,EAAIitB,IAAM3hC,KAAK2pC,MAAS,KAC9BlI,KAAO/sB,EAAI+sB,KAAOzhC,KAAKqpC,MAAS,OAEpCrpC,KAAKkuC,gBAAkB,CAAEvM,IAAKjtB,EAAIitB,IAAKF,KAAM/sB,EAAI+sB,MACjDvN,GAAkBkZ,EAAmBptC,KAAKmuC,gBAAgB,CAAEpB,SAAU,WAAYtL,KAAMuM,EAASvM,KAAME,IAAKqM,EAASrM,OACrHna,GAAaa,OAAO7nB,SAAUykB,GAAQoC,eAAgBrnB,KAAK+rC,cAC3DvkB,GAAaa,OAAO7nB,SAAUykB,GAAQqC,cAAetnB,KAAKgsC,YACrD1sC,KACDU,KAAK2tC,eAAeP,MAIhCrE,EAAU7sC,UAAUyxC,eAAiB,SAAUP,GACvCpY,GAAUoY,IACV5lB,GAAaG,IAAInnB,SAAUykB,GAAQoC,eAAgBrnB,KAAKouC,QAASpuC,MACjEwnB,GAAaG,IAAInnB,SAAUykB,GAAQqC,cAAetnB,KAAKquC,YAAaruC,MACpEA,KAAKsuC,qBAAoB,EAAOtuC,KAAKgB,QAASosC,KAG9CptC,KAAK+pC,eACLvpC,SAAS2gC,KAAK1M,UAAUpM,OAAO,sBAGvC0gB,EAAU7sC,UAAUqyC,kBAAoB,SAAUhY,GAK9C,IAJAv2B,KAAK2hC,IAAMpL,EAAGiY,UACdxuC,KAAKyhC,KAAOlL,EAAGkY,WACfzuC,KAAK0uC,MAAQnY,EAAGrB,YAChBl1B,KAAK2uC,OAASpY,EAAGqY,aACVrY,EAAGgX,cACNhX,EAAKA,EAAGgX,aACRvtC,KAAK2hC,KAAOpL,EAAGiY,UACfxuC,KAAKyhC,MAAQlL,EAAGkY,WAEpB,OAAQzuC,KAAK2hC,KAAOjgC,OAAOmtC,aACvB7uC,KAAKyhC,MAAQ//B,OAAOotC,aACnB9uC,KAAK2hC,IAAM3hC,KAAK2uC,QAAYjtC,OAAOmtC,YAAcntC,OAAOqtC,aACxD/uC,KAAKyhC,KAAOzhC,KAAK0uC,OAAWhtC,OAAOotC,YAAcptC,OAAOstC,YAEjEjG,EAAU7sC,UAAU+xC,0BAA4B,SAAUzxC,GACtD,OAAIwD,KAAKivC,kBACEjvC,KAAKivC,kBAAkBzyC,GAE3BA,GAEXusC,EAAU7sC,UAAU4wC,wBAA0B,SAAUhd,GACpD,GAAI1yB,EAAkB0yB,GAClB,MAAO,CAAE2R,KAAM,EAAGE,IAAK,GAE3B,IAAIuN,EAAOpf,EAAIkR,wBACXxO,EAAQyP,iBAAiBnS,GAC7B,MAAO,CACH2R,KAAOyN,EAAKzN,KAAO//B,OAAOotC,YAAe55B,SAASsd,EAAM8Z,WAAY,IACpE3K,IAAMuN,EAAKvN,IAAMjgC,OAAOmtC,YAAe35B,SAASsd,EAAM+Z,UAAW,MAIzExD,EAAU7sC,UAAUkyC,QAAU,SAAU9D,GACpC,GAAKxtC,EAAYwtC,EAAIiB,iBAAkD,IAA9BjB,EAAIiB,eAAe1uC,OAA5D,CAGA,IAAI4kC,EACAE,EACJ3hC,KAAK+sC,SAAW/sC,KAAKgtC,iBAAiB1C,EAAKtqC,KAAKitC,cAChD,IAAIkC,EAAYnvC,KAAKovC,uBAAuB,UACxCD,EAAYnvC,KAAK+sC,SAASpL,MAC1B3hC,KAAK+sC,SAASpL,IAAMwN,GAExB,IAAIE,EAAWrvC,KAAKovC,uBAAuB,SAI3C,GAHIC,EAAWrvC,KAAK+sC,SAAStL,OACzBzhC,KAAK+sC,SAAStL,KAAO4N,GAErBrvC,KAAKsvC,KAAM,CACX,IAAIrE,EAAYjrC,KAAKytC,uBAAuBnD,GAC5CtqC,KAAK2oB,QAAQ,OAAQ,CAAEjD,MAAO4kB,EAAKtpC,QAAShB,KAAKgB,QAAS46B,OAAQqP,IAEtE,IAAIsE,EAASvvC,KAAKwvC,mBAAmBlF,GACrC,GAAIiF,EAAO3T,QAAU2T,EAAO7V,SAAU,CAElC,IAAIhnB,GAAO,EACP1S,KAAKyvC,cACDzvC,KAAKyvC,YAAY/V,WAAa6V,EAAO7V,SACrC15B,KAAK0vC,mBAAmBpF,EAAKiF,GAG7B78B,GAAO,GAGXA,IACA68B,EAAO7V,SAASiW,SAAS3vC,KAAKgqC,OAAShqC,KAAK8pC,WAAW9pC,KAAKgqC,OAC5DuF,EAAO7V,SAASkW,QAAQtF,EAAKiF,EAAO3T,QACpC57B,KAAKyvC,YAAcF,QAGlBvvC,KAAKyvC,aACVzvC,KAAK0vC,mBAAmBpF,EAAKiF,GAEjC,IAAIlC,EAAgBrtC,KAAK8pC,WAAW9pC,KAAKgqC,OAAO7f,OAChDnqB,KAAKstC,iBAAmBttC,KAAK8sC,wBAAwB9sC,KAAKqtC,cAAcE,cACxE,IAAIsC,EAAQ7vC,KAAKstC,iBAAiB7L,KAC9BqO,EAAO9vC,KAAKstC,iBAAiB3L,IAC7B6J,EAAWxrC,KAAKyrC,eAAenB,GAC/ByF,EAAQvE,EAAStK,MACjB8O,EAAQxE,EAASlK,MACjB2O,EAAQjwC,KAAK+sC,SAAStL,KAAOzhC,KAAKqpC,MAClC6G,EAAOlwC,KAAK+sC,SAASpL,IAAM3hC,KAAK2pC,MAChCpX,EAAS0P,iBAAiBoL,GAC1Bd,EAAYz0B,WAAWya,EAAOga,WAClC,GAAIvsC,KAAK6tC,SAAU,CACf,GAAI7tC,KAAKkhC,QAAU6O,GAAS/vC,KAAKmwC,kBAAmB,CAChD,IAAIC,EAAc/C,EAAcnY,aAAepd,WAAWya,EAAO+Z,YAC3Dx0B,WAAWya,EAAOia,cAEpB/K,EADAzhC,KAAKgpC,UAAUvH,KAAOwO,GAASA,EAAQ,EAChCjwC,KAAKgpC,UAAUvH,KAEjBzhC,KAAKgpC,UAAUtH,MAAQhgC,OAAOotC,YAAcmB,EAAQG,GAAeH,EAAQ,EACzEA,GAASA,EAAQjwC,KAAKgpC,UAAUtH,OAAShgC,OAAOotC,YAAcsB,EAG9DH,EAAQ,EAAIjwC,KAAKgpC,UAAUvH,KAAOwO,EAGjD,GAAIjwC,KAAKshC,QAAU0O,GAAShwC,KAAKmwC,kBAAmB,CAChD,IAAIE,EAAehD,EAAcuB,cAAgB92B,WAAWya,EAAOga,WAC7Dz0B,WAAWya,EAAOka,eAEpB9K,EADA3hC,KAAKgpC,UAAUrH,IAAMuO,GAAQA,EAAO,EAC9BlwC,KAAKgpC,UAAUrH,IAEhB3hC,KAAKgpC,UAAUpH,OAASlgC,OAAOmtC,YAAcqB,EAAOG,GAAgBH,EAAO,EAC1EA,GAAQA,EAAOlwC,KAAKgpC,UAAUpH,QAAUlgC,OAAOmtC,YAAcwB,EAG7DH,EAAO,EAAIlwC,KAAKgpC,UAAUrH,IAAMuO,QAK9CzO,EAAOwO,EACPtO,EAAMuO,EAEV,IAUII,EACAC,EAXAC,EAAOV,EAAO9vC,KAAKmpC,YAAYxH,IAC/B8O,EAAQZ,EAAQ7vC,KAAKmpC,YAAY1H,KAWrC,GAVIzhC,KAAKwpC,qBACDpsC,EAAkBukC,KAClBA,EAAM3hC,KAAKupC,SAEXnsC,EAAkBqkC,KAClBA,EAAOzhC,KAAKspC,WAKhBtpC,KAAK6tC,UAML,GALA7tC,KAAKgpC,UAAUrH,IAAM3hC,KAAKf,MAAQe,KAAKgpC,UAAUrH,IAAM,EACvD2O,EAAa3O,EAAM6O,EAAQ,EAAIxwC,KAAKgpC,UAAUrH,IAAOA,EAAM6O,EAC3DD,EAAc9O,EAAOgP,EAAS,EAAIzwC,KAAKkuC,gBAAgBzM,KAAQA,EAAOgP,EAGlElE,EAAY,IACRvsC,KAAKf,QACLqxC,GAAatwC,KAAKgB,QAAQwtC,UACtB0B,EAAO,IACFlwC,KAAKgB,QAAQwtC,UAAY0B,GAAS,EACnCI,EAAYtwC,KAAKgB,QAAQwtC,UAAY0B,EAGrCI,GAAatwC,KAAKgB,QAAQwtC,WAGlC8B,EAAatwC,KAAKgpC,UAAUpH,OAAS0O,EAAatwC,KAAKgpC,UAAUpH,OAAS0O,GAEzE3O,EAAM6O,EAAQ,GACf,GAAIN,EAAO3D,GAAac,EAAcuB,aAAe4B,IAAS,EAAG,CAC7D,IAAIE,EAAgB1wC,KAAKgpC,UAAUrH,IAAMuO,EAAOM,EAC3CE,EAAgBnE,EAAYiE,EAAQ,EACrCF,GAAa/D,EAAYiE,EAGzBF,EAAYI,OAIhBJ,GAAa/D,EAAYiE,OAMrCF,EAAY3O,EAAM6O,EAClBD,EAAa9O,EAAOgP,EAExB,IAAIE,EAAY3wC,KAAKiuC,0BAA0B,CAAEtM,IAAK2O,EAAY,KAAM7O,KAAM8O,EAAa,OAC3Frc,GAAkBmZ,EAAertC,KAAKmuC,gBAAgBwC,KACjD3wC,KAAKuuC,kBAAkBlB,IAAkBrtC,KAAK4wC,kBAC/C5wC,KAAKqtC,cAAcwD,iBAEvB7wC,KAAKwpC,oBAAqB,EAC1BxpC,KAAKspC,SAAW7H,EAChBzhC,KAAKupC,QAAU5H,EACf3hC,KAAK+sC,SAAStL,KAAOA,EACrBzhC,KAAK+sC,SAASpL,IAAMA,EACpB3hC,KAAKkhC,MAAQ6O,EACb/vC,KAAKshC,MAAQ0O,IAEjBjH,EAAU7sC,UAAUwzC,mBAAqB,SAAUpF,EAAKiF,GACpDvvC,KAAKyvC,YAAY/V,SAASoX,OAAOxG,EAAKiF,EAAO3T,QAC7C57B,KAAKyvC,YAAY/V,SAASiW,SAAS3vC,KAAKgqC,OAAS,KACjDhqC,KAAKyvC,YAAc,MAEvB1G,EAAU7sC,UAAUiyC,gBAAkB,SAAUwC,GAC5C,IAAIjgC,EAAOpS,EAAO,GAAIqyC,GAStB,OARI3wC,KAAK2qC,OACa,MAAd3qC,KAAK2qC,YACEj6B,EAAKixB,IAEO,MAAd3hC,KAAK2qC,aACHj6B,EAAK+wB,MAGb/wB,GAEXq4B,EAAU7sC,UAAUkzC,uBAAyB,SAAUzrC,GACnD,IAAIotC,EAAUvwC,SAAS2gC,KACnB6P,EAASxwC,SAASghC,gBAEtB,OADkBh7B,KAAK4L,IAAI2+B,EAAQ,SAAWptC,GAAMqtC,EAAO,SAAWrtC,GAAMotC,EAAQ,SAAWptC,GAAMqtC,EAAO,SAAWrtC,GAAMqtC,EAAO,SAAWrtC,KAGnJolC,EAAU7sC,UAAUmyC,YAAc,SAAU/D,GAExC,GADAtqC,KAAKwpC,oBAAqB,EACrB1sC,EAAYwtC,EAAIiB,iBAAkD,IAA9BjB,EAAIiB,eAAe1uC,OAA5D,CAIA,IAAgC,IADrB,CAAC,WAAY,YAAa,WAC5BsB,QAAQmsC,EAAIpgC,MAAc,CAC/B,GAAIlK,KAAKixC,SAAU,CACf,IAAIhG,EAAYjrC,KAAKytC,uBAAuBnD,GAC5CtqC,KAAK2oB,QAAQ,WAAY,CAAEjD,MAAO4kB,EAAKtpC,QAAShB,KAAKgB,QAAS46B,OAAQqP,EAAW9gB,OAAQnqB,KAAKqtC,gBAElGrtC,KAAKgsC,WAAW1B,QAGhBtqC,KAAKgB,QAAQqzB,aAAa,eAAgB,SAE9C,IAAIkb,EAASvvC,KAAKwvC,mBAAmBlF,GACjCiF,EAAO3T,QAAU2T,EAAO7V,WACxB6V,EAAO7V,SAASwX,gBAAiB,EACjC3B,EAAO7V,SAASiW,SAAS3vC,KAAKgqC,OAAShqC,KAAK8pC,WAAW9pC,KAAKgqC,OAC5DuF,EAAO7V,SAASyX,QAAQ7G,EAAKiF,EAAO3T,SAExC57B,KAAKsuC,qBAAoB,GACzB9tC,SAAS2gC,KAAK1M,UAAUpM,OAAO,sBAKnC0gB,EAAU7sC,UAAU8vC,WAAa,SAAU1B,GACvCtqC,KAAKwpC,oBAAqB,EAC1BxpC,KAAK+pC,eACLvpC,SAAS2gC,KAAK1M,UAAUpM,OAAO,oBAC/BroB,KAAKgB,QAAQqzB,aAAa,eAAgB,SAC1C7M,GAAaa,OAAO7nB,SAAUykB,GAAQoC,eAAgBrnB,KAAK+rC,cAC3DvkB,GAAaa,OAAO7nB,SAAUykB,GAAQqC,cAAetnB,KAAKquC,aAC1D7mB,GAAaa,OAAO7nB,SAAUykB,GAAQqC,cAAetnB,KAAKgsC,YAC1DxkB,GAAaa,OAAO7nB,SAAUykB,GAAQoC,eAAgBrnB,KAAKouC,SACvDpuC,KAAKmrC,iBACLnrC,KAAKmrC,eAAc,IAI3BpC,EAAU7sC,UAAUq8B,kBAAoB,SAAU4H,EAASC,KAG3D2I,EAAU7sC,UAAUq9B,cAAgB,WAChC,MAAO,aAEXwP,EAAU7sC,UAAUivC,cAAgB,SAAUiG,GAI1C,OAHIA,IACAxI,GAAgBC,WAAaD,GAAgBC,WAE1CD,GAAgBC,WAE3BE,EAAU7sC,UAAU4xC,YAAc,WAC9B,IAAIuD,EACAC,EAGAxhB,EAFA6R,EAAM,EACNF,EAAO,EASX,GALI3R,EADS,kBADK9vB,KAAK6tC,SAEbhY,GAAO71B,KAAK6tC,UAGZ7tC,KAAK6tC,SAEN,CACL,IAAI0D,EAAczhB,EAAIkR,wBACtBqQ,EAAgBvhB,EAAIib,YAAcjb,EAAIib,YAAcwG,EAAY7P,MAAQ6P,EAAY9P,KACpF6P,EAAiBxhB,EAAI+a,aAAe/a,EAAI+a,aAAe0G,EAAY3P,OAAS2P,EAAY5P,IAGxF,IAFA,IAAI1kC,EAAO,CAAC,MAAO,OAAQ,SAAU,SACjCs1B,EAAS0P,iBAAiBnS,GACrBlzB,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAAK,CAClC,IAAII,EAAMC,EAAKL,GACX40C,EAAUjf,EAAO,SAAWv1B,EAAM,SAClCy0C,EAAWlf,EAAO,UAAYv1B,GAC9B00C,EAAW10C,EAAIwZ,cACnBxW,KAAKmpC,YAAYuI,GAAYvmC,MAAM2M,WAAW05B,IAAY,EAAI15B,WAAW05B,GACzExxC,KAAKopC,QAAQsI,GAAYvmC,MAAM2M,WAAW25B,IAAa,EAAI35B,WAAW25B,GAE1E9P,EAAM4P,EAAY5P,IAClBF,EAAO8P,EAAY9P,KACnBzhC,KAAKgpC,UAAUvH,KAAOA,EAAOzhC,KAAKmpC,YAAY1H,KAAOzhC,KAAKopC,QAAQ3H,KAClEzhC,KAAKgpC,UAAUrH,IAAM7R,EAAI0e,UAAYxuC,KAAKmpC,YAAYxH,IAAM3hC,KAAKopC,QAAQzH,IACzE3hC,KAAKgpC,UAAUtH,MAAQD,EAAO4P,GAAiBrxC,KAAKmpC,YAAYzH,MAAQ1hC,KAAKopC,QAAQ1H,OACrF1hC,KAAKgpC,UAAUpH,OAASD,EAAM2P,GAAkBtxC,KAAKmpC,YAAYvH,OAAS5hC,KAAKopC,QAAQxH,UAG/FmH,EAAU7sC,UAAUuxC,uBAAyB,SAAUnD,GACnD,IACIxa,EADA0b,EAAWxrC,KAAKyrC,eAAenB,GAE/BqH,EAAY3xC,KAAKqtC,cAAc7a,MAAMof,eAAiB,GAS1D,OARIvxC,EAAqBiqC,EAAI1O,OAAQ57B,KAAKqtC,iBAAiD,IAA/B/C,EAAIpgC,KAAK/L,QAAQ,UACzE6B,KAAKqtC,cAAc7a,MAAMof,cAAgB,OACzC9hB,EAAMtvB,SAASqxC,iBAAiBrG,EAASG,QAASH,EAASI,SAC3D5rC,KAAKqtC,cAAc7a,MAAMof,cAAgBD,GAGzC7hB,EAAMwa,EAAI1O,OAEP9L,GAGXiZ,EAAU7sC,UAAU2wC,kBAAoB,SAAU/c,EAAKgiB,GAQnD,OANK10C,EAAkB4C,KAAKkrC,qBAAuBlrC,KAAKkrC,qBAAuBpb,EAInE1yB,EAAkB00C,GAAmBhiB,EAATgiB,EAH7B9xC,KAAKkrC,oBAOpBnC,EAAU7sC,UAAU8wC,iBAAmB,SAAU1C,EAAKyH,GAElD,IAEI7Q,EACAI,EAHA0Q,OAA6Bh2C,IAAnBsuC,EAAI2H,WAA2B3H,EAAI2H,WAAa3H,EAAI1O,OAC9D4P,EAAWxrC,KAAKyrC,eAAenB,GAG/B4H,EAAiB90C,EAAkB40C,EAAQzE,cAiB/C,OAfIwE,GACA7Q,EAAQlhC,KAAKf,MAAQusC,EAAStK,MACzBsK,EAAStK,OAASgR,EAAiB,EAAIF,EAAQzE,aAAanM,YAAephC,KAAK6rC,kBACrFvK,EAAQthC,KAAKf,MAAQusC,EAASlK,MACzBkK,EAASlK,OAAS4Q,EAAiB,EAAIF,EAAQzE,aAAahM,WAAcvhC,KAAK8rC,oBAGpF5K,EAAQlhC,KAAKf,MAAQusC,EAAStK,MAASsK,EAAStK,MAAQx/B,OAAOotC,YAAe9uC,KAAK6rC,kBACnFvK,EAAQthC,KAAKf,MAAQusC,EAASlK,MAASkK,EAASlK,MAAQ5/B,OAAOmtC,YAAe7uC,KAAK8rC,mBAElF9rC,KAAKf,QACNe,KAAKgrC,sBACL1J,GAASthC,KAAK4qC,iBAAmB5qC,KAAK6pC,cAAgB,EACtD3I,GAASlhC,KAAK8qC,gBAAkB9qC,KAAK6pC,cAAgB,GAElD,CACHpI,KAAMP,GAASlhC,KAAKqsC,OAAO5K,KAAOzhC,KAAKmyC,SAAS1Q,MAChDE,IAAKL,GAASthC,KAAKqsC,OAAO1K,IAAM3hC,KAAKmyC,SAASxQ,OAGtDoH,EAAU7sC,UAAUuvC,eAAiB,SAAUnB,GAC3C,OAAIA,EAAIpgC,KAAK/L,QAAQ,UAAY,EACtBmsC,EAAIiB,eAAe,GAEvBjB,GAEXvB,EAAU7sC,UAAUixC,iBAAmB,SAAU7C,GAC7C,IAAItpC,EAaJ,OAZIhB,KAAKf,MACDe,KAAKmqB,OACLnpB,EAAUhB,KAAKmqB,OAAO,CAAEioB,OAAQ9H,EAAKtpC,QAAShB,KAAK47B,UAGnD56B,EAAUG,GAAc,MAAO,CAAE0rB,UAAW,8BAA+B5qB,UAAW,cACtFzB,SAAS2gC,KAAKv/B,YAAYZ,IAI9BA,EAAUhB,KAAKgB,QAEZA,GAEX+nC,EAAU7sC,UAAUoyC,oBAAsB,SAAU+D,EAAO/C,EAAMnlB,GAC7DnqB,KAAK8pC,WAAW9pC,KAAKgqC,OAASqI,EAAQ,KAAO,CACzCC,UAAWhD,EACXnlB,OAAQA,EACRooB,eAAgBvyC,KAAKgB,UAG7B+nC,EAAU7sC,UAAUszC,mBAAqB,SAAUlF,GAC/C,IAAI1O,EAAS57B,KAAKytC,uBAAuBnD,GACrCkI,EAAUxyC,KAAKyyC,gBAAgB7W,GACnC,IAAK4W,GAAW5W,IAAWx+B,EAAkBw+B,EAAOn7B,YAAa,CAC7D,IAAIuzB,EAAWsC,GAAQsF,EAAOn7B,WAAY,iBAAmBm7B,EAAO8W,cAChE1e,IACAwe,EAAUxyC,KAAKyyC,gBAAgBze,IAGvC,MAAO,CAAE4H,OAAQA,EAAQlC,SAAU8Y,IAEvCzJ,EAAU7sC,UAAUu2C,gBAAkB,SAAU3iB,GAC5C,IACI6iB,EACAC,EAAU9iB,GAAOA,EAAI0J,cACzB,GAAIoZ,EACA,IAAK,IAAI50C,EAAK,EAAG60C,EAAYD,EAAS50C,EAAK60C,EAAUh2C,OAAQmB,IAAM,CAC/D,IAAIi8B,EAAO4Y,EAAU70C,GACrB,GAAqB,cAAjBi8B,EAAI,gBAA0B,CAC9B0Y,EAAO1Y,EACP,OAIZ,OAAO0Y,GAEX5J,EAAU7sC,UAAUie,QAAU,WAC1Bna,KAAK+pC,cAAa,GAClBjM,EAAO5hC,UAAUie,QAAQ7Y,KAAKtB,OAGlCs9B,GAAW,CACPvB,GAAQ,GAAI+M,KACbC,EAAU7sC,UAAW,gBAAY,GACpCohC,GAAW,CACP3B,IAAS,IACVoN,EAAU7sC,UAAW,aAAS,GACjCohC,GAAW,CACP3B,MACDoN,EAAU7sC,UAAW,gBAAY,GACpCohC,GAAW,CACP3B,MACDoN,EAAU7sC,UAAW,oBAAgB,GACxCohC,GAAW,CACP3B,MACDoN,EAAU7sC,UAAW,wBAAoB,GAC5CohC,GAAW,CACP3B,IAAS,IACVoN,EAAU7sC,UAAW,uBAAmB,GAC3CohC,GAAW,CACP/9B,MACDwpC,EAAU7sC,UAAW,YAAQ,GAChCohC,GAAW,CACP/9B,MACDwpC,EAAU7sC,UAAW,iBAAa,GACrCohC,GAAW,CACP/9B,MACDwpC,EAAU7sC,UAAW,gBAAY,GACpCohC,GAAW,CACP3B,GAAS,IACVoN,EAAU7sC,UAAW,gBAAY,GACpCohC,GAAW,CACP3B,MACDoN,EAAU7sC,UAAW,cAAU,GAClCohC,GAAW,CACP3B,MACDoN,EAAU7sC,UAAW,aAAS,GACjCohC,GAAW,CACP3B,MACDoN,EAAU7sC,UAAW,cAAU,GAClCohC,GAAW,CACP3B,GAAS,YACVoN,EAAU7sC,UAAW,aAAS,GACjCohC,GAAW,CACP3B,GAAS,KACVoN,EAAU7sC,UAAW,kBAAc,GACtCohC,GAAW,CACP3B,MACDoN,EAAU7sC,UAAW,YAAQ,GAChCohC,GAAW,CACP3B,MACDoN,EAAU7sC,UAAW,yBAAqB,GAC7CohC,GAAW,CACP3B,IAAS,IACVoN,EAAU7sC,UAAW,sBAAkB,GAC1CohC,GAAW,CACP3B,IAAS,IACVoN,EAAU7sC,UAAW,yBAAqB,GAC7CohC,GAAW,CACP3B,IAAS,IACVoN,EAAU7sC,UAAW,sBAAkB,GAC1CohC,GAAW,CACP3B,IAAS,IACVoN,EAAU7sC,UAAW,wBAAoB,GAC5CohC,GAAW,CACP3B,IAAS,IACVoN,EAAU7sC,UAAW,qBAAiB,GACzCohC,GAAW,CACP3B,GAAS,MACVoN,EAAU7sC,UAAW,wBAAoB,GAC5C6sC,EAAYE,EAAc3L,GAAW,CACjCjB,IACD0M,GA/tBwB,CAiuB7BjS,IClyBEkG,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQ5+B,EAAKwgC,GAC7E,IAA2H12B,EAAvHD,EAAIjI,UAAU/B,OAAQ4gC,EAAI52B,EAAI,EAAI+0B,EAAkB,OAAT4B,EAAgBA,EAAOt/B,OAAOw/B,yBAAyB9B,EAAQ5+B,GAAOwgC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQ5+B,EAAKwgC,QACpH,IAAK,IAAI5gC,EAAI2gC,EAAW1gC,OAAS,EAAGD,GAAK,EAAGA,KAASkK,EAAIy2B,EAAW3gC,MAAI6gC,GAAK52B,EAAI,EAAIC,EAAE22B,GAAK52B,EAAI,EAAIC,EAAE80B,EAAQ5+B,EAAKygC,GAAK32B,EAAE80B,EAAQ5+B,KAASygC,GAChJ,OAAO52B,EAAI,GAAK42B,GAAKv/B,OAAOooB,eAAesV,EAAQ5+B,EAAKygC,GAAIA,GAuB5DqV,GAA2B,SAAUhV,GAErC,SAASgV,EAAU9xC,EAASqK,GACxB,IAAItL,EAAQ+9B,EAAOx8B,KAAKtB,KAAMqL,EAASrK,IAAYhB,KAKnD,OAJAD,EAAMgzC,WAAY,EAClBhzC,EAAM4vC,SAAW,GACjB5vC,EAAMmxC,gBAAiB,EACvBnxC,EAAM5D,OACC4D,EAwFX,OA/FAi9B,GAAU8V,EAAWhV,GASrBgV,EAAU52C,UAAUC,KAAO,WACvB6D,KAAKgzC,cAETF,EAAU52C,UAAU82C,WAAa,WAC7BxrB,GAAaG,IAAI3nB,KAAKgB,QAASikB,GAAQqC,cAAetnB,KAAKmxC,QAASnxC,OAGxE8yC,EAAU52C,UAAUq8B,kBAAoB,SAAU4H,EAASC,KAG3D0S,EAAU52C,UAAUq9B,cAAgB,WAChC,MAAO,aAEXuZ,EAAU52C,UAAU0zC,QAAU,SAAUlqB,EAAO1kB,GAC3C,IAAKhB,KAAK+yC,UAAW,CACjB,IAAIzD,EAAOtvC,KAAK2vC,SAAS3vC,KAAKgqC,OAC9BhqC,KAAK2oB,QAAQ,OAAQ,CAAEjD,MAAOA,EAAOkW,OAAQ56B,EAAS2uC,SAAUL,IAChEtvC,KAAK+yC,WAAY,IAGzBD,EAAU52C,UAAU40C,OAAS,SAAUprB,EAAO1kB,GACtChB,KAAK+yC,YACL/yC,KAAK2oB,QAAQ,MAAO,CAAE2hB,IAAK5kB,EAAOkW,OAAQ56B,IAC1ChB,KAAK+yC,WAAY,IAGzBD,EAAU52C,UAAUi1C,QAAU,SAAU7G,EAAKtpC,GACzC,GAAKhB,KAAKkxC,eAAV,CAIIlxC,KAAKkxC,gBAAiB,EAE1B,IAGI+B,EAHAC,GAAS,EACT5D,EAAOtvC,KAAK2vC,SAAS3vC,KAAKgqC,OAC1BmJ,IAAS7D,IAAQA,EAAKnlB,QAAU6K,GAAUsa,EAAKnlB,SAE/CgpB,IACAF,EAAOjzC,KAAKozC,WAAW9I,EAAKgF,EAAKnlB,OAAQnpB,GACrChB,KAAKkzC,SACLA,EAAS5nC,GAAQgkC,EAAKnlB,OAAQnqB,KAAKkzC,UAGvCC,GAAUnzC,KAAK2yC,MAAQM,EAAKI,SAAWH,GACvClzC,KAAK2oB,QAAQ,OAAQ,CAAEjD,MAAO4kB,EAAK1O,OAAQqX,EAAKrX,OAAQ0X,eAAgBhE,EAAKnlB,OAAQwlB,SAAUL,IAEnGtvC,KAAK+yC,WAAY,IAErBD,EAAU52C,UAAUk3C,WAAa,SAAU9I,EAAKngB,EAAQnpB,GACpD,IAAIiyC,EAAO,CAAEI,SAAS,EAAMzX,OAAQ56B,GAAWspC,EAAI1O,QAC/C/V,EAAuB,aAAbykB,EAAIpgC,KAClB,GAAI2b,GAAWotB,EAAKrX,SAAWzR,EAAQ,CACnCA,EAAOqI,MAAM+gB,QAAU,OACvB,IAAIC,EAAQ3tB,EAAWykB,EAAIiB,eAAe,GAAMjB,EAC5Cxa,EAAMtvB,SAASqxC,iBAAiB2B,EAAM7H,QAAS6H,EAAM5H,SACzDqH,EAAKI,SAAU,EACfJ,EAAKI,QAAUhzC,EAAqByvB,EAAK9vB,KAAKgB,SAC1CiyC,EAAKI,UACLJ,EAAKrX,OAAS9L,GAElB3F,EAAOqI,MAAM+gB,QAAU,GAE3B,OAAON,GAEXH,EAAU52C,UAAUie,QAAU,WAC1BqN,GAAaa,OAAOroB,KAAKgB,QAASikB,GAAQqC,cAAetnB,KAAKmxC,SAC9DrT,EAAO5hC,UAAUie,QAAQ7Y,KAAKtB,OAElCs9B,GAAW,CACP3B,MACDmX,EAAU52C,UAAW,cAAU,GAClCohC,GAAW,CACP3B,GAAS,YACVmX,EAAU52C,UAAW,aAAS,GACjCohC,GAAW,CACP/9B,MACDuzC,EAAU52C,UAAW,YAAQ,GAChCohC,GAAW,CACP/9B,MACDuzC,EAAU52C,UAAW,YAAQ,GAChCohC,GAAW,CACP/9B,MACDuzC,EAAU52C,UAAW,WAAO,GAC/B42C,EAAYxV,GAAW,CACnBjB,IACDyW,GA/FwB,CAiG7Bhc,ICzIEkG,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQ5+B,EAAKwgC,GAC7E,IAA2H12B,EAAvHD,EAAIjI,UAAU/B,OAAQ4gC,EAAI52B,EAAI,EAAI+0B,EAAkB,OAAT4B,EAAgBA,EAAOt/B,OAAOw/B,yBAAyB9B,EAAQ5+B,GAAOwgC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQ5+B,EAAKwgC,QACpH,IAAK,IAAI5gC,EAAI2gC,EAAW1gC,OAAS,EAAGD,GAAK,EAAGA,KAASkK,EAAIy2B,EAAW3gC,MAAI6gC,GAAK52B,EAAI,EAAIC,EAAE22B,GAAK52B,EAAI,EAAIC,EAAE80B,EAAQ5+B,EAAKygC,GAAK32B,EAAE80B,EAAQ5+B,KAASygC,GAChJ,OAAO52B,EAAI,GAAK42B,GAAKv/B,OAAOooB,eAAesV,EAAQ5+B,EAAKygC,GAAIA,GAI5DgW,GAAU,CACV,UAAa,EACb,IAAO,EACP,MAAS,GACT,MAAS,GACT,QAAW,GACX,IAAO,GACP,MAAS,GACT,SAAY,GACZ,MAAS,GACT,OAAU,GACV,OAAU,GACV,SAAY,GACZ,IAAO,GACP,KAAQ,GACR,UAAa,GACb,QAAW,GACX,WAAc,GACd,UAAa,GACb,OAAU,GACV,OAAU,GACV,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,GAAM,IACN,IAAO,IACP,IAAO,IACP,IAAO,IACP,UAAa,IACb,KAAQ,IACR,MAAS,IACT,MAAS,IACT,IAAO,IACP,aAAgB,IAChB,YAAe,IACf,YAAe,IACf,UAAa,IACb,aAAgB,IAChB,YAAe,KAkBfC,GAAgC,SAAU5V,GAO1C,SAAS4V,EAAe1yC,EAASqK,GAC7B,IAAItL,EAAQ+9B,EAAOx8B,KAAKtB,KAAMqL,EAASrK,IAAYhB,KA2BnD,OAvBAD,EAAM4zC,gBAAkB,SAAU9yC,GAM9B,IALA,IAAI+yC,EAAW/yC,EAAEgzC,OACbC,EAAYjzC,EAAEkzC,QACdC,EAAanzC,EAAEozC,SACfC,EAAarzC,EAAEszC,MAEVn2C,EAAK,EAAGC,EADNC,OAAOjB,KAAK8C,EAAMq0C,YACGp2C,EAAKC,EAAOpB,OAAQmB,IAGhD,IAFA,IAAIhB,EAAMiB,EAAOD,GAER80B,EAAK,EAAGuhB,EADMt0C,EAAMq0C,WAAWp3C,GAAKL,MAAM,KACKm2B,EAAKuhB,EAAmBx3C,OAAQi2B,IAAM,CAC1F,IAAIwhB,EAAUD,EAAmBvhB,GAC7ByhB,EAAUC,EAAiBC,iBAAiBH,EAAQxpB,QACpD8oB,IAAaW,EAAQV,QAAUC,IAAcS,EAAQR,SACrDC,IAAeO,EAAQN,UAAYC,IAAeK,EAAQd,UAC1D5yC,EAAE4jC,OAASznC,EACP+C,EAAM20C,WACN30C,EAAM20C,UAAU7zC,MAMpCd,EAAM5D,OACC4D,EAyEX,IAAIy0C,EAcJ,OAzHAxX,GAAU0W,EAAgB5V,GAoC1B0W,EAAmBd,EAKnBA,EAAex3C,UAAUie,QAAU,WAC/Bna,KAAK20C,eACL7W,EAAO5hC,UAAUie,QAAQ7Y,KAAKtB,OASlC0zC,EAAex3C,UAAUq8B,kBAAoB,SAAU4H,EAASC,KAIhEsT,EAAex3C,UAAUC,KAAO,WAC5B6D,KAAKgzC,cAMTU,EAAex3C,UAAUq9B,cAAgB,WACrC,MAAO,YAKXma,EAAex3C,UAAU82C,WAAa,WAClChzC,KAAKgB,QAAQmnB,iBAAiBnoB,KAAK4nB,UAAW5nB,KAAK2zC,kBAKvDD,EAAex3C,UAAUy4C,aAAe,WACpC30C,KAAKgB,QAAQunB,oBAAoBvoB,KAAK4nB,UAAW5nB,KAAK2zC,kBAO1DD,EAAee,iBAAmB,SAAUG,GACxC,GAAIA,KAAU50C,KAAK60C,YACf,OAAO70C,KAAK60C,YAAYD,GAE5B,IAAI33C,EAAO23C,EAAOp+B,cAAc7Z,MAAM,KAClCm4C,EAAU,CACVjB,QAAkC,IAAzB52C,EAAKkB,QAAQ,OACtB41C,SAAoC,IAA1B92C,EAAKkB,QAAQ,QACvB81C,UAAsC,IAA3Bh3C,EAAKkB,QAAQ,SACxBs1C,QAAS,MASb,OAPIx2C,EAAKA,EAAKJ,OAAS,GAAGA,OAAS,GAAOk4C,OAAO93C,EAAKA,EAAKJ,OAAS,IAChEi4C,EAAQrB,QAAUsB,OAAO93C,EAAKA,EAAKJ,OAAS,IAG5Ci4C,EAAQrB,QAAUe,EAAiBQ,WAAW/3C,EAAKA,EAAKJ,OAAS,IAErE23C,EAAiBK,YAAYD,GAAUE,EAChCA,GAGXpB,EAAesB,WAAa,SAAUC,GAClC,OAAOxB,GAAQwB,IAAWA,EAAO1+B,cAAcyxB,WAAW,IAG9D0L,EAAemB,YAAc,GAC7BvX,GAAW,CACP3B,GAAS,KACV+X,EAAex3C,UAAW,kBAAc,GAC3CohC,GAAW,CACP3B,GAAS,UACV+X,EAAex3C,UAAW,iBAAa,GAC1CohC,GAAW,CACP/9B,MACDm0C,EAAex3C,UAAW,iBAAa,GAC1Cw3C,EAAiBc,EAAmBlX,GAAW,CAC3CjB,IACDqX,GAzH6B,CA2HlC5c,ICpLEoe,GAAsB,WAItB,SAASA,EAAKC,EAAaC,EAAe7P,GACtCvlC,KAAKm1C,YAAcA,EACnBn1C,KAAKo1C,cAAgBA,EACrBp1C,KAAKq1C,UAAU9P,GAAU/qB,GA6C7B,OAtCA06B,EAAKh5C,UAAUm5C,UAAY,SAAU9P,GACjC,IAAI+P,EAAYt1C,KAAKu1C,sBAAsBL,EAAK3P,OAAQA,GACxDvlC,KAAKw1C,cAAgBF,GAAat1C,KAAKo1C,eAM3CF,EAAKO,KAAO,SAAUC,GAClB11C,KAAKulC,OAASjnC,EAAO0B,KAAKulC,OAAQmQ,EAAc,IAAI,IAOxDR,EAAKh5C,UAAUy5C,YAAc,SAAUvyC,GAEnC,OAAKhG,EAAkB4C,KAAKw1C,cAAcpyC,IAI/BpD,KAAKo1C,cAAchyC,IAAS,GAH5BpD,KAAKw1C,cAAcpyC,IAYlC8xC,EAAKh5C,UAAUq5C,sBAAwB,SAAUn/B,EAAWmvB,GACxD,OAAKnvB,EAAWmvB,GACJnvB,EAAWmvB,GAAQvlC,KAAKm1C,aAE7B,MAEXD,EAAK3P,OAAS,GACP2P,EApDe,GCzBtBlY,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAazCE,GAA0C,SAAUC,EAAY3B,EAAQ5+B,EAAKwgC,GAC7E,IAA2H12B,EAAvHD,EAAIjI,UAAU/B,OAAQ4gC,EAAI52B,EAAI,EAAI+0B,EAAkB,OAAT4B,EAAgBA,EAAOt/B,OAAOw/B,yBAAyB9B,EAAQ5+B,GAAOwgC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQ5+B,EAAKwgC,QACpH,IAAK,IAAI5gC,EAAI2gC,EAAW1gC,OAAS,EAAGD,GAAK,EAAGA,KAASkK,EAAIy2B,EAAW3gC,MAAI6gC,GAAK52B,EAAI,EAAIC,EAAE22B,GAAK52B,EAAI,EAAIC,EAAE80B,EAAQ5+B,EAAKygC,GAAK32B,EAAE80B,EAAQ5+B,KAASygC,GAChJ,OAAO52B,EAAI,GAAK42B,GAAKv/B,OAAOooB,eAAesV,EAAQ5+B,EAAKygC,GAAIA,GAW5DmY,GAA+B,SAAU9X,GAEzC,SAAS8X,IACL,OAAkB,OAAX9X,GAAmBA,EAAO1hC,MAAM4D,KAAMpB,YAAcoB,KAK/D,OAPAg9B,GAAU4Y,EAAe9X,GAIzBR,GAAW,CACP3B,GAAS,KACVia,EAAc15C,UAAW,8BAA0B,GAC/C05C,EARwB,CASjC5R,IAEE6R,GAAa,YAsBbC,GAAuB,SAAUhY,GAGjC,SAASgY,EAAM90C,EAASqK,GACpB,IAAItL,EAAQ+9B,EAAOx8B,KAAKtB,KAAMqL,EAASrK,IAAYhB,KAoHnD,OAnHAD,EAAMg2C,aAAc,EACpBh2C,EAAMi2C,SAAW,EACjBj2C,EAAMk2C,WAAa,SAAU3L,GACzB,IAA0B,IAAtBvqC,EAAMg2C,YAAsB,CAC5B,IAAIG,EAAQn2C,EAAMo2C,oBAAoB7L,QACXtuC,IAAvBsuC,EAAIiB,iBACJxrC,EAAMg2C,aAAc,GAExBh2C,EAAMq2C,cAAe,EACrBr2C,EAAMs2C,eAAiB,GACvBt2C,EAAMu2C,WAAav2C,EAAMw2C,eAAiB,CAAE5K,QAASuK,EAAMvK,QAASC,QAASsK,EAAMtK,SACnF7rC,EAAMy2C,eAAiBN,EACvBn2C,EAAM02C,cAAgB12C,EAAM22C,eAAgB,EAC5C32C,EAAM42C,YAAcxuC,KAAK83B,MACzBlgC,EAAM62C,eAAiBx2C,YAAW,WAAcL,EAAM82C,aAAavM,KAASvqC,EAAM0qC,kBAClFjjB,GAAaG,IAAI5nB,EAAMiB,QAASikB,GAAQoC,eAAgBtnB,EAAM+2C,UAAW/2C,GACzEynB,GAAaG,IAAI5nB,EAAMiB,QAASikB,GAAQqC,cAAevnB,EAAMg3C,SAAUh3C,GACvEynB,GAAaG,IAAI5nB,EAAMiB,QAASikB,GAAQsC,iBAAkBxnB,EAAMi3C,YAAaj3C,KAGrFA,EAAM+2C,UAAY,SAAUxM,GACxB,IAAI4L,EAAQn2C,EAAMo2C,oBAAoB7L,GACtCvqC,EAAMk3C,WAAaf,EACnBn2C,EAAMq2C,eAAiBF,EAAMvK,UAAY5rC,EAAMu2C,WAAW3K,SAAWuK,EAAMtK,UAAY7rC,EAAMu2C,WAAW1K,SACxG,IAAIsL,EAAc,GACdn3C,EAAMq2C,eACNj2C,aAAaJ,EAAM62C,gBACnB72C,EAAMo3C,iBAAiB7M,GAQvB4M,EAAc54C,EAAO44C,EAAa,GAPlB,CACZE,YAAar3C,EAAMy2C,eACnBa,cAAe/M,EAAKgN,OAAQv3C,EAAMu2C,WAAW3K,QAC7C4L,OAAQx3C,EAAMu2C,WAAW1K,QAAS4L,UAAWz3C,EAAMy3C,UACnDC,UAAW13C,EAAM03C,UAAWC,gBAAiB33C,EAAM23C,gBACnDC,SAAU53C,EAAM63C,YAAY1B,KAGhCn2C,EAAM4oB,QAAQ,SAAUuuB,GACxBn3C,EAAMw2C,eAAiB,CAAE5K,QAASuK,EAAMvK,QAASC,QAASsK,EAAMtK,WAGxE7rC,EAAMi3C,YAAc,SAAU1M,GAC1BnqC,aAAaJ,EAAM62C,gBACnBz2C,aAAaJ,EAAM83C,YACnB93C,EAAMi2C,SAAW,EACjBj2C,EAAM+3C,QAAQxN,GACd9iB,GAAaa,OAAOtoB,EAAMiB,QAASikB,GAAQsC,iBAAkBxnB,EAAMi3C,cAEvEj3C,EAAMg3C,SAAW,SAAUzM,GACvBvqC,EAAM+3C,QAAQxN,GACTvqC,EAAMq2C,cACkB,oBAAdr2C,EAAMg4C,MACbh4C,EAAM4oB,QAAQ,MAAO,CAAE0uB,cAAe/M,EAAK0L,WAAYj2C,EAAMi2C,WAC7Dj2C,EAAM83C,WAAaz3C,YAAW,WAC1BL,EAAMi2C,SAAW,IAClBj2C,EAAMi4C,eAGjBj4C,EAAMk4C,aAEVl4C,EAAM+3C,QAAU,SAAUxN,GACtBnqC,aAAaJ,EAAM62C,gBACnBz2C,aAAaJ,EAAM83C,YACnB,IAAI3B,EAAQn2C,EAAMo2C,oBAAoB7L,GAClCjB,EAAQ6M,EAAMvK,QAAU5rC,EAAMu2C,WAAW3K,QACzChC,EAAQuM,EAAMtK,QAAU7rC,EAAMu2C,WAAW1K,QAC7CvC,EAAQ7iC,KAAKC,MAAM4iC,EAAQ,GAAK,EAAIA,EAAQA,GAC5CM,EAAQnjC,KAAKC,MAAMkjC,EAAQ,GAAK,EAAIA,EAAQN,GAC5CtpC,EAAMq2C,aAAe/M,EAAQ,GAAKM,EAAQ,EAEzB,kBAAmBhgC,KAAKsb,GAAQI,YACd,IAAlB6wB,EAAMvK,SAAmC,IAAlBuK,EAAMtK,SAA8B,YAAbtB,EAAIpgC,OAC/DnK,EAAMq2C,cAAe,GAEzBr2C,EAAMm4C,SAAWhC,EACjBn2C,EAAMo4C,WAAW7N,GACjB,IAAI8N,EAAY,CACZf,cAAe/M,EACf8M,YAAar3C,EAAMy2C,eACnBc,OAAQv3C,EAAMu2C,WAAW3K,QACzB4L,OAAQx3C,EAAMu2C,WAAW1K,QACzB4L,UAAWz3C,EAAMy3C,UAAWC,UAAW13C,EAAM03C,UAAWY,eAAgBt4C,EAAMs2C,eAC9EsB,SAAU53C,EAAM63C,YAAY1B,IAEhC,GAAIn2C,EAAMq2C,aAAc,CACpB,IAAIkC,OAAa,EACbC,EAAYx4C,EAAMy4C,cAAcC,uBACpCH,EAAah6C,EAAOg6C,EAAYv4C,EAAM24C,YAAaN,GACnD,IAAIO,GAAa,EACb7oB,EAAM/vB,EAAMiB,QACZ43C,EAAa74C,EAAM84C,aAAa/oB,GAChCgpB,EAAQjD,GAAWlsC,KAAK5J,EAAMs2C,iBAC7BkC,EAAYx4C,EAAMy3C,YAAcsB,GAAWP,EAAYx4C,EAAM03C,WAAaqB,KAKvEH,GAJCC,GAIY74C,EAAMg5C,WAAWjpB,EAAKgpB,IAGvCH,GACA54C,EAAM4oB,QAAQ,QAAS2vB,GAG/Bv4C,EAAMk4C,aAEVl4C,EAAMk4C,UAAY,WACdl4C,EAAMi5C,UAAY54C,YAAW,WACzBL,EAAMg2C,aAAc,IACC,oBAAdh2C,EAAMg4C,IAAqB,EAAI,IAC1Ch4C,EAAMk5C,aAAc,IAAI9wC,MAAO8Y,UAC/BuG,GAAaa,OAAOtoB,EAAMiB,QAASikB,GAAQoC,eAAgBtnB,EAAM+2C,WACjEtvB,GAAaa,OAAOtoB,EAAMiB,QAASikB,GAAQqC,cAAevnB,EAAMg3C,UAChEvvB,GAAaa,OAAOtoB,EAAMiB,QAASikB,GAAQsC,iBAAkBxnB,EAAMi3C,cAEvEj3C,EAAM5D,OACC4D,EAyIX,OAhQAi9B,GAAU8Y,EAAOhY,GA+HjBgY,EAAM55C,UAAUq8B,kBAAoB,SAAU4H,EAASC,KAGvD0V,EAAM55C,UAAUC,KAAO,WACnB6D,KAAKgzC,aACD/tB,GAAQiD,MACRloB,KAAKgB,QAAQyzB,UAAU9M,IAAI,kBAOnCmuB,EAAM55C,UAAUie,QAAU,WACtBna,KAAK20C,eACL7W,EAAO5hC,UAAUie,QAAQ7Y,KAAKtB,OAGlC81C,EAAM55C,UAAU82C,WAAa,WACzBxrB,GAAaG,IAAI3nB,KAAKgB,QAASikB,GAAQmC,gBAAiBpnB,KAAKi2C,WAAYj2C,OAE7E81C,EAAM55C,UAAUy4C,aAAe,WAC3BntB,GAAaa,OAAOroB,KAAKgB,QAASikB,GAAQmC,gBAAiBpnB,KAAKi2C,aAOpEH,EAAM55C,UAAUq9B,cAAgB,WAC5B,MAAO,SAOXuc,EAAM55C,UAAU28C,aAAe,SAAU73C,GACrC,IAAIk4C,EAAWjX,iBAAiBjhC,GAC5BwxB,EAAQ0mB,EAASC,SAAWD,EAASE,UAAYF,EAASG,UAC9D,QAAK,gBAAiB1vC,KAAK6oB,IAK/BsjB,EAAM55C,UAAU26C,aAAe,SAAUvM,GAGrC,IAAIgP,EAFJt5C,KAAKg2C,SAAW,EAChBh2C,KAAK+1C,aAAc,EAEnBvuB,GAAaa,OAAOroB,KAAKgB,QAASikB,GAAQoC,eAAgBrnB,KAAK82C,WAC/DtvB,GAAaa,OAAOroB,KAAKgB,QAASikB,GAAQqC,cAAetnB,KAAK+2C,UAC9DuC,EAAW,CAAEjC,cAAe/M,GAC5BtqC,KAAK2oB,QAAQ,UAAW2wB,GACxB9xB,GAAaa,OAAOroB,KAAKgB,QAASikB,GAAQsC,iBAAkBvnB,KAAKg3C,cAErElB,EAAM55C,UAAUi8C,WAAa,SAAU7N,GACnC,IAAI4L,EAAQl2C,KAAKm2C,oBAAoB7L,GACrCtqC,KAAK04C,YAAc,CAAErB,cAAe/M,GACpCtqC,KAAKw3C,UAAYhxC,KAAK8G,IAAK9G,KAAK8G,IAAI4oC,EAAMvK,SAAWnlC,KAAK8G,IAAItN,KAAKs2C,WAAW3K,UAC9E3rC,KAAKy3C,UAAYjxC,KAAK8G,IAAK9G,KAAK8G,IAAI4oC,EAAMtK,SAAWplC,KAAK8G,IAAItN,KAAKs2C,WAAW1K,UAC1E5rC,KAAKw3C,UAAYx3C,KAAKy3C,UACtBz3C,KAAKq2C,eAAkBH,EAAMvK,QAAU3rC,KAAKs2C,WAAW3K,QAAW,QAAU,OAG5E3rC,KAAKq2C,eAAkBH,EAAMtK,QAAU5rC,KAAKs2C,WAAW1K,QAAW,KAAO,QAGjFkK,EAAM55C,UAAUi7C,iBAAmB,SAAU7M,GACzC,IAAI4L,EAAQl2C,KAAKm2C,oBAAoB7L,GACrCtqC,KAAK04C,YAAc,CAAErB,cAAe/M,GACpCtqC,KAAKw3C,UAAYhxC,KAAK8G,IAAK9G,KAAK8G,IAAI4oC,EAAMvK,SAAWnlC,KAAK8G,IAAItN,KAAKu2C,eAAe5K,UAClF3rC,KAAKy3C,UAAYjxC,KAAK8G,IAAK9G,KAAK8G,IAAI4oC,EAAMtK,SAAWplC,KAAK8G,IAAItN,KAAKu2C,eAAe3K,WAC7E5rC,KAAKw3C,UAAYx3C,KAAKy3C,YAAoC,IAAvBz3C,KAAKy2C,iBAAkD,IAAvBz2C,KAAK02C,eACzE12C,KAAK03C,gBAAmBxB,EAAMvK,QAAU3rC,KAAKu2C,eAAe5K,QAAW,QAAU,OACjF3rC,KAAKy2C,eAAgB,IAGrBz2C,KAAK03C,gBAAmBxB,EAAMtK,QAAU5rC,KAAKu2C,eAAe3K,QAAW,KAAO,OAC9E5rC,KAAK02C,eAAgB,IAG7BZ,EAAM55C,UAAU07C,YAAc,SAAU2B,GACpC,IAAIC,EAAOD,EAAI5N,QACX8N,EAAOF,EAAI3N,QACX8N,EAAOvxC,KAAK83B,MACZ0Z,EAAQH,EAAOx5C,KAAKs2C,WAAW3K,QAC/BiO,EAAQH,EAAOz5C,KAAKs2C,WAAW3K,QAC/BvpC,EAAWs3C,EAAO15C,KAAK22C,YAC3B,OAAOnwC,KAAKs7B,KAAK6X,EAAQA,EAAQC,EAAQA,GAASx3C,GAGtD0zC,EAAM55C,UAAU68C,WAAa,SAAUjpB,EAAKpd,GACxC,IAAIzV,EAAO,CAAC,SAAU,UAClByT,EAAOgC,EAAO,CAAC,SAAU,OAAS,CAAC,QAAS,QAChD,OAAKod,EAAI7yB,EAAK,GAAKyT,EAAK,KAAOof,EAAI7yB,EAAK,GAAKyT,EAAK,MAGf,IAA3Bof,EAAI7yB,EAAK,GAAKyT,EAAK,KACtBof,EAAI7yB,EAAK,GAAKyT,EAAK,IAAMof,EAAI7yB,EAAK,GAAKyT,EAAK,KAAOof,EAAI7yB,EAAK,GAAKyT,EAAK,MAE/EolC,EAAM55C,UAAUi6C,oBAAsB,SAAU7L,GAG5C,OADYA,EAAIiB,gBAAgD,IAA9BjB,EAAIiB,eAAe1uC,OAAeytC,EAAIiB,eAAe,GAAKjB,GAGhGhN,GAAW,CACP/9B,MACDu2C,EAAM55C,UAAW,WAAO,GAC3BohC,GAAW,CACP/9B,MACDu2C,EAAM55C,UAAW,eAAW,GAC/BohC,GAAW,CACP/9B,MACDu2C,EAAM55C,UAAW,aAAS,GAC7BohC,GAAW,CACP/9B,MACDu2C,EAAM55C,UAAW,cAAU,GAC9BohC,GAAW,CACP3B,GAAS,MACVma,EAAM55C,UAAW,oBAAgB,GACpCohC,GAAW,CACP3B,GAAS,MACVma,EAAM55C,UAAW,wBAAoB,GACxCohC,GAAW,CACPvB,GAAQ,GAAI6Z,KACbE,EAAM55C,UAAW,qBAAiB,GACrC45C,EAAQxY,GAAW,CACfjB,IACDyZ,GAhQoB,CAkQzBhf,IC3TE+iB,GAAa,CACb,SACA,QACA,cACA,4BACA,kCACA,wCACA,oCACA,uBACA,0BACA,0BACA,2CAEAC,GAAc,CACd,CAAEC,UAAW,OAAQvqB,SAAU,yBAC/B,CAAEuqB,UAAW,aAAcvqB,SAAU,+BACrC,CAAEuqB,UAAW,QAASvqB,SAAU,0BAChC,CAAEuqB,UAAW,QAASvqB,SAAU,0BAChC,CAAEuqB,UAAW,OAAQvqB,SAAU,qCAE/BwqB,GAAW,CAAC,WACZ,UACA,cACA,aACA,YACA,SACA,UACA,SACA,UACA,eACA,iBACA,UACA,WACA,eACA,iBACA,gBACA,SACA,YACA,mBACA,WACA,UACA,gBACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,UACA,eACA,cACA,cACA,UACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,YACA,cACA,cACA,aACA,cACA,YACA,eACA,YACA,SACA,WACA,aACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,qBACA,SACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,SACA,WACA,iBACA,YACA,eACA,eACA,eACA,UACA,oBAEAC,GAAoC,WACpC,SAASA,KA2ET,OAzEAA,EAAmBC,eAAiB,WAChC,MAAO,CACHC,UAAW,CACPC,KAAMP,GACN9nB,WAAY+nB,MAKxBG,EAAmBI,SAAW,SAAU79C,GACpC,IAAI89C,EAAOt6C,KAAKk6C,iBAEhB,OADal6C,KAAKu6C,eAAeD,EAAM99C,IAG3Cy9C,EAAmBM,eAAiB,SAAUD,EAAM99C,GAChDwD,KAAK85C,YAAcQ,EAAKH,UAAUpoB,WAClC/xB,KAAK65C,WAAaS,EAAKH,UAAUC,KACjCp6C,KAAKw6C,YAAch6C,SAASW,cAAc,OAC1CnB,KAAKw6C,YAAYv4C,UAAYzF,EAC7BwD,KAAKy6C,gBACLz6C,KAAK06C,iBACL16C,KAAK26C,iBACL,IAAIC,EAAe56C,KAAKw6C,YAAYv4C,UAEpC,OADAjC,KAAK66C,gBACED,GAEXX,EAAmBY,cAAgB,WAG/B,IADA,IAAIC,EAAQ96C,KAAKw6C,YAAYlrB,SACpBnoB,EAAI,EAAGA,EAAI2zC,EAAMj+C,OAAQsK,IAE9B,IADA,IAAI4yC,EAAYe,EAAM3zC,GAAG4qB,WAChBn1B,EAAI,EAAGA,EAAIm9C,EAAUl9C,OAAQD,IAClCoD,KAAKw6C,YAAYlrB,SAASnoB,GAAG63B,gBAAgB+a,EAAUn9C,GAAGm+C,YAItEd,EAAmBQ,cAAgB,WAC/B,IAAIlmB,EAAWv0B,KAAKw6C,YAAYh5C,iBAAiBxB,KAAK65C,WAAWj2C,KAAK,MAClE2wB,EAAS13B,OAAS,GAClB03B,EAASv1B,SAAQ,SAAUgC,GACvBquB,GAAOruB,OAOnBi5C,EAAmBS,eAAiB,WAChC,IAAInmB,EAAWv0B,KAAKw6C,YAAYh5C,iBAAiB,IAAMw4C,GAASp2C,KAAK,OAAS,KAC1E2wB,EAAS13B,OAAS,GAClB03B,EAASv1B,SAAQ,SAAUgC,GACvBg5C,GAASh7C,SAAQ,SAAUg8C,GACnBh6C,EAAQi6C,aAAaD,IACrBh6C,EAAQg+B,gBAAgBgc,UAS5Cf,EAAmBU,eAAiB,WAChC,IAAI56C,EAAQC,KACZA,KAAK85C,YAAY96C,SAAQ,SAAUs7C,EAAM9gC,GACrC,IAAI+a,EAAWx0B,EAAMy6C,YAAYh5C,iBAAiB84C,EAAK9qB,UACnD+E,EAAS13B,OAAS,GAClB03B,EAASv1B,SAAQ,SAAUgC,GACvBA,EAAQg+B,gBAAgBsb,EAAKP,kBAKtCE,EA5E6B,I,6BC7GtChX,EAAOiY,QAAUC,EAAQ,M,6BCH3B,y8EAAIne,EAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GA2BtC,SAASge,EAAKvhC,EAAMwhC,EAAQC,GAC/B,IAAIC,EAAWj9C,YAAO,GAAIub,EAAM,MAgBhC,OAfA0hC,EAASH,MAAK,SAAUrzC,EAAGnB,GAGvB,IAFA,IAAIpI,EAAQ,EACRC,EAAS,EACJ7B,EAAI,EAAGA,EAAIy+C,EAAOx+C,OAAQD,IAC/B4B,GAASuJ,EAAEszC,EAAOz+C,IAClB6B,GAAUmI,EAAEy0C,EAAOz+C,IAEvB,OAAM0+C,GAAgB98C,EAAQC,GAAY68C,GAAgB98C,EAAQC,GACtD,EAEHD,IAAUC,EACR,EAEJ,KAEJ88C,EAGJ,SAASC,EAAaC,GACzB,OAAkC,IAA3BA,EAAMt9C,QAAQ,QAElB,SAASu9C,EAAiBC,GAK7B,IAJA,IAEIC,EAFAC,EAASv9C,YAAO,GAAIq9C,EAAOE,OAAQ,MAAM,GACzCC,EAAa,GAEbC,EAAa,EACRn/C,EAAI,EAAGA,EAAIi/C,EAAOh/C,OAAQD,IAC/Bg/C,EAAYC,EAAOj/C,GACfQ,YAAkBw+C,EAAUz7B,IAAsB,KAAhBy7B,EAAUz7B,IAI5Cy7B,EAAUpiC,MAAQuiC,IAClBD,EAAWljC,KAAKgjC,IAGxB,OAAOE,EAGJ,SAASE,EAAeC,EAAM3qC,EAAM4qC,EAAOC,GAC9C,IACIC,EACA/wC,EACAgxC,EACAC,EAEA3N,EACA4N,EACAd,EACAe,EATAC,EAAW,IAAIC,IAAYP,EAAMn7C,QAAQwX,IAKzCmkC,EAAiB,GA4BrB,GAvBAtxC,EAAU,CACNmN,GAAI,cACJ2H,EAAGg8B,EAAMS,gBAAgBz8B,EACzB9K,EAAG8mC,EAAMS,gBAAgBvnC,EACzB,YAAa4mC,EAAKY,KAClB,aAAcZ,EAAKa,UACnB,cAAeb,EAAKc,WACpB,cAAed,EAAKe,WACpB,UAAa,UAAYd,EAAQ,UACjC,cAAe,UAIfI,EAFAd,EAAalqC,IACbqrC,EAAiBrrC,EAAK3U,MAAM,SACD,GAGf2U,EAEhB+qC,EAAaI,EAASQ,WAAW5xC,EAASixC,GACrCH,EAAMe,aAAgBf,EAAMgB,QAC7BhB,EAAMn7C,QAAQY,YAAYu6C,EAAMiB,WAGN,kBAAnBT,GAA+BA,EAAe9/C,OAAS,EAC9D,IAAK,IAAID,EAAI,EAAGkF,EAAM66C,EAAe9/C,OAAQD,EAAIkF,EAAKlF,IAClD+xC,EAAU0O,YAAYV,EAAe//C,GAAIq/C,GAAMtN,OAC/C4N,EAAMlxC,EAAQgK,EAAOzY,EAAI+xC,EACzB8M,EAAQkB,EAAe//C,GACvB4/C,EAAeC,EAASa,YAAY,CAChC,EAAKjyC,EAAQ8U,EAAG,GAAM9U,EAAQmN,GAC9B,EAAK+jC,GACNd,GACHY,EAAWz6C,YAAY46C,GAS/B,OANAL,EAAMiB,UAAUx7C,YAAYy6C,GAC5BD,EAAMC,EAAWrb,wBACjB3Y,YAAOg0B,GACFF,EAAMe,aAAgBf,EAAMgB,QAC7B90B,YAAO8zB,EAAMiB,WAEV,IAAIG,IAAMnB,EAAI1a,MAAQ0a,EAAI3a,KAAQ2a,EAAIxa,OAASwa,EAAIza,KAGvD,SAASkZ,EAAcriC,GAC1B,IAAKA,EACD,OAAO,KAEX,IAAIxX,EAAwB,kBAAPwX,EAAkBglC,EAAWhlC,GAAMA,EACpDxX,GACAqnB,YAAOrnB,GAIR,SAASy8C,EAAQjhD,EAAO2M,GAC3B,OAAO3C,KAAKk3C,IAAIlhD,GAASgK,KAAKk3C,IAAIv0C,GAG/B,SAASw0C,EAAYrsC,EAAM6O,EAAG9K,EAAGuoC,EAAWplC,EAAIxX,EAAS6kB,EAASg4B,GAErE,IAAIC,EAAUt9C,SAAS+sB,eAAe/U,GAClCqkC,EAAOQ,YAAY/rC,EAAM,CACzByrC,WAAY,WAAYF,KAAM,OAC9BC,UAAW,SAAUE,WAAY,YAEjCtO,EAAQmO,EAAKnO,MAAQ,GACzBvuB,EAAKA,EAAIuuB,EAAQkP,EAAaz9B,GAAKuuB,EAAQ,IAAMvuB,EACjD9K,EAAIwoC,EAA0BxoC,EAAIwnC,EAAKlO,OAAS,EAAKt5B,EAAI,GACpDyoC,IAgBDA,EAAQ77C,UAAYqP,EACpBwsC,EAAQtrB,MAAMmP,IAAOtsB,EAAGnJ,WAAa,KACrC4xC,EAAQtrB,MAAMiP,MAAQthB,EAAI,IAAIjU,WAAa,OAjB3C4xC,EAAU38C,YAAc,MAAO,CAC3Bc,UAAWqP,EACXkH,GAAIA,EACJ+Z,OAAQ,OAAUld,EAAGnJ,WAAa,YAAciU,EAAI,IAAIjU,WAAhD,gQAKZlL,EAAQY,YAAYk8C,GACT5oC,SAAS4oC,EAAQtrB,MAAMiP,KAAK/kC,QAAQ,KAAM,IAAK,IAC/C,IACPohD,EAAQtrB,MAAMiP,KAAO,QAQzB5b,GACAzlB,YAAW,WAAcy6C,EAAcriC,KAAQ,MAIhD,SAASulC,EAAOvhD,EAAO+U,GAC1B,OAAQ/U,EAAQ+U,EAAMa,KAAS5V,EAAQ+U,EAAMY,IAG1C,SAAS6rC,EAAOxhD,EAAO+U,GAC1B,OAAQ/U,GAAS+U,EAAMa,KAAS5V,GAAS+U,EAAMY,IAG5C,SAAS8rC,EAAUzhD,EAAOmuC,GAO7B,OALInuC,EADmB,gBAAnBmuC,EAAKuT,UACGT,EAAQjhD,EAAOmuC,EAAK8S,SAGpBjhD,EAKT,SAAS2hD,EAAYC,EAAeC,EAAcC,EAAW3C,GAChE,IAAI4C,EAAMN,EAAUI,EAAaG,OAAQ7C,EAAO8C,OAC5CC,EAAMN,EAAgBH,EAAUG,EAAcI,OAAQ7C,EAAO8C,OAASF,EACtEI,EAAML,EAAYL,EAAUK,EAAUE,OAAQ7C,EAAO8C,OAASF,EAC9DK,EAASp4C,KAAKC,MAAMk1C,EAAO8C,MAAMI,aAAa1sC,KAC9C2sC,EAAOt4C,KAAKu4C,KAAKpD,EAAO8C,MAAMI,aAAazsC,KAC/C,OAASssC,GAAOE,GAAUF,GAAOI,GAAUP,GAAOK,GAAUL,GAAOO,GAC9DH,GAAOC,GAAUD,GAAOG,GAAUF,GAAUF,GAAOE,GAAUD,EAG/D,SAASK,EAAIC,GAEhB,IADA,IAAID,EAAM,EACDhhD,EAAK,EAAGkhD,EAAWD,EAAQjhD,EAAKkhD,EAASriD,OAAQmB,IAAM,CAE5DghD,GADYE,EAASlhD,GAGzB,OAAOghD,EAsBJ,SAASG,EAAkBjQ,EAAMkQ,GAKpC,OAJAlQ,EAAK/uB,GAAKi/B,EAAU3d,KACpByN,EAAK75B,GAAK+pC,EAAUzd,IACpBuN,EAAKR,OAAS0Q,EAAU3d,KAAO2d,EAAU1d,MACzCwN,EAAKP,QAAUyQ,EAAUzd,IAAMyd,EAAUxd,OAClCsN,EAGJ,SAASmQ,EAAanQ,EAAMkQ,GAK/B,OAJAlQ,EAAK/uB,GAAKi/B,EAAUj/B,EACpB+uB,EAAK75B,GAAK+pC,EAAU/pC,EACpB65B,EAAKR,OAAS0Q,EAAUj/B,EAAIi/B,EAAU1Q,MACtCQ,EAAKP,QAAUyQ,EAAU/pC,EAAI+pC,EAAUzQ,OAChCO,EAGJ,SAASoQ,EAAiBC,EAAQ1d,EAAQ2d,GAC7C,IAAIC,EAAUF,EAAS/4C,KAAKk5C,GAAM,IAClC,OAAO,IAAIC,GAAcn5C,KAAKo5C,IAAIH,GAAU5d,EAAS2d,EAAOr/B,EAAG3Z,KAAKq5C,IAAIJ,GAAU5d,EAAS2d,EAAOnqC,GAG/F,SAASyqC,EAAeP,GAC3B,OAAOA,GAAU/4C,KAAKk5C,GAAK,KAGxB,SAASK,EAA+BC,EAAcC,EAASC,EAAShE,GAE3E,IADA,IAAIiE,EAA2B,GACtBvjD,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAIs5C,EAAQ8J,EAAapjD,GAErBwjD,EAAQlK,EAAM/1B,EAAI8/B,EAClBI,EAAQnK,EAAM7gC,EAAI6qC,EAElBI,EAAWF,EAAQ55C,KAAKo5C,IAAIE,EAAe5D,IAAUmE,EAAQ75C,KAAKq5C,IAAIC,EAAe5D,IACrFqE,EAAWH,EAAQ55C,KAAKq5C,IAAIC,EAAe5D,IAAUmE,EAAQ75C,KAAKo5C,IAAIE,EAAe5D,IAEzFhG,EAAM/1B,EAAImgC,EAAWL,EACrB/J,EAAM7gC,EAAIkrC,EAAWL,EACrBC,EAAyBvnC,KAAK,IAAI+mC,GAAczJ,EAAM/1B,EAAG+1B,EAAM7gC,IAEnE,OAAO8qC,EAUJ,SAASK,EAAuBz4C,EAAGnB,GACtC,IACI65C,EACAC,EACAC,EACA/jD,EACAgkD,EACAz5C,EACA05C,EACAC,EARAC,EAAW,CAACh5C,EAAGnB,GASnB,IAAKhK,EAAI,EAAGA,EAAImkD,EAASlkD,OAAQD,IAAK,CAGlC,IAAIokD,EAAUD,EAASnkD,GACvB,IAAKgkD,EAAK,EAAGA,EAAKI,EAAQnkD,OAAQ+jD,IAAM,CAEpC,IAAIK,GAAML,EAAK,GAAKI,EAAQnkD,OACxBqkD,EAAKF,EAAQJ,GACbO,EAAKH,EAAQC,GAEbG,EAAS,IAAIzB,GAAcwB,EAAG9rC,EAAI6rC,EAAG7rC,EAAG6rC,EAAG/gC,EAAIghC,EAAGhhC,GAItD,IAHAsgC,EAAOC,OAAO1kD,EAGTmL,EAAI,EAAGA,EAAIY,EAAElL,OAAQsK,IACtBw5C,EAAYS,EAAOjhC,EAAIpY,EAAEZ,GAAGgZ,EAAIihC,EAAO/rC,EAAItN,EAAEZ,GAAGkO,GAC5CjY,YAAkBqjD,IAASE,EAAYF,KACvCA,EAAOE,IAEPvjD,YAAkBsjD,IAASC,EAAYD,KACvCA,EAAOC,GAMf,IADAE,EAAOC,OAAO9kD,EACTmL,EAAI,EAAGA,EAAIP,EAAE/J,OAAQsK,IACtBw5C,EAAYS,EAAOjhC,EAAIvZ,EAAEO,GAAGgZ,EAAIihC,EAAO/rC,EAAIzO,EAAEO,GAAGkO,GAC5CjY,YAAkByjD,IAASF,EAAYE,KACvCA,EAAOF,IAEPvjD,YAAkB0jD,IAASH,EAAYG,KACvCA,EAAOH,GAKf,GAAID,EAAOG,GAAQC,EAAOL,EACtB,OAAO,GAInB,OAAO,EAWJ,SAASY,EAAS7B,EAAQtJ,GAC7B,IAAIgG,EAAQ11C,KAAK86C,MAAOpL,EAAM7gC,EAAImqC,EAAOnqC,EAAK6gC,EAAM/1B,EAAIq/B,EAAOr/B,GAE/D,OADA+7B,EAAQA,EAAQ,EAAK,MAAQA,EAASA,IACtB,IAAM11C,KAAKk5C,IAGxB,SAAS6B,EAAStC,EAAQzlC,GAE7B,IADA,IAAI+nC,EAAW,GACN3kD,EAAI,EAAGA,GAAK4c,EAAQ,EAAG5c,IAC5B2kD,EAAS3oC,KAAKqmC,EAAOriD,IAEzB,OAAO2kD,EAGJ,SAASC,EAAmBhlD,EAAOmuC,GACtC,IAAIp5B,EAAQo5B,EAAKkU,aACblgD,GAAUnC,EAAQ+U,EAAMY,KAAQZ,EAAMkwC,MAC1C,OAAO9W,EAAK+W,WAAc,EAAI/iD,EAAUA,EAGrC,SAASgjD,EAAmBxhC,EAAG9K,EAAGopC,EAAOmD,EAAOC,EAAYlG,GAC/Dx7B,EAAyB,gBAApBs+B,EAAMP,UAA8BT,EAAQt9B,EAAI,EAAIA,EAAI,EAAGs+B,EAAMhB,SAAWt9B,EACjF9K,EAAyB,gBAApBusC,EAAM1D,UACPT,EAAQpoC,EAAI,EAAIA,EAAI,EAAGusC,EAAMnE,SAAWpoC,EAC5C8K,GAAyB,aAApBs+B,EAAMP,WAAqD,iBAAzBO,EAAMqD,gBAAqD,UAAhBnG,EAAOzxC,KAAmB,GAAM,EAClH,IAAI23B,EAAS8Z,EAAOQ,MAAMta,OAAS2f,EAAmBnsC,EAAGusC,GACrD1L,EA2BD,SAA6B6L,EAAaC,GAC7CA,EAAaA,EAAa,EAAIA,EAAa,IAAMA,EACjD,IAAI9F,EAAQ11C,KAAKk5C,IAAM,IAAM,EAAIqC,GAEjC,OADA7F,GAAiB8F,EAAax7C,KAAKk5C,GAAM,IAClC,CAAEv/B,EAAG3Z,KAAKo5C,IAAI1D,GAAQ7mC,EAAG7O,KAAKq5C,IAAI3D,IA/B7B+F,CAAoBC,EAAwB/hC,EAAGs+B,GAAQ9C,EAAOQ,MAAMgG,aAAaH,YAC7F,MAAO,CACH7hC,EAAIw7B,EAAOyG,SAAS1T,MAAQ,EAAIiN,EAAOyG,SAASjiC,EAAK0hB,EAASqU,EAAM/1B,EACpE9K,EAAIsmC,EAAOyG,SAASzT,OAAS,EAAIgN,EAAOyG,SAAS/sC,EAAKwsB,EAASqU,EAAM7gC,GAOtE,SAASgtC,EAAY7pC,EAAI8pC,QACZ,IAAZA,IAAsBA,GAAU,GACpC,IAAIC,EAAM,CAAC,MAAO,OAYlB,OAXI/pC,EAAGra,QAAQ,YAAc,EACzBokD,EAAM/pC,EAAG7b,MAAM,YAAY,GAAGA,MAAM,WAE/B6b,EAAGra,QAAQ,YAAc,KAAOmkD,GAAYA,IAAuC,IAA5B9pC,EAAGra,QAAQ,cACvEokD,EAAM/pC,EAAG7b,MAAM,YACX,GAAK,IAEJ6b,EAAGra,QAAQ,WAAa,KAAOmkD,GAAYA,IAAuC,IAA5B9pC,EAAGra,QAAQ,gBACtEokD,EAAM/pC,EAAG7b,MAAM,WACX,GAAK,KAEN,IAAI6lD,IAAMttC,SAASqtC,EAAI,GAAI,IAAKrtC,SAASqtC,EAAI,GAAI,KAUrD,SAASL,EAAwB1lD,EAAOmuC,GAC3C,IACI8W,EACA5kD,EAFA0U,EAAQo5B,EAAKkU,aAcjB,MAXuB,aAAnBlU,EAAKuT,WACLuD,EAASlwC,EAAMa,KAA0B,aAAnBu4B,EAAKuT,UAA2BvT,EAAK8X,iBAAmBlxC,EAAMnP,UAAamP,EAAMY,IACvGtV,EAAS8tC,EAAK+X,cAAc7lD,OAAS,EACrC4kD,EAAkB,IAAVA,EAAc,EAAIA,IAI1BA,EAAsC,IAA9B9W,EAAK+X,cAAc7lD,OAAe,EACrC8tC,EAAK+X,cAAc/X,EAAK+X,cAAc7lD,OAAS,GAAGL,MAAQmuC,EAAK+X,cAAc,GAAGlmD,MACrFK,EAAS8tC,EAAK+X,cAAc7lD,QAEzB8tC,EAAK+W,YAAellD,EAAQ+U,EAAMY,KAAOsvC,GAAU,EAAI,EAAK5kD,GAC/D,GAAML,EAAQ+U,EAAMY,KAAOsvC,GAAU,EAAI,EAAK5kD,GA+C/C,SAAS8lD,EAAoBxG,EAAOxR,EAAMpqC,EAAQiZ,EAAOopC,EAAY1T,GAaxE,IAZA,IAGI2N,EAEA18B,EACA9K,EAEAwtC,EACAC,EARAC,EAAkBpY,EAAKoY,gBACvBC,EAASJ,EAAa,QAAU,OAEhCK,EAAY9G,EAAM+G,cAAcxU,MAMhCyU,EAAkBxY,EAAKyY,kBAAkBC,QAAW1Y,EAAK2Y,kBAAoB3Y,EAAK2Y,iBAAiBlG,UACjGzS,EAAKwY,gBAAkB,EACpBvmD,EAAI,EAAGA,EAAI,EAAGA,IACnBigD,EAAOQ,YAAYzgD,EAAI+tC,EAAK4Y,SAAW5Y,EAAK6Y,WAAY7Y,EAAK8Y,YACzDb,GACAC,EAAgBjmD,EAAI,IAAI+iD,GAAczQ,EAAK/uB,EAAIgjC,EAAiBjU,EAAK75B,EARpE,GASG,IAAIsqC,GAAchV,EAAKuE,KAAK/uB,EAAIgjC,EAAkBjU,EAAK75B,EAAI65B,EAAKP,OATnE,GAUDxuB,EAAK+uB,EAAK/uB,GAAK4iC,EAAmB7T,EAAKR,MAjBlC,EAiBmDyU,IAAqBtG,EAAKnO,MAjB7E,IAiBuGyU,IAC5G9tC,EAAK65B,EAAK75B,GAAKzY,EAAI,EAAIsyC,EAAKP,OAASkO,EAAKlO,OAlBrC,GAmBLxuB,GAAMA,EAAI,GAAO8iC,EAAc9iC,EAAI08B,EAAKnO,MAnBnC,EAmBwDqU,GAAoBlG,EAAKnO,MAAQ,EAAKmO,EAAKnO,MAAQ,EAAK,EACrHoU,EAAYY,YAbX,IAaiC,IAAIC,IAAKxjC,EAAG9K,EAAGwnC,EAAKnO,MApBjD,EAoBiEmO,EAAKlO,OApBtE,GAoBwFkU,EApBxF,GAoB+G,GAAO,GAAQE,EAAiBF,EAAc1iC,EAAG0iC,EAAcxtC,GAAKzY,GAbvL,QAgBDimD,EAAoB,IAAIlD,GAAR/iD,EAAuBsyC,EAAK/uB,EAAI+uB,EAAKR,MAhBpD,EAiBqBQ,EAAK/uB,EAjB1B,EAgBkE+uB,EAAK75B,EAAI65B,EAAKP,OAASwU,GAE1FhjC,EAAK+uB,EAAK/uB,GAAKvjB,EAAKsyC,EAAKR,MAAQmO,EAAKnO,MAzBjC,EAyBmD,GACxDr5B,EAAK0tC,EAAmB7T,EAAK75B,EAAIwnC,EAAKlO,OAAS,GAAKwU,EAAoBjU,EAAK75B,EAAI65B,EAAKP,OA1BjF,EA0BmGwU,EACxGL,EAAYY,YApBX,IAoBiC,IAAIC,IAAKxjC,EAAG9K,EAAGwnC,EAAKnO,MA3BjD,EA2BiEmO,EAAKlO,OA3BtE,GA2BwFkU,EA3BxF,EA2B+GE,GAAkBA,GAAiB,EAAOF,EAAc1iC,GAAKvjB,EApBhL,MAoB+LimD,EAAcxtC,IAElN8K,GAASksB,IACTh3B,EAAIA,EAAUwnC,EAAKlO,OAAS,EAAnB,EAA0BtC,IACnC9rC,EAAOqB,YAAYu6C,EAAMM,SAASmH,SAAS,IAAIC,IAAW1H,EAAMn7C,QAAQwX,GAAK,SAAWgB,EAAQ,oBAAsB5c,EAAGu/C,EAAM2H,WAAWC,cAAe,EAAG5H,EAAM2H,WAAWC,cAAe,EAAG,KAAMjB,KACrMkB,GAAY7H,EAAMM,SAAU,IAAIwH,IAAW9H,EAAMn7C,QAAQwX,GAAK,SAAWgB,EAAQ,cAAgB5c,EAAGujB,EAAG9K,EAAG2tC,EAAQpmD,EAAI+tC,EAAK4Y,SAAW5Y,EAAK6Y,YAAa,CAAEU,MAAO/H,EAAM2H,WAAWK,eAAgBpH,WAAY,WAAYC,WAAY,UAAWH,KAAM,QAAUV,EAAM2H,WAAWK,eAAgB5jD,GAEtS,OAAOA,EAIJ,SAAS6jD,EAAajkC,EAAG9K,EAAGgvC,EAAQ3V,EAAOC,GAG9C,YAFc,IAAVD,IAAoBA,EAAQ,QACjB,IAAXC,IAAqBA,EAAS,GAC1BxuB,GAAKkkC,EAAOlkC,EAAIuuB,GAASvuB,GAAKkkC,EAAOlkC,EAAIkkC,EAAO3V,MAAQA,GAASr5B,GAAKgvC,EAAOhvC,EAAIs5B,GAClFt5B,GAAKgvC,EAAOhvC,EAAIgvC,EAAO1V,OAASA,EAGpC,SAAS2V,EAAiB9nD,EAAOqgD,EAAMlS,GAE1C,OADmBA,EAAK+W,WAA6B,EAAKllD,EAAQqgD,EAA7BrgD,EAAQqgD,GACvBlS,EAAKkU,aAAa4C,MAAS9W,EAAKkU,aAAa1sC,IAGhE,SAASoyC,EAAiB/nD,EAAOqgD,EAAMlS,GAE1C,OADkBA,EAAK+W,WAAallD,EAAQqgD,EAAQ,EAAKrgD,EAAQqgD,GAC3ClS,EAAKkU,aAAa4C,MAAS9W,EAAKkU,aAAa1sC,IAGhE,SAASqyC,EAAa7I,GACzB,IAAIzM,EAAOyM,EAAOyG,SACdzG,EAAOQ,MAAMsI,qBACbvV,EAAK/uB,EAAIw7B,EAAOiG,MAAM1S,KAAK/uB,EAC3B+uB,EAAK75B,EAAIsmC,EAAO8C,MAAMvP,KAAK75B,EAC3B65B,EAAKR,MAAQiN,EAAOiG,MAAM1S,KAAKR,MAC/BQ,EAAKP,OAASgN,EAAO8C,MAAMvP,KAAKP,SAGhCO,EAAK/uB,EAAIw7B,EAAO8C,MAAMvP,KAAK/uB,EAC3B+uB,EAAK75B,EAAIsmC,EAAOiG,MAAM1S,KAAK75B,EAC3B65B,EAAKR,MAAQiN,EAAO8C,MAAMvP,KAAKR,MAC/BQ,EAAKP,OAASgN,EAAOiG,MAAM1S,KAAKP,QAIjC,SAAS+V,EAAiB/gD,GAC7B,OAAOA,EAAIyI,OAAO,EAAG,GAAGoK,cAAgB7S,EAAIyI,OAAO,GAuBhD,SAASu4C,EAAkBha,EAAMia,GAKpC,IAJA,IACIC,EACAC,EACAC,EAHAC,EAAWjQ,OAAOkQ,UAIbzrC,EAAQ,EAAGA,EAAQorC,EAAiB/nD,OAAQ2c,IAAS,CAC1D,IAAImiC,EAASiJ,EAAiBprC,GAE9B,GADAqrC,EAAU,GACNlJ,EAAOuJ,UACNva,EAAKvxB,OAASuiC,EAAOwJ,WAA4B,iBAAdxa,EAAKvxB,MAAgD,OAArBuiC,EAAOwJ,WACnExa,EAAKvxB,OAASuiC,EAAOQ,MAAMgG,aAAa/oC,OAASuiC,EAAOwJ,WAKhE,IAJAN,EAAUlJ,EAAOE,OAAOn4C,KAAI,SAAUwyC,EAAO18B,GACzC,OAAO08B,EAAMsI,WAETpD,MAAK,SAAU58C,EAAOC,GAAU,OAAOD,EAAQC,KAChC,IAAnBomD,EAAQhoD,OACRkoD,EAAgC,aAAnBpa,EAAKuT,WAA4BvC,EAAOyJ,OAASzJ,EAAO0J,KAAS1J,EAAOyJ,KAAO,OAAczJ,EAAOyJ,KAGlG,KAFfN,EAASD,EAAQ,IAAOznD,YAAkB2nD,GAC1Bpa,EAAKkU,aAAa1sC,IAA9B4yC,MAEAC,EAAWx+C,KAAK2L,IAAI6yC,EAAUF,SAIlC,IAAK,IAAIQ,EAAU,EAAGA,EAAUT,EAAQhoD,OAAQyoD,IAAW,CACvD,IAAI9oD,EAAQqoD,EAAQS,GAChBA,EAAU,GAAK9oD,GAEA,KADfsoD,EAAStoD,EAAQqoD,EAAQS,EAAU,MAE/BN,EAAWx+C,KAAK2L,IAAI6yC,EAAUF,KAUtD,OAHIE,IAAajQ,OAAOkQ,YACpBD,EAAW,GAERA,EAGJ,SAASO,EAAqBC,GACjC,IAAIC,EACJ,OAAQD,GACJ,IAAK,SACDC,EAAexnB,EAGvB,OAAOwnB,EAUJ,SAASxnB,EAAOynB,EAAaC,EAAYC,EAAUnmB,GACtD,OAAQmmB,EAAWp/C,KAAKo5C,IAAI8F,EAAcjmB,GAAYj5B,KAAKk5C,GAAK,IAAMkG,EAAWD,EAM9E,SAASE,EAAc7kD,EAASnB,EAAO4/B,EAAUkc,EAAQI,EAAY7F,EAAO4P,GAC/E,IAAI7F,EAAU/J,EAAM/1B,EAChB+/B,EAAUhK,EAAM7gC,EAChBs5B,EAAS,EACb3tC,EAAQwxB,MAAMyC,WAAa,SAC3B,IAAI4I,IAAU,IAAIY,QAAQz9B,EAAS,CAC/By+B,SAAUA,EACV5/B,MAAOA,EACPigC,SAAU,SAAU7/B,GACZA,EAAKo/B,UAAYp/B,EAAKJ,QACtBI,EAAKe,QAAQwxB,MAAMyC,WAAa,UAChC0Z,GAAW1uC,EAAKo/B,UAAYp/B,EAAKJ,OAASI,EAAKw/B,SAC/Cz+B,EAAQqzB,aAAa,YAAa,aAAe4rB,EAC3C,IAAMC,EAAU,WAAavR,EAAS,gBAAmBsR,EAAW,KAAQC,EAAW,OAGrGxoC,IAAK,SAAU4jB,GACXt6B,EAAQwxB,MAAMyC,WAAa,GACN,YAAhB0mB,EAAOzxC,MAAsC,WAAhByxC,EAAOzxC,MAAuB47C,GAAY/J,IAAeJ,EAAOE,OAAOh/C,OAAS,GAC9G8+C,EAAOQ,MAAMxzB,QAAQ,oBAAqB,CAAEgzB,OAAQA,EAAOQ,MAAM78C,SAAW,GAAKq8C,OAiC1F,SAASoK,EAAc/kD,EAAS8hD,EAAW3F,EAAQ6I,EAAmBC,GACzE,IAAK9I,IAAY6I,IAAsBhlD,EACnC,OAAO,KAEX,IAAIy+B,EAAW,IACXwmB,IACAxmB,EAAWwmB,GAEf,IAGIC,EAGAr/C,EACA6Q,EAPAyuC,EAAkBH,GAAqBhlD,EAAQ2sB,aAAa,KAC5Dy4B,EAAkBD,EAAgBxpD,MAAM,gBACxC0pD,EAAgBvD,EAAUnmD,MAAM,gBAEhC2pD,EAAY,GACZC,EAAU,GAGdvlD,EAAQqzB,aAAa,IAAK8xB,GAC1B,IAAItoB,IAAU,IAAIY,QAAQt9B,YAAc,OAAQ,CAC5Cs+B,SAAUA,EACVK,SAAU,SAAU7/B,GAChBimD,EAAmB,GACnBE,EAAgB1iD,KAAI,SAAU8iD,EAAYhtC,GAWtC,GAVA8sC,EAAYE,EAAW7pD,MAAM,KAC7B4pD,EAAUF,EAAc7sC,GAAS6sC,EAAc7sC,GAAO7c,MAAM,KAAO2pD,EAC9C,MAAjBA,EAAU,GACVJ,GAAoB,KAGpBA,GAAoBI,EAAU,GAAK,IAC/BroB,EAAOh+B,EAAKo/B,WAAYinB,EAAU,IAAMC,EAAQ,IAAMD,EAAU,GAAKrmD,EAAKw/B,UAAY,IACtFxB,EAAOh+B,EAAKo/B,WAAYinB,EAAU,IAAMC,EAAQ,IAAMD,EAAU,GAAKrmD,EAAKw/B,UAAY,IAEzE,MAAjB6mB,EAAU,IAA+B,MAAjBA,EAAU,GAGlC,IAFAz/C,EAAI,EACJ6Q,EAAuB,MAAjB4uC,EAAU,GAAa,EAAI,EAC1Bz/C,EAAI6Q,GACPwuC,GAAoBjoB,EAAOh+B,EAAKo/B,WAAYinB,EAAUz/C,IAAM0/C,EAAQ1/C,IAAMy/C,EAAUz/C,GAAK5G,EAAKw/B,UAAY,IACtGxB,EAAOh+B,EAAKo/B,WAAYinB,IAAYz/C,IAAM0/C,EAAQ1/C,IAAMy/C,EAAUz/C,GAAK5G,EAAKw/B,UAAY,MAC1F54B,EAGW,MAAjBy/C,EAAU,KACVJ,GAAoB,SAChBjoB,EAAOh+B,EAAKo/B,WAAYinB,EAAU,IAAMC,EAAQ,IAAMD,EAAU,GAAKrmD,EAAKw/B,UAAY,IACtFxB,EAAOh+B,EAAKo/B,WAAYinB,EAAU,IAAMC,EAAQ,IAAMD,EAAU,GAAKrmD,EAAKw/B,UAAY,QAGlGz+B,EAAQqzB,aAAa,IAAK6xB,IAE9BxuC,IAAK,WACD1W,EAAQqzB,aAAa,IAAKyuB,MAW/B,SAAS2D,EAAkBtJ,EAAQ9xC,EAASoxC,EAAUiK,QACxC,IAAbA,IAAuBA,EAAW,gBACtC,IAAIC,EAAcC,GAAczJ,EAAQ9xC,EAAQmN,GAAInN,EAASoxC,GAC7D,GAAIkK,EAAa,CACb,IAAIE,EAAMpK,EAASqK,aAEnB,OADAD,EAAIjlD,YAAY+kD,GACTE,EAGP,OAAOpK,EAASiK,GAAUr7C,GAQ3B,SAAS07C,EAAmB5K,EAAO6K,EAAc11C,EAAMmyC,EAAY9Y,GACtE,IAAIsc,EAMJ,GALAA,EAAW,CACPtlC,QAAQ,EAAOvI,KAAM8tC,IAAiBvc,KAAMA,EAC5Cr5B,KAAMA,EAAM9U,MAAOwqD,EAAcvD,WAAYA,GAEjDtH,EAAMxzB,QAAQu+B,IAAiBD,IAC1BA,EAAStlC,OAAQ,CAClB,IAAIwlC,GAAuD,IAAnCF,EAAS31C,KAAKnT,QAAQ,QAC1CipD,EAAUzc,EAAK0c,WAAeF,EAosBnC,SAA4BG,EAAUh2C,EAAM2qC,GAG/C,IAFA,IAAIsL,EAAkB,GAClBC,EAAcl2C,EAAK3U,MAAM,QACpBC,EAAI,EAAGA,EAAI4qD,EAAY3qD,OAAQD,IAAK,CACzC0U,EAAOk2C,EAAY5qD,GACnB,IAAIigD,EAAOQ,YAAY/rC,EAAM2qC,GAAMvN,MACnC,GAAImO,EAAOyK,GAEP,IADA,IACSG,EADQn2C,EAAKzU,OACM,EAAG4qD,GAAO,IAAKA,EAGvC,GAFAn2C,EAAOA,EAAKnF,UAAU,EAAGs7C,GAAO,OAChC5K,EAAOQ,YAAY/rC,EAAM2qC,GAAMvN,QACnB4Y,EAAU,CAClBC,EAAgB3uC,KAAKtH,GACrB,YAKRi2C,EAAgB3uC,KAAKtH,GAG7B,OAAOi2C,EAxtBCG,CAAmB/c,EAAKgd,kBAAmBV,EAAS31C,KAAMq5B,EAAK8Y,YAC/DmE,GAASjd,EAAKgd,kBAAmBV,EAAS31C,KAAMq5B,EAAK8Y,YAAewD,EAAS31C,KACjFq5B,EAAK+X,cAAc9pC,KAAK,IAAIivC,IAAcT,EAAQH,EAASzqD,MAAOyqD,EAASxD,WAAYwD,EAAS31C,QAQjG,SAASw2C,EAASnd,GACrB,OAAwB,MAAhBA,EAAKod,SAAmC,MAAhBpd,EAAKqd,QAMlC,SAASC,EAAUtd,GACtB,OAAQA,EAAKud,WAAa,GAAKvd,EAAKwd,cAAgB,EAOjD,SAASC,EAA+BlF,EAAevY,GAC1D,IAAIkS,EAA4B,eAArBlS,EAAK0d,YAA+BnF,EAAcxU,MAAQwU,EAAcvU,OACnF,GAAIvxC,YAAkButC,EAAK2d,kBAAmB,CAC1C,IAAIC,GAA8C,eAArB5d,EAAK0d,YAA+B,KAAQ,GAAK1d,EAAK6d,cAEnF,OADAD,EAAwB/hD,KAAK4L,IAAKyqC,GAAQ0L,EAAwB,KAAO,GAIzE,OAAO5d,EAAK2d,iBAOb,SAASG,EAAgBznD,EAASnB,EAAO4/B,EAAUrmB,EAAMsvC,GAC5D,IAAI7qB,IAAU,IAAIY,QAAQz9B,EAAS,CAC/By+B,SAAUA,EACV5/B,MAAOA,EACPuZ,KAAMA,EACN0mB,SAAU,SAAU7/B,GAChBA,EAAKe,QAAQwxB,MAAMyC,WAAa,WAEpCvd,IAAK,SAAUzX,GACPyoD,EACArgC,YAAOpoB,EAAKe,SAGZf,EAAKe,QAAQwxB,MAAMyC,WAAa,aAMzC,SAAS0zB,EAAW/gB,EAAUghB,EAAO/L,EAAMr7B,EAAKnW,EAASowC,EAAOgB,EAAU2F,EAAUyG,EAAgBC,GACvG,IAAIC,EAAgBtM,GAAsB,IAAIC,IAAY,IACtDsM,EAOD,SAAyBphB,EAAUiV,EAAM+L,EAAOv9C,EAASmW,EAAKynC,EAASH,GAC1E,IAAII,EACAzD,EAAe,OACf0D,EAAgBF,EAChBva,EAASya,GAA2B,WAAVP,EAAuB/L,EAAKnO,MAAQ,EAAKmO,EAAKnO,MACxEC,EAAUwa,GAA2B,WAAVP,EAAuB/L,EAAKlO,OAAS,EAAKkO,EAAKlO,OAC1Eya,EAAcD,EAAiBL,EAAQO,YAAc,EACrDC,EAAK1hB,EAASznB,EACdopC,EAAK3hB,EAASvyB,EACdA,EAAIuyB,EAASvyB,GAAMs5B,EAAS,EAC5BxuB,EAAIynB,EAASznB,GAAMuuB,EAAQ,EAC/B,OAAQka,GACJ,IAAK,SACL,IAAK,SACDnD,EAAe,UACf9nD,YAAM0N,EAAS,CAAE,GAAMqjC,EAAQ,EAAG,GAAMC,EAAS,EAAG,GAAM2a,EAAI,GAAMC,IACpE,MACJ,IAAK,QACDL,EAAM,KAAY/oC,EAAI,IAAMopC,EAAtB,OAA8CD,EAAM5a,EAAQ,GAAM,IAAM6a,EAAxE,MACUD,EAAK,KAAOC,EAAM5a,EAAS,GADrC,MAC6D2a,EAAK,KACnEC,GAAO5a,EAAS,GACrBhxC,YAAM0N,EAAS,CAAE,EAAK69C,EAAKM,OAAQn+C,EAAQo+C,OAC3C,MACJ,IAAK,WACDP,EAAM,MAAQI,EAAKF,GAAc,KAAOG,EAAKH,GAAc,OACtDE,EAAKF,GAAc,KAAOG,EAAKH,GAAc,OAC7CE,EAAKF,GAAc,KAAOG,EAAKH,GAAc,OAASE,EAAKF,GAAc,KAAOG,EAAKH,GAC1FzrD,YAAM0N,EAAS,CAAE,EAAK69C,EAAKM,OAAQn+C,EAAQo+C,OAC3C,MACJ,IAAK,iBACDP,EAAM,KAAY/oC,EAAI,IAAMopC,EAAtB,OAA8CD,EAAM5a,EAAQ,GAAM,IAAM6a,EAC9E5rD,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,eACDA,EAAM,KAAYI,EAAK,KAAOC,EAAM5a,EAAS,GAAvC,MAA+D2a,EAAK,KAAOC,GAAO5a,EAAS,GACjGhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,UACDA,EAAM,KAAY/oC,EAAI,IAAMopC,EAAtB,MACUD,EAAK,KAAOC,GAAO5a,EAAS,GADtC,OAEW2a,EAAM5a,EAAQ,GAAM,IAAM6a,EAFrC,MAGUD,EAAK,KAAOC,EAAM5a,EAAS,GAHrC,MAIUxuB,EAAI,IAAMopC,EAAK,KAC/B5rD,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,aACDA,EAAM,KAAY/oC,EAAI,KAAOopC,GAAO5a,EAAS,GAAvC,OACW2a,EAAMF,GAAe,KAAOG,GAAO5a,EAAS,GADvD,OAEW2a,EAAMF,GAAe,KAAOG,EAAM5a,EAAS,GAFtD,MAGUxuB,EAAI,KAAOopC,EAAM5a,EAAS,GAHpC,MAIUxuB,EAAI,KAAOopC,GAAO5a,EAAS,GAAM,KACjDhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,aACDA,EAAM,MAAa/oC,EAAKipC,GAAe,KAAOG,GAAO5a,EAAS,GAAxD,OACW2a,EAAMF,EAAa,GAAM,KAAOG,GAAO5a,EAAS,GAD3D,OAEW2a,EAAMF,EAAa,GAAM,KAAOG,EAAM5a,EAAS,GAF1D,OAGWxuB,EAAKipC,GAAe,KAAOG,EAAM5a,EAAS,GAHrD,OAIWxuB,EAAKipC,GAAe,KAAOG,GAAO5a,EAAS,GAAM,KAClEhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,YACL,IAAK,OACL,IAAK,gBACL,IAAK,SACL,IAAK,YACL,IAAK,gBACL,IAAK,WACL,IAAK,mBACL,IAAK,SACL,IAAK,OACDA,EAAM,KAAY/oC,EAAI,KAAOopC,GAAO5a,EAAS,GAAvC,OACW2a,EAAM5a,EAAQ,GAAM,KAAO6a,GAAO5a,EAAS,GADtD,OAEW2a,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAFrD,MAGUxuB,EAAI,KAAOopC,EAAM5a,EAAS,GAHpC,MAIUxuB,EAAI,KAAOopC,GAAO5a,EAAS,GAAM,KACjDhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,UACL,IAAK,WACDA,EAAM,KAAY/oC,EAAI,KAAOopC,EAAM5a,EAAS,GAAtC,MACU2a,EAAK,KAAOC,GAAO5a,EAAS,GADtC,OAEW2a,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAFrD,MAGUxuB,EAAI,KAAOopC,EAAM5a,EAAS,GAAM,KAChDhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,SACL,IAAK,mBACDA,EAAM,MAAaI,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAAvD,MACU2a,EAAK,KAAOC,EAAM5a,EAAS,GADrC,OAEW2a,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAFrD,OAGW2a,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAAM,KACjEhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,WAID,IAHA,IACIQ,OAAO,EACPC,OAAO,EACF/sD,EAAI,EAAGA,GAAK,EAAGA,IACpB8sD,EAAQhb,EAAQ,EAAKloC,KAAKo5C,IAAKp5C,KAAKk5C,GAAK,KAJpC,GAI4C9iD,IACjD+sD,EAAQhb,EAAS,EAAKnoC,KAAKq5C,IAAKr5C,KAAKk5C,GAAK,KALrC,GAK6C9iD,IAE9CssD,EADM,IAANtsD,EACM,MAAa0sD,EAAKI,GAAQ,KAAOH,EAAKI,GAAQ,IAG9CT,EAAI54B,OAAO,MAAag5B,EAAKI,GAAQ,KAAOH,EAAKI,GAAQ,KAGvET,EAAMA,EAAI54B,OAAO,KACjB3yB,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,QACDzD,EAAe,QACf9nD,YAAM0N,EAAS,CAAE,KAAQmW,EAAK,OAAUmtB,EAAQ,MAASD,EAAOvuB,EAAGA,EAAG9K,EAAGA,IAIjF,MAAO,CAAEu0C,aADTv+C,EAqWG,SAA+Bu8B,EAAUiV,EAAM+L,EAAOv9C,GACzD,IACI69C,EAAM,GAENva,EAASkO,EAAKlO,OACdD,EAAQmO,EAAKnO,MACb4a,EAAK1hB,EAASznB,EACdopC,EAAK3hB,EAASvyB,EAClB,OAAQuzC,GACJ,IAAK,mBACL,IAAK,OACL,IAAK,eACL,IAAK,kBACDM,EAAM,MAAaI,GAAO5a,EAAQ,GAAM,IAAO6a,EAAzC,OACWD,EAAM5a,EAAQ,GAAM,IAAO6a,EAC5C5rD,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,WACD79C,EAAQo+C,KAAO,cACfP,EAAM,MAAaI,GAAO5a,EAAQ,EAAMtF,KAAgB,KAAOmgB,EAAM5a,EAAS,GAAxE,OAAiG2a,GACjG5a,EAAQ,EAAMA,EAAQ,IAAO,KAAO6a,EAAM5a,EAAS,GADnD,OAC4E2a,GAAO5a,EAAQ,EAAMA,EAAQ,IACzG,IAAO6a,EAFP,OAEgCD,GAAO5a,EAAQ,IAAO,IAAO6a,EAF7D,OAEsFD,GAAO5a,EAAQ,IACrG,KAAO6a,EAAM5a,EAAS,GAHtB,OAG+C2a,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAHzF,OAIK2a,EAAM5a,EAAQ,GAAM,KAAO6a,GAAO5a,EAAS,GAJhD,OAIyE2a,EAAM5a,EAAQ,GAAM,KAAO6a,GACpG5a,EAAS,GALT,MAK4B2a,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GALtE,MAK8F2a,EAAM5a,EAAQ,EAC3GtF,KAAgB,KAAOmgB,EAAM5a,EAAS,GAC7ChxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,UACD79C,EAAQo+C,KAAOp+C,EAAQm+C,OACvBn+C,EAAQm+C,OAAS,cACjBN,EAAM,MAAaI,GAAO5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAAxD,MACW2a,EAAM,KAAOC,EAAM5a,EAAS,GADvC,OAEW2a,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAFrD,MAGW2a,EAAM5a,EAAQ,EA/B3B,GA+ByC,KAAO6a,EAAM5a,EAAS,GAH7D,MAIW2a,EAAM,KAAOC,EAAM5a,EAAS,EAAM,GAC/C,KAAO2a,EAAM5a,EAAQ,EAjCrB,GAiCmC,KAAO6a,EAAM5a,EAAS,GAAM,KACnEhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,YACDA,EAAM,MAAaI,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAAvD,MACW2a,EAAM,KAAOC,EAAM5a,EAAS,GADvC,OAEW2a,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAFrD,MAGW2a,EAAM5a,EAAQ,EAxC3B,GAwCyC,KAAO6a,EAAM5a,EAAS,GAH7D,MAIW2a,EAAM,KAAOC,EAAM5a,EAAS,EAAM,GAC/C,KAAO2a,EAAM5a,EAAQ,EA1CrB,GA0CmC,KAAO6a,EAAM5a,EAAS,GAAM,KACnEhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,aACDA,EAAM,MAAaI,GAAO5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAAxD,OACW2a,EAAM5a,EAAQ,GAAM,IAAO6a,EADtC,OAEDD,GAAO5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAF1C,OAE8D2a,GAAO5a,EAAQ,GAAM,KACpF6a,EAAM5a,EAAS,EAjDhB,GA8CE,OAG+C2a,EAAM5a,EAAQ,EAAM,GAAc,IAAO6a,EAC1F,MAAQD,GAAO5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,EAlDnD,GAkDiE,KACrEhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,YACD79C,EAAQo+C,KAAOp+C,EAAQm+C,OACvBn+C,EAAQm+C,OAAS,cACjBN,EAAM,MAAaI,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAAvD,OACW2a,GAAO5a,EAAQ,GAAM,IAAO6a,EADvC,OAEDD,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAFzC,OAGD2a,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,EA3D3C,GAwDE,OAGqE2a,GAAO5a,EAAQ,EAAM,GAC1F,IAAO6a,EAAM,MAAQD,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,EA5DjE,GA4D+E,KACnFhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,SACL,IAAK,SACL,IAAK,iBACL,IAAK,oBACL,IAAK,cACL,IAAK,YACDA,EAAM,MAAaI,EAAU5a,EAAQ,EAAb,GAAmB,KAAO6a,EAAM5a,EAAS,GAA3D,OACD2a,GAAW5a,EAAQ,GAAd,GAAqB,KAAO6a,EAAM5a,EAAS,GAD/C,OAED2a,GAAW5a,EAAQ,GAAd,GAAqB,KAAO6a,EAAM5a,EAAS,GAF/C,OAEwE2a,EACzE5a,EAAQ,EADsE,GAChE,KAAO6a,EAAM5a,EAAS,GAHnC,SAID2a,GAAO5a,EAAQ,GAAOA,EAAQ,IAAO,KAAO6a,EAAM5a,EAAS,EAAMvF,GAJhE,OAKmBkgB,EAAM5a,EAAQ,GAAOA,EAAQ,IAAO,KAAO6a,EAAM5a,EAAS,EAC9EvF,GANC,OAMkCkgB,EAAM5a,EAAQ,GAAOA,EAAQ,IAAO,KAAO6a,EAC5E5a,EAAS,GAPV,OAOmC2a,GAAO5a,EAAQ,GAAOA,EAAQ,IAAO,KAAO6a,EAChF5a,EAAS,GARR,SAQ6C2a,EAAU5a,EAAQ,GAAb,GAAoB,IAAO6a,EAR7E,OASWD,EAAU5a,EAAQ,EAAb,GAAmB,IAAO6a,EAT1C,OAUCD,EAAU5a,EAAQ,EAAb,GAAmB,KAAO6a,EAAM5a,EAAS,GAV/C,OAWC2a,EAAU5a,EAAQ,GAAb,GAAoB,KAAO6a,EAAM5a,EAAS,GAXhD,KAYNhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,MACL,IAAK,cACL,IAAK,iBACDA,EAAM,MAAaI,GAAO5a,EAAQ,GAAM,KAAiB,KAAO6a,EAAU5a,EAAS,EAAd,GAA/D,OACa2a,EAAU5a,EAAQ,GAAb,GAAoB,KAAO6a,EAAU5a,EAAS,EAAd,GADlD,OAED2a,EAAU5a,EAAQ,GAAb,GAAoB,KAAO6a,EAAU5a,EAAS,GAAd,GAFpC,OAGD2a,EAAM5a,EAAQ,EAAM,KAAiB,KAAO6a,EAAU5a,EAAS,GAAd,GAHhD,SAIa2a,GAAO5a,EAAQ,GAAM,KAAiB,KAAO6a,EAAM5a,EAAS,EACxEvF,IALD,OAKqCkgB,EAAM5a,EAAQ,EAAMtF,KAAgB,KAAOmgB,EAC/E5a,EAAS,EAAMvF,IANhB,OAMoDkgB,EAAM5a,EAAQ,EAAMtF,KACxE,KAAOmgB,EAAM5a,EAAS,GAAOvF,IAP7B,OAOiEkgB,EAAM5a,EAAQ,EAC9E,KAAiB,KAAO6a,EAAM5a,EAAS,GAAOvF,IAR/C,SASOkgB,EAAM5a,EAAQ,EAAM,KAAiB,KAAO6a,EAAM5a,EAAS,EACjEvF,GAVD,OAUqCkgB,GAAO5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,EAC/EvF,GAXD,OAWqCkgB,GAAO5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,EAC/EvF,GAZD,OAYqCkgB,EAAM5a,EAAQ,EAAM,KACzD,KAAO6a,EAAM5a,EAAS,EAAMvF,GAb5B,KAcNzrC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,SACD79C,EAAQo+C,KAAO,cACfP,EAAM,MAAaI,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAAvD,MACA2a,EAAK,KAAOC,EAAK5a,GAAU,IAAM2a,EAAK,KAAOC,EAAM5a,EAAS,GAD5D,MAEkB2a,EAAK,KAAOC,EAAM5a,EAAS,GAF7C,OAEsE2a,EACrE5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAAM,KAAO2a,EAAM5a,EAAQ,GAAM,KACrE6a,EAAM5a,EAAS,GACtBhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,OACL,IAAK,mBACL,IAAK,YACL,IAAK,eACL,IAAK,kBACDA,EAAM,MAAaI,EAAM5a,EAAQ,EAAMtF,KAAgB,KAAOmgB,EAAM5a,EAAS,GAAvE,OACmB2a,GAAO5a,EAAQ,GAAM,MAAiB,KAAO6a,EAAM5a,EAAS,GAD/E,MAEmB2a,EAAM,KAAOC,EAAM5a,EAAS,GAF/C,OAEwE2a,EACvE5a,EAAQ,EAAMtF,MAAgB,KAAOmgB,GAAO5a,EAAS,EAAMA,EAAS,GAHrE,OAIa2a,EAAM3a,EAAS,EAAMvF,KAAgB,KAAOmgB,EAAM5a,EAAS,GAJxE,KAKNhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,aACDA,EAAM,MAAaI,EAAM5a,EAAQ,GAAM,KAAO6a,EAAM5a,EAAS,GAAvD,MAA+E2a,EAC/E,KAAOC,EAAK5a,GAAU,IAAM2a,EAAK,KAAOC,EAAM5a,EAAS,GADvD,QAEM2a,EAAK,KAAOC,EAAM5a,EAAS,GAFjC,OAE0D2a,EAAM5a,EAAQ,GAAM,KAC7E6a,EAAM5a,EAAS,GAAM,KAAO2a,EAAM5a,EAAQ,GAAM,KAChD6a,EAAM5a,EAAS,GAJhB,MAKNhxC,YAAM0N,EAAS,CAAE,EAAK69C,IACtB,MACJ,IAAK,MACL,IAAK,WACD79C,EAAQm+C,OAAS,cACjB,IAAI/rB,EAAIj3B,KAAK2L,IAAIw8B,EAAQD,GAAS,EAClCwa,EAzlCZ,SAA+BW,EAAMC,EAAMrsB,EAAGkR,EAAQD,EAAO3xB,GACzD,IAAIgtC,EAAiBzK,EAAiB,IAAK7hB,EAAG,IAAIkiB,GAAckK,EAAMC,IAClEE,EAAiB1K,EAAiB,IAAK7hB,EAAG,IAAIkiB,GAAckK,EAAQnb,EAAQ,GAAKob,IACrF,MAAO,KAAYD,EAAO,IAAMC,EAAzB,OAAmDD,EAAOpsB,GAAK,IAAOqsB,EAAtE,MAAiGrsB,EAAK,IAAOA,EAA7G,UACiCssB,EAAe5pC,EAAI,IAAM4pC,EAAe10C,EADzE,SAC4Gw0C,EAC9Gnb,EAAQ,IAAO,KAAOob,EAAQnb,EAAS,IAFrC,MAEyDkb,EAAQpsB,GAAM,KAAOqsB,EAAOnb,EAAS,IAF9F,MAGAlR,EAAK,IAAOA,EAHZ,UAGqDusB,EAAe7pC,EAAI,IAAM6pC,EAAe30C,EAH7F,KAslCO40C,CAAsBX,EAAIC,EAAI9rB,EAAGkR,EAAQD,GAC/C/wC,YAAM0N,EAAS,CAAE,EAAK69C,IAG9B,MAAO,CAAEU,aAAcv+C,GAnfb6+C,CAAsBtiB,EAAU,IAAI2V,IAAK7O,EAAOC,GAASia,EAAOv9C,GAASu+C,aACnDnE,aAAcA,GA5H5B0E,CAAgBviB,EAAUiV,EAAM+L,EAAOv9C,EAASmW,EAAKqnC,EAAgBC,GAGvF,OAFkBC,EAAc,OAASC,EAAYvD,cAAcuD,EAAYY,aAAcxH,EAAW,IAAIgI,WAAW,CAAChI,EAASjiC,EAAGiiC,EAAS/sC,IAAM,MA4IhJ,SAASmoC,EAAWhlC,GACvB,OAAOhY,SAAS+sB,eAAe/U,GAiB5B,SAAS6xC,EAAiBC,EAAcnO,EAAOoO,EAAY1O,EAAQoL,EAAU/Q,EAAOsU,EAAgBhyC,EAAIiyC,EAAWtN,GACtH,IAAIuN,EAAaJ,EAAatpB,wBAC9Bmb,EAAMwO,4BAA4BC,mBAAmBL,EAAYD,EAAcpU,EAAO2F,EAAQoL,EAAUuD,EAAgBhyC,EAAIiyC,EAAWtN,EAAQuN,GAAY,GAGxJ,SAASG,EAAmBP,EAAcnO,EAAOjG,EAAOyF,EAAQmP,EAAY3N,GAC/E,IAAIzK,EAAgBlyC,SAAS+sB,eAAe4uB,EAAMn7C,QAAQwX,GAAK,iBAA+Bxc,IAAjB2/C,EAAOniC,MAAsBmiC,EAAOoP,SAAWpP,EAAOniC,OAAS,yBACxIk5B,GACAyJ,EAAM6O,gBAAgBC,2BAA2BvY,EAAe4X,EAAcpU,EAAOyF,EAAQA,EAAOuP,OAAOT,UAAWK,EAAYnP,EAAOyG,SAAUjF,GAAQ,GAI5J,SAASgO,GAAeb,EAAcvO,EAAYqP,EAASjP,EAAOjG,EAAOyF,EAAQ0P,EAAaP,EAAY7D,EAAUsD,EAAY1O,EAAQ2O,EAAgBhyC,EAAIiyC,EAAWtN,GAC1K,IAAImO,EACAC,EACJD,EA7BG,SAA6BphC,GAChC,IAAIohC,EAAa,KAEjB,IACQ9qD,SAASgB,iBAAiB0oB,GAAUrtB,SACpCyuD,EAAaE,YAAiBhrD,SAASw1B,cAAc9L,GAAUjoB,UAAU6oB,SAGjF,MAAOjqB,GACHyqD,EAAaE,YAAiBthC,GAElC,OAAOohC,EAkBMG,CAAoBL,GACjC,IACI,IACIM,EAAahqD,OAAM,OAAY2pD,EAAcnV,EAAQ,CAAEA,MAAOA,GAAW,CAAEiG,MAAOA,EAAOR,OAAQA,EAAQzF,MAAOA,GAEhHyV,EAAcL,EAAaA,EAAWI,EAAYvP,EADrCkP,EAAcA,EAAc,YAAc,WACcA,GACrEf,EAAa9xC,GAAG9b,QAAQ,gBAAiB,KAAO,GACpD,GAAIivD,EAAY9uD,OAGZ,IADA,IAAIiF,GADJypD,EAAkBntD,MAAMlC,UAAUmF,MAAMC,KAAKqqD,IACnB9uD,OACjBD,EAAI,EAAGA,EAAIkF,EAAKlF,IACrB0tD,EAAa1oD,YAAY2pD,EAAgB3uD,IAGjD,IAAIgvD,OAAgB,EACU,sBAA1BzP,EAAM5iB,iBACNqyB,EAAgBvB,EAAiBluD,KAAK6D,KAAMsqD,EAAcnO,EAAOoO,EAAY1O,EAAQoL,EAAUpL,EAAOE,GAAayO,EAAgBhyC,EAAIiyC,EAAWtN,GAE9IhB,EAAM0P,SACN1P,EAAM3U,qBAAqBokB,IAGA,UAA1BzP,EAAM5iB,kBACXqyB,EAAgBf,EAAmB1uD,KAAK6D,KAAMsqD,EAAcnO,EAAOjG,EAAOyF,EAAQmP,EAAY3N,GAE1FhB,EAAM0P,SACN1P,EAAM3U,qBAAqBokB,IAIvC,MAAO/qD,GACH,OAAOypD,EAEX,OAAOA,EAGJ,SAASwB,GAAa7P,GAMzB,MAJQ,aAAeA,EAAKY,KACxB,gBAAkBZ,EAAKa,UAAY,iBAAmBb,EAAKe,WAC3D,iBAAmBf,EAAKc,WAAa,YAAcd,EAAK3Z,QACxD,WAAa2Z,EAAKiI,MAAQ,IAI3B,SAAS6H,GAAmB/qD,EAASm8C,GAExC,IAAIkH,EASJ,YAVe,IAAXlH,IAAqBA,GAAS,GAElC38C,SAAS2gC,KAAKv/B,YAAYZ,GAC1BqjD,EAASrjD,EAAQggC,wBACbmc,EACA90B,YAAOrnB,GAGP65C,EAAc75C,EAAQwX,IAEnB6rC,EAGJ,SAAS2H,GAAaz3B,EAAU/b,GAEnC,IADA,IAAIxX,EACKpE,EAAI,EAAG+O,EAAW4oB,EAAS13B,OAAQD,EAAI+O,EAAU/O,IAClD23B,EAAS33B,GAAG4b,GAAGra,QAAQqa,IAAO,IAC9BxX,EAAUuzB,EAAS33B,IAI3B,OAAOoE,EAGJ,SAASirD,GAAS9rC,EAAG9K,EAAGopC,EAAOmD,EAAOC,EAAYlG,GACrDx7B,EAA0B,gBAApBs+B,EAAMP,UAA+BT,EAAUt9B,EAAI,EAAKA,EAAI,EAAIs+B,EAAMhB,SAAWt9B,EACvF9K,EAA0B,gBAApBusC,EAAM1D,UAA+BT,EAAUpoC,EAAI,EAAKA,EAAI,EAAIusC,EAAMnE,SAAWpoC,EACvF8K,EAAIqhC,EAAmBrhC,EAAGs+B,GAC1BppC,EAAImsC,EAAmBnsC,EAAGusC,GAC1B,IAAIsK,EAAWrK,EAAapD,EAAMvP,KAAKP,OAAS8P,EAAMvP,KAAKR,MACvDyd,EAAWtK,EAAaD,EAAM1S,KAAKR,MAAQkT,EAAM1S,KAAKP,OAG1D,OAAO,IAAIgR,GAFKkC,EAAaxsC,EAAK82C,EAAWhsC,EAAK+rC,EAClCrK,GAAc,EAAI1hC,GAAM+rC,GAAY,EAAI72C,GAAM82C,GAsB3D,SAASC,GAAmBC,EAAU9rD,EAAQ+pD,EAAcnN,EAAQmP,EAAWnsC,EAAG9K,EAAGnY,EAAO4lD,EAAWyJ,EAAcC,EAAQC,EAAcxG,GAO9I,QANkB,IAAdqG,IAAwBA,GAAY,QAC9B,IAANnsC,IAAgBA,EAAI,UACd,IAAN9K,IAAgBA,EAAI,UACH,IAAjBk3C,IAA2BA,GAAe,QAC/B,IAAXC,IAAqBA,GAAS,QACb,IAAjBC,IAA2BA,EAAe,MAC1CJ,EACA,OAAO,KAEX,IAAIK,EAAansD,EAAOy1B,cAAc,IAAMs0B,EAAa9xC,IACrDxX,EAAW0rD,GAAclP,EAAW8M,EAAa9xC,IACjDlY,EAAQgqD,EACR7qB,EAAWwmB,GAAoC,IACnD,GAAI9I,GAAUmP,GAAatrD,EAIvB,GAHA9D,EAAQA,IAA8B,QAApB8D,EAAQwtB,QACtB,IAAImxB,IAAgB3+C,EAAQwxB,MAAMrS,GAAGxjB,MAAM,MAAM,IAAOqE,EAAQwxB,MAAMnd,GAAG1Y,MAAM,MAAM,IACrF,IAAIgjD,IAAe3+C,EAAQ2sB,aAAaxN,IAAKnf,EAAQ2sB,aAAatY,KAClEytC,GAA2B,cAAdA,EACbiD,EAAcuE,EAAcA,EAAa38B,aAAa,KAAMwvB,EAAQ2F,EAAWrjB,QAE9E,GAAI+sB,GAAUC,GArdpB,SAA4BzrD,EAASnB,EAAO4/B,EAAUktB,EAAaF,GACtE,IAAIG,EAAW,SAAU1d,GACrBluC,EAAQqzB,aAAa,IAAK6a,EAAK/uB,EAAI,IACnCnf,EAAQqzB,aAAa,IAAK6a,EAAK75B,EAAI,IACnCrU,EAAQqzB,aAAa,QAAS6a,EAAKR,MAAQ,IAC3C1tC,EAAQqzB,aAAa,SAAU6a,EAAKP,OAAS,KAEjD,IAAI9Q,IAAU,IAAIY,QAAQt9B,YAAc,OAAQ,CAC5Cs+B,SAAUA,EACV5/B,MAAOA,EACPuZ,KAAMA,KACN0mB,SAAU,SAAU7/B,GAChB2sD,EAAS,IAAIjJ,IAAK1lB,EAAOh+B,EAAKo/B,UAAWotB,EAAatsC,EAAGwsC,EAAYxsC,EAAIssC,EAAatsC,EAAGlgB,EAAKw/B,UAAWxB,EAAOh+B,EAAKo/B,UAAWotB,EAAap3C,EAAGs3C,EAAYt3C,EAAIo3C,EAAap3C,EAAGpV,EAAKw/B,UAAWxB,EAAOh+B,EAAKo/B,UAAWotB,EAAa/d,MAAOie,EAAYje,MAAQ+d,EAAa/d,MAAOzuC,EAAKw/B,UAAWxB,EAAOh+B,EAAKo/B,UAAWotB,EAAa9d,OAAQge,EAAYhe,OAAS8d,EAAa9d,OAAQ1uC,EAAKw/B,aAElY/nB,IAAK,WACDk1C,EAASD,MAucTE,CAAmBvsD,EAAO,EAAGm/B,EAAU,IAAIkkB,KAAM3iD,EAAQ2sB,aAAa,MAAO3sB,EAAQ2sB,aAAa,MAAO3sB,EAAQ2sB,aAAa,UAAW3sB,EAAQ2sB,aAAa,WAAY8+B,OAEzK,CACD,IAAI/0C,EAAwB,QAAlBpX,EAAMkuB,QACZ,IAAImxB,IAAgBr/C,EAAMkyB,MAAMrS,GAAGxjB,MAAM,MAAM,IAAO2D,EAAMkyB,MAAMnd,GAAG1Y,MAAM,MAAM,IACjF,IAAIgjD,IAAer/C,EAAMqtB,aAAaxN,IAAK7f,EAAMqtB,aAAatY,KAmYvE,SAA8BrU,EAASy+B,EAAUviC,EAAOwa,EAAKyI,EAAG9K,QACzD,IAAN8K,IAAgBA,EAAI,UACd,IAAN9K,IAAgBA,EAAI,KACxB,IAAIy3C,EAA4B,QAApB9rD,EAAQwtB,QAChBo+B,EAAW,SAAUpO,EAAQuO,GACzBD,GACA9rD,EAAQwxB,MAAMrS,GAAKq+B,EAAS,KAC5Bx9C,EAAQwxB,MAAMnd,GAAK03C,EAAS,OAG5B/rD,EAAQqzB,aAAalU,EAAGq+B,EAAS,IACjCx9C,EAAQqzB,aAAahf,EAAG03C,EAAS,MAGzCH,EAAS1vD,EAAMijB,EAAGjjB,EAAMmY,GACxB,IAAIwoB,IAAU,IAAIY,QAAQt9B,YAAc,OAAQ,CAC5Cs+B,SAAUA,EACVK,SAAU,SAAU7/B,GAChB2sD,EAAS3uB,EAAOh+B,EAAKo/B,UAAWniC,EAAMijB,EAAGzI,EAAIyI,EAAIjjB,EAAMijB,EAAGlgB,EAAKw/B,UAAWxB,EAAOh+B,EAAKo/B,UAAWniC,EAAMmY,EAAGqC,EAAIrC,EAAInY,EAAMmY,EAAGpV,EAAKw/B,YAEpI/nB,IAAK,WACDk1C,EAASl1C,EAAIyI,EAAGzI,EAAIrC,MAvZpB23C,CAAqB1sD,EAAOm/B,EAAUviC,EAAOwa,EAAKyI,EAAG9K,QAGpD8nC,GAAUmP,IAActrD,GAAWurD,GACxC9D,EAAgBnoD,EAAO,EAAG,IAAK,UAE/BosD,EACAnsD,EAAO0sD,aAAa3sD,EAAOU,GAG3BT,EAAOqB,YAAYtB,GAwFpB,SAAS4sD,GAAUC,GACtBzrD,OAAOa,cAAc4qD,GAalB,SAASC,GAAUT,EAAazd,GACnC,OAAQyd,EAAYxsC,EAAI+uB,EAAK/uB,EAAI+uB,EAAKR,OAASie,EAAYxsC,EAAIwsC,EAAYje,MAAQQ,EAAK/uB,GACpFwsC,EAAYt3C,EAAI65B,EAAK75B,EAAI65B,EAAKP,QAAUge,EAAYhe,OAASge,EAAYt3C,EAAI65B,EAAK75B,EAGnF,SAASg4C,GAAaV,EAAazd,GACtC,OAAQyd,EAAYxsC,GAAK+uB,EAAK/uB,GAAKwsC,EAAYxsC,EAAIwsC,EAAYje,OAASQ,EAAK/uB,EAAI+uB,EAAKR,OAClFie,EAAYt3C,GAAK65B,EAAK75B,GAAKs3C,EAAYhe,OAASge,EAAYt3C,GAAK65B,EAAK75B,EAAI65B,EAAKP,OAWhF,SAAS2e,GAAe9wD,GAC3B,IAAI+wD,EAAM/wD,EAAM0P,SAAS,IACzB,OAAsB,IAAfqhD,EAAI1wD,OAAe,IAAM0wD,EAAMA,EAGnC,SAASC,GAAkBD,GAC9B,IAAI5uD,EAAS,4CAA4CklB,KAAK0pC,GAC9D,OAAO5uD,EAAS,IAAI8uD,GAAWv4C,SAASvW,EAAO,GAAI,IAAKuW,SAASvW,EAAO,GAAI,IAAKuW,SAASvW,EAAO,GAAI,KACjG,IAAI8uD,GAAW,IAAK,IAAK,KAG1B,SAASC,GAAexJ,GAC3B,IAAIljD,EACJkjD,EAAkB,gBAAVA,EAA0B,QAAUA,EAC5C1jD,SAAS2gC,KAAKv/B,YAAYT,YAAc,OAAQ,CAAEqX,GAAI,uBACtDxX,EAAUR,SAAS+sB,eAAe,qBAC1BiF,MAAM0xB,MAAQA,EACtBA,EAAQxiD,OAAOugC,iBAAiBjhC,GAASkjD,MACzC77B,YAAOrnB,GACP,IAvB6BxE,EAwBzBmxD,EADM,uGACW9pC,KAAKqgC,GAC1B,MAxBO,IAAMoJ,IADgB9wD,EAyBL,IAAIixD,GAAWv4C,SAASy4C,EAAW,GAAI,IAAKz4C,SAASy4C,EAAW,GAAI,IAAKz4C,SAASy4C,EAAW,GAAI,MAxBvFlwB,GAAK6vB,GAAe9wD,EAAMoxD,GAAKN,GAAe9wD,EAAMoK,GA2BnF,SAASinD,GAAmB3J,EAAO4J,IAEtC5J,GADAA,EAAQwJ,GAAexJ,IACTxnD,QAAQ,cAAe,KAC3BG,OAAS,IACfqnD,EAAQA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,GAAKA,EAAM,IAEzE4J,EAASA,GAAU,EAInB,IAFA,IACIC,EADAC,EAAM,IAEDpxD,EAAI,EAAGA,EAAI,EAAGA,IACnBmxD,EAAY74C,SAASgvC,EAAM93C,OAAW,EAAJxP,EAAO,GAAI,IAE7CoxD,IAAQ,MADRD,EAAYvnD,KAAKynD,MAAMznD,KAAK2L,IAAI3L,KAAK4L,IAAI,EAAG27C,EAAaA,EAAYD,GAAU,OACtD5hD,SAAS,KAAKE,OAAO2hD,EAAU7hD,SAAS,IAAIrP,QAEzE,OAAOmxD,EA0JJ,SAASpG,GAASN,EAAUh2C,EAAM2qC,GACrC,IAAIR,EAAQnqC,EACRurC,EAAOQ,YAAY/rC,EAAM2qC,GAAMvN,MACnC,GAAImO,EAAOyK,EAEP,IADA,IACS1qD,EADQ0U,EAAKzU,OACI,EAAGD,GAAK,IAAKA,EAGnC,GAFA6+C,EAAQnqC,EAAKnF,UAAU,EAAGvP,GAAK,OAC/BigD,EAAOQ,YAAY5B,EAAOQ,GAAMvN,QACpB4Y,EACR,OAAO7L,EAInB,OAAOA,EAgCJ,SAASyS,GAAe1xD,EAAO2xD,GAClC,OAAc,OAAV3xD,QAA4BR,IAAVQ,GACa,IAAxBA,EAAM2B,QAAQ,KAAegwD,EAAgB,IAAOj5C,SAAS1Y,EAAO,IAAM0Y,SAAS1Y,EAAO,IAE9F,KAGJ,SAASoqD,GAAczJ,EAAQ3kC,EAAInN,EAASoxC,GAC/C,IAAKU,EACD,OAAO,KAEX,IAAIn8C,EAAUw8C,EAAWhlC,GAIzB,OAHIxX,GAAWqK,GACXoxC,EAAS2R,qBAAqB/iD,EAA6B,aAApBrK,EAAQwtB,QAAyBxtB,EAAQ8rB,WAAW,GAAK9rB,GAE7FA,EA6BJ,SAASgjD,GAAYvH,EAAUzzC,EAAQizC,EAAMiI,EAAO3jD,EAAQ8tD,EAASlR,EAAQmP,EAAWC,EAActG,EAAiBqI,EAAgBC,EAAWC,EAAyBnC,QAC9J,IAAZgC,IAAsBA,GAAU,QACf,IAAjB9B,IAA2BA,GAAe,GAC9C,IAAIkC,EACApS,EACAG,EAEAlrC,EACAq9B,EACA4N,EACAd,EACJgT,EAAgB,CACZ,GAAMzlD,EAAOwP,GACb,EAAKxP,EAAOmX,EACZ,EAAKnX,EAAOqM,EACZ,KAAQ6uC,GAAgB,QACxB,YAAajI,EAAKY,KAClB,aAAcZ,EAAKa,UACnB,cAAeb,EAAKc,WACpB,cAAed,EAAKe,WACpB,cAAeh0C,EAAOg6C,OACtB,cAAiBh6C,EAAO0lD,cACxB,UAAa1lD,EAAOm5B,UACpB,QAAW8Z,EAAK3Z,QAChB,oBAAqBt5B,EAAO2lD,UAEhCr9C,EAA8B,kBAAhBtI,EAAOsI,KAAoBtI,EAAOsI,KAAO+8C,EAAUrlD,EAAOsI,KAAKtI,EAAOsI,KAAKzU,OAAS,GAAKmM,EAAOsI,KAAK,GACnH,IAAIs9C,EAASN,EAAiBA,EAAenuC,EAAI,EAC7C0uC,EAASP,EAAiBA,EAAej5C,EAAI,EAQjD,IAPAgnC,EAAaI,EAASQ,WAAWwR,EAAen9C,EAAMs9C,EAAQC,IACnDr8B,MAAMuqB,WAAad,EAAKc,WACnCV,EAAW7pB,MAAMsqB,UAAYb,EAAKa,UAClCT,EAAW7pB,MAAMs8B,SAAW7S,EAAKY,KACjCR,EAAW7pB,MAAMwqB,WAAaf,EAAKe,WACnCX,EAAW7pB,MAAM0xB,MAAQjI,EAAKiI,MAC9B7H,EAAW7pB,MAAMu8B,WAAa/lD,EAAOg6C,OACV,kBAAhBh6C,EAAOsI,MAAqBtI,EAAOsI,KAAKzU,OAAS,EACxD,IAAK,IAAID,EAAI,EAAGkF,EAAMkH,EAAOsI,KAAKzU,OAAQD,EAAIkF,EAAKlF,IAC/C+xC,EAAU0O,YAAYr0C,EAAOsI,KAAK1U,GAAIq/C,GAAMtN,OAC5C4N,EAAMvzC,EAAOqM,GAAOg5C,GAAazxD,EAAI+xC,EAAW/xC,EAAI+xC,GACpD8M,EAAQ4S,EAAUrlD,EAAOsI,KAAKtI,EAAOsI,KAAKzU,QAAUD,EAAI,IAAMoM,EAAOsI,KAAK1U,GACtEyvD,EACA7P,EAAeC,EAASQ,WAAWwR,EAAehT,EAAO,KAAM,KAAMc,GAAI,IAGzEC,EAAeC,EAASa,YAAY,CAChC,EAAKt0C,EAAOmX,EAAG,GAAMnX,EAAOwP,GAC5B,EAAK+jC,GACNd,GACHY,EAAWz6C,YAAY46C,IAOnC,OAHKgS,GACDpC,GAAmB3P,aAAoBuS,IAAgBzuD,EAAQ87C,EAAYc,EAAQmP,EAAW,IAAK,IAAK,KAAM,KAAMC,GAAc,EAAO,KAAMtG,GAE5I5J,EAKJ,SAAS4S,GAAc9S,GAE1B,IAAI+S,EAAiB/S,EAAMn7C,QAAQmuD,aAAehT,EAAMn7C,QAAQk0B,YAC5Dk6B,EAAkBjT,EAAMn7C,QAAQquD,aAChClT,EAAMmT,aACNJ,EAAiB/S,EAAMmT,WAAWtuD,QAAQmuD,aAE9C,IACII,EADA5gB,EAAS,IAEb,GAA8B,mBAA1BwN,EAAM5iB,gBAAsC,CAC5C,IAAIhoB,EAAQ4qC,EACRqT,EAAej+C,EAAMusC,QAAQuF,OAAS,GAAK,EAC3CoM,EAAel+C,EAAMm+C,uBAAuBC,QAAQ9yD,OACpD0U,EAAMm+C,uBAAuB/gB,OAAS,EAC1C4gB,EAAeh+C,EAAM86B,OAAO1K,IAAMpwB,EAAM86B,OAAOzK,OAAS4tB,EACxD,IAAIjB,EAAYlR,YAAY,aAAc9rC,EAAMkyC,YAAY9U,OAE5DA,GAAUwN,EAAMR,OAAO9+C,OAAUooB,IAAQa,SAAW,GAAK,KAASvU,EAAMq+C,eAAkB,GAAoBrB,EAAa,IACrHgB,GAAiBE,EACnBl+C,EAAMs+C,uBACNlhB,EAAS8gB,GAGjBtT,EAAM+G,cAAgB,IAAI3F,IAAK2Q,GAAe/R,EAAMzN,MAAOwgB,IAAmBA,GAAkB,IAAKhB,GAAe/R,EAAMxN,OAAQygB,GAAmBzgB,IAAWygB,GAAmBzgB,GAEhL,SAASmhB,GAAU3T,GACtBA,EAAM4T,aAAe,IAAIf,IAAe7S,EAAMn7C,QAAQwX,IACtD2jC,EAAMM,SAAWN,EAAM6T,aAAe7T,EAAM4T,aAAe,IAAIrT,IAAYP,EAAMn7C,QAAQwX,IACzFy2C,GAAc9S,GACVA,EAAMmT,YAAwC,UAA1BnT,EAAM5iB,gBAC1B4iB,EAAMiB,UAAYjB,EAAMmT,WAAWW,YAE9B9T,EAAMmT,YAAwC,mBAA1BnT,EAAM5iB,gBAC/B4iB,EAAMiB,UAAYjB,EAAMmT,WAAWY,eAG/B/T,EAAM6T,aACN7T,EAAMiB,UAAYjB,EAAMM,SAAS0T,aAAa,CAC1C33C,GAAI2jC,EAAMn7C,QAAQwX,GAAK,UACvBk2B,MAAOyN,EAAM+G,cAAcxU,MAC3BC,OAAQwN,EAAM+G,cAAcvU,SAIhCwN,EAAMiB,UAAYjB,EAAMM,SAASqT,UAAU,CACvCt3C,GAAI2jC,EAAMn7C,QAAQwX,GAAK,OACvBk2B,MAAOyN,EAAM+G,cAAcxU,MAC3BC,OAAQwN,EAAM+G,cAAcvU,SAWrC,SAASyhB,GAASC,EAAO79B,EAAOkc,GACnC,IAAI4hB,EAAkB,GACtB,OAAQ99B,EAAM+9B,cACV,IAAK,OACDD,EAAkBE,GAASH,EAAO3hB,EAAOlc,GACzC,MACJ,IAAK,OACD89B,EAAgB13C,KAAKgvC,GAASlZ,EAAO2hB,EAAO79B,IAC5C,MACJ,QACI89B,EAAgB13C,KAAKy3C,GAG7B,OAAOC,EAKJ,SAASG,GAAevhB,EAAMwhB,GAWjC,MATiC,SAA7BA,EAAWC,cACCzhB,EAAK/uB,EAEiB,WAA7BuwC,EAAWC,cACJzhB,EAAK/uB,EAAI+uB,EAAKR,MAAQ,EAGtBQ,EAAK/uB,EAAI+uB,EAAKR,MAO3B,SAAS8hB,GAASI,EAAcC,EAAc5U,GAKjD,IAJA,IAGI3qC,EAHAqrC,EAAiBiU,EAAaj0D,MAAM,KACpC8+C,EAAQ,GACR8L,EAAkB,GAEb3qD,EAAI,EAAGkF,EAAM66C,EAAe9/C,OAAQD,EAAIkF,EAAKlF,IAClD0U,EAAOqrC,EAAe//C,GAClBygD,YAAY5B,EAAMnrB,OAAOhf,GAAO2qC,GAAMvN,MAAQmiB,EAC9CpV,EAAQA,EAAMnrB,QAAkB,KAAVmrB,EAAe,GAAK,KAAOnqC,GAGnC,KAAVmqC,GACA8L,EAAgB3uC,KAAKgvC,GAASiJ,EAAcpV,EAAOQ,IACnDR,EAAQnqC,IAGRi2C,EAAgB3uC,KAAKgvC,GAASiJ,EAAcv/C,EAAM2qC,IAClD3qC,EAAO,IAGXmqC,GAAS7+C,IAAMkF,EAAM,GACrBylD,EAAgB3uC,KAAKgvC,GAASiJ,EAAcpV,EAAOQ,IAG3D,OAAOsL,EAoCJ,SAASuJ,GAAqBhI,GACjC,IAAK,IAAIlsD,EAAI,EAAGA,EAAIksD,EAAQiI,YAAYl0D,OAAQD,IAC5CywB,aAAqBy7B,EAAQ9nD,QAAQwX,GAAK,eAAiB5b,GAAGF,QAAQ,gBAAiB,IAAK,mBAGhG2wB,YAAoBy7B,EAAQ9nD,QAAQwX,GAAhBswC,yCAAoE,YAExFz7B,YAAoBy7B,EAAQ9nD,QAAQwX,GAAK,cAG7C,IAQIw4C,GACA,SAAqBrL,EAAYC,GAC7B5lD,KAAKixD,YAActL,EACnB3lD,KAAKkxD,UAAYtL,GAMrBuL,GAA4B,SAAUrzB,GAEtC,SAASqzB,EAAW34C,EAAIixC,EAAM2H,EAAQ9uB,EAAS4M,EAAMmiB,EAAIC,EAAInvB,EAAWovB,GACpE,IAAIxxD,EAAQ+9B,EAAOx8B,KAAKtB,KAAMwY,EAAIixC,EAAM2H,EAAO1iB,MAAO0iB,EAAOlN,MAAO5hB,EAASivB,IAAcvxD,KAS3F,OARAD,EAAMsV,EAAI65B,EAAK75B,EACftV,EAAMogB,EAAI+uB,EAAK/uB,EACfpgB,EAAM4uC,OAASO,EAAKP,OACpB5uC,EAAM2uC,MAAQQ,EAAKR,MACnB3uC,EAAMsxD,GAAKA,GAAU,EACrBtxD,EAAMuxD,GAAKA,GAAU,EACrBvxD,EAAMoiC,UAAYA,GAAwB,GAC1CpiC,EAAMypD,OAA2B,IAAjB4H,EAAO1iB,OAAgC,KAAjB3uC,EAAMypD,OAAiB4H,EAAOlN,MAAQ,cACrEnkD,EAEX,OAbAi9B,EAAUm0B,EAAYrzB,GAafqzB,EAdqB,CAe9BtN,KAGE2N,GACA,SAAqB7iB,EAAQD,EAAO7G,EAAM1nB,EAAG9K,EAAGmD,EAAIyc,EAAYw8B,GAC5DzxD,KAAK2uC,OAASA,EACd3uC,KAAK0uC,MAAQA,EACb1uC,KAAK6nC,KAAOA,EACZ7nC,KAAKmgB,EAAIA,EACTngB,KAAKqV,EAAIA,EACTrV,KAAKwY,GAAKA,EACVxY,KAAKi1B,WAAaA,EAClBj1B,KAAKyxD,oBAAsBA,GAM/BC,GAA8B,SAAU5zB,GAExC,SAAS4zB,EAAal5C,EAAIixC,EAAM2H,EAAQ9uB,EAASqvB,EAAIC,EAAIn0B,GACrD,IAAI19B,EAAQ+9B,EAAOx8B,KAAKtB,KAAMwY,EAAIixC,EAAM2H,EAAO1iB,MAAO0iB,EAAOlN,MAAO5hB,IAAYtiC,KAIhF,OAHAD,EAAM6xD,GAAKA,EACX7xD,EAAM4xD,GAAKA,EACX5xD,EAAM09B,EAAIA,EACH19B,EAEX,OARAi9B,EAAU00B,EAAc5zB,GAQjB4zB,EATuB,CAUhC7N,KAaElE,GACA,SAAuBx/B,EAAG9K,GACtBrV,KAAKmgB,EAAIA,EACTngB,KAAKqV,EAAIA,GAiBbw8C,GACA,SAAmBpwB,EAAMC,EAAOC,EAAKC,GACjC5hC,KAAKyhC,KAAOA,EACZzhC,KAAK0hC,MAAQA,EACb1hC,KAAK2hC,IAAMA,EACX3hC,KAAK4hC,OAASA,GAMlB6rB,GACA,SAAoBhwB,EAAGmwB,EAAGhnD,GACtB5G,KAAKy9B,EAAIA,EACTz9B,KAAK4tD,EAAIA,EACT5tD,KAAK4G,EAAIA,GAMbkrD,GACA,SAAmB5b,EAAOyF,EAAQniC,QAChB,IAAVA,IAAoBA,EAAQ,GAChCxZ,KAAKk2C,MAAQA,EACbl2C,KAAK27C,OAASA,EACd37C,KAAK+xD,UAAYv4C,GAMrBw4C,GACA,SAAsB9b,EAAOyF,EAAQniC,QACnB,IAAVA,IAAoBA,EAAQ,GAChCxZ,KAAKk2C,MAAQA,EACbl2C,KAAK27C,OAASA,I,6BCr2DtB,6oKACO,IAIIlG,EAAO,OAEPwc,EAAe,eAEfC,EAAgB,gBAEhBC,EAAiB,iBAEjBC,EAAc,cAEdC,EAAiB,iBAEjBC,EAAgB,gBAEhBC,EAAY,YAEZC,EAAe,eAEfC,EAAc,cAEdC,EAAiB,iBAEjBC,EAAgB,gBAEhBC,EAAgB,gBAEhBC,EAAe,eAEfC,EAAkB,kBAElBC,EAAiB,iBAEjBC,EAAkB,kBAElBC,EAAiB,iBAEjBC,EAAoB,oBAEpBC,EAAmB,mBAEnBC,EAAkB,kBAElBC,EAAa,aAEbC,EAAa,aAUbC,EAAc,cAEdC,EAAgB,gBAEhBC,EAAkB,kBAIlBC,EAAW,WAEXC,EAAc,cAEdC,EAAc,cAsBdC,EAAoB,oBAEpBC,EAAc,cAEdC,EAAkB,kBAIlBC,EAAc,cAEdC,EAAW,WAEXC,EAAa,aAEbC,EAAiB,iBAEjBC,EAAa,aAEbC,EAAc,cAEdC,EAAiB,iBAEjBC,EAAsB,sBAEtBC,EAAkB,kBAElBC,EAAmB,mBAEnBC,EAAoB,oBAapBC,EAAc,eAEdC,EAAa,cAEbC,EAAY,aAEZC,EAAe,gBAEfC,EAAW,YAEXC,EAAU,WAEVC,EAAsB,wBAEtBC,EAAe,gBAEfC,GAAkB,mBAElBC,GAAkB,mBAgBlBC,GAAiB,qBAYjBC,GAAgB,oBAMhBC,GAAkB,mBAElBC,GAAwB,0BAQxBC,GAAuB,cAQvBC,GAAwB,eAExBC,GAAoB,oBAEpBC,GAAc,cAEdC,GAAa,cAEbC,GAAQ,QAER37C,GAAU,UAEV47C,GAA0B,yBAE1BC,GAAS,SAETC,GAAqB,uBAErBC,GAAwB,0BAIxBC,GAAY,aAEZC,GAAc,eAEdC,GAAiB,mBAEjBC,GAAa,cAEbC,GAAqB,sBAErBC,GAAkB,mBAIlBC,GAAW,WAEXC,GAAiB,kBAEjBC,GAAW,YAEXC,GAAU,WAEVC,GAAiB,kBAEjBC,GAAa,cAgBbC,GAAe,gBAIfC,GAAa,cAEbC,GAAkB,oBAIlBC,GAAY,aAwBZC,GAAe,eAYfC,GAAsB,sBAEtBC,GAAkB,oBAElBC,GAAuB,uBAEvBC,GAAoB,oBAEpBC,GAAgB,gBAEhBC,GAAgB,gBAEhBC,GAAiB,iBAIjBC,GAAkB,kBAElBC,GAAoB,oBAEpBC,GAAa,cAEbC,GAAmB,mBAEnBC,GAAe,eAEfC,GAAkB,kBAElBC,GAAc,cAEdC,GAAc,eAEdC,GAAkB,kBAElBC,GAAiB,iBAEjBC,GAAkB,kBAElBC,GAAgB,iBAMhBC,GAAqB,uBAYrBC,GAAiB,kBAIjBC,GAAmB,qBAEnBC,GAAkB,mBAElBC,GAAgB,oBAEhBC,GAAmB,uBAEnBC,GAAc,iBAMdC,GAAkB,oBAElBC,GAAoB,qBAMpBC,GAAuB,yBAIvBC,GAAmB,qBAQnBC,GAAoB,sBAIpBC,GAAY,aAIZC,GAAiB,mBAEjBC,GAA4B,+BAE5BC,GAAsB,wBAEtBC,GAAwB,0BAExBC,GAAoB,sBAEpBC,GAAmB,qBAEnBC,GAAwB,0BAExBC,GAAqB,uBAErBC,GAAmB,qBAEnBC,GAAsB,wBAMtBC,GAAoB,sBAMpBC,GAAe,gBAMfC,GAAgB,cAEhBC,GAAwB,2BAExBC,GAAgB,iBAEhBC,GAAyB,yBAEzBC,GAAkB,wBAQlBC,GAAqB,uBAMrBC,GAA4B,gCAE5BC,GAAuB,yBAIvBC,GAAmB,qBAMnBC,GAA6B,gCAI7BC,GAAiC,qCAIjCC,GAAoB,sBAEpBC,GAAwB,2BAExBC,GAA2B,kCAE3BC,GAA8B,qCAE9BC,GAAwB,0BAExBC,GAAoB,sBAEpBC,GAAoB,sBAEpBC,GAAsB,wBAItBC,GAA2B,+B,gvDCpfQ,WAK1C,SAASC,EAAyB76D,EAAQ86D,GACtCr7D,KAAKs7D,WAAa,GAClBt7D,KAAKu7D,cAAgB,GACrBv7D,KAAKO,OAASA,EACdP,KAAKq7D,eAAiBA,EACtBr7D,KAAKmoB,mBAETizC,EAAyBl/D,UAAUisB,iBAAmB,WAClDnoB,KAAKO,OAAO8X,GAAGsN,KAA0B3lB,KAAKw7D,kBAAmBx7D,MACjEA,KAAKO,OAAO8X,GAAGsN,KAA8B3lB,KAAK46D,sBAAuB56D,MACzEA,KAAKO,OAAO8X,GAAGsN,KAAiC3lB,KAAK66D,yBAA0B76D,MAC/EA,KAAKO,OAAO8X,GAAGsN,KAA8B3lB,KAAKy7D,4BAA6Bz7D,MAC/EA,KAAKO,OAAO8X,GAAGsN,KAA0B3lB,KAAK07D,sBAAuB17D,MACrEA,KAAKO,OAAO8X,GAAGsN,IAA0B3lB,KAAK27D,oBAAqB37D,MACnEA,KAAKO,OAAO8X,GAAGsN,KAAoC3lB,KAAK86D,4BAA6B96D,OAEzFo7D,EAAyBl/D,UAAUy/D,oBAAsB,WACrD37D,KAAK47D,mBAAoB,GAE7BR,EAAyBl/D,UAAUw/D,sBAAwB,WACvD,IAAI/3C,EAAS3jB,KAAK67D,oBAAoB76D,QAAQg1B,cAAc,yBACxDq6B,EAAQ1sC,EAAOqS,cAAc,wBAC7B8lC,EAAWn4C,EAAOqS,cAAc,wBACpCh2B,KAAK47D,mBAAoB,EACzB57D,KAAKO,OAAOw7D,aAAaA,aAAaC,cACtCh8D,KAAKi8D,QAAQj7D,QAAQwxB,MAAM+gB,QAAU,GACrCvzC,KAAK66D,yBAAyB,CAAEqB,UAAU,IAC1Cl8D,KAAKm8D,QAAQn7D,QAAQwxB,MAAM+gB,QAAU,OACrCuoB,EAAStpC,MAAM+gB,QAAU,GACzB8c,EAAMpuD,UAAYjC,KAAKO,OAAO67D,UAAUzmB,YAAY,gBACpD,IAAIyV,EAAUprD,KAAK67D,oBAAoB76D,QAAQg1B,cAAc,kBAC7Dh2B,KAAKq8D,wBAA0Br8D,KAAKO,OAAOY,cAAc,MAAO,CAAE0rB,UAAW,0CAC7Eu+B,EAAQxpD,YAAY5B,KAAKq8D,0BAE7BjB,EAAyBl/D,UAAUu/D,4BAA8B,SAAUx7D,GACvE,GAAID,KAAKykC,SAAW63B,IAAuBC,SAAU,CACjD,IAAInR,EAAUprD,KAAK67D,oBAAoB76D,QAAQg1B,cAAc,kBACzDrS,EAAS3jB,KAAK67D,oBAAoB76D,QAAQg1B,cAAc,yBACxD8lC,EAAWn4C,EAAOqS,cAAc,wBAChC1kB,EAAOqS,EAAOqS,cAAc,wBAChC,GAAI/1B,EAAKu8D,OAAQ,CACbpR,EAAQqR,WAAWjqC,MAAM+gB,QAAU,OACnC6X,EAAQxpD,YAAY3B,EAAK27B,QACzBkgC,EAAStpC,MAAM+gB,QAAU,OACzBvzC,KAAKi8D,QAAQj7D,QAAQwxB,MAAM+gB,QAAU,OACrCvzC,KAAK08D,eAAe17D,QAAQwxB,MAAM+gB,QAAU,OAC5CjiC,EAAKrP,UAAYhC,EAAK0jB,OACtB,IAAIw4C,EAAUn8D,KAAKO,OAAOY,cAAc,UACpCw7D,EAAO38D,KAAKO,OAAOY,cAAc,OAAQ,CAAE0rB,UAAW,uCAC1DsvC,EAAQv6D,YAAY+6D,GACpB38D,KAAKm8D,QAAU,IAAIS,IAAO,CACtBC,SAAU,mBAEd78D,KAAKm8D,QAAQx2B,SAASw2B,GACtB7qD,EAAKohC,cAAcpd,aAAa6mC,EAAS7qD,QAEpCtR,KAAKm8D,UAAYn8D,KAAK47D,oBAC3BxQ,EAAQqR,WAAWjqC,MAAM+gB,QAAU,GACnClrB,YAAOroB,KAAKm8D,QAAQn7D,SACpB86D,EAAStpC,MAAM+gB,QAAU,GACzBvzC,KAAKi8D,QAAQj7D,QAAQwxB,MAAM+gB,QAAU,GACjCvzC,KAAK88D,aACL98D,KAAK08D,eAAe17D,QAAQwxB,MAAM+gB,QAAU,IAEhDjiC,EAAKrP,UAAYjC,KAAK+8D,eAAe,CAAEt4B,OAAQ63B,IAAuBC,cAIlFnB,EAAyBl/D,UAAU4+D,4BAA8B,SAAU76D,GACnED,KAAK08D,iBACL18D,KAAK88D,WAAa78D,EAAK68D,WACvB98D,KAAK08D,eAAe17D,QAAQwxB,MAAM+gB,QAAUtzC,EAAK68D,WAAa,GAAK,SAG3E1B,EAAyBl/D,UAAU2+D,yBAA2B,SAAU56D,GAChED,KAAKi8D,UACLj8D,KAAKi8D,QAAQC,SAAWj8D,EAAKi8D,WAGrCd,EAAyBl/D,UAAU8gE,wBAA0B,SAAUC,GACnE,IAAIl9D,EAAQC,KACRk9D,EAAOl9D,KAAKO,OAChB,GAAI08D,EAEA,OADAj9D,KAAKm9D,aAAen9D,KAAKO,OAAOY,cAAc,MAAO,CAAE0rB,UAAW,mCAAoCrU,GAAIykD,EAAIxhE,IAAM,iBAC7GuE,KAAKm9D,aAGZ,IAAIC,EAAOF,EAAKG,aAChBr9D,KAAKs9D,gBAAkBJ,EAAK/7D,cAAc,MAAO,CAAE0rB,UAAW,YAAa0F,OAAQ,gBACnF,IAAIgrC,EAAgBL,EAAK/7D,cAAc,MAAO,CAAE0rB,UAAW,2BACvD2wC,EAAe,GACnB,GAAIx9D,KAAKykC,SAAW63B,IAAuBC,SACvC,IAAK,IAAI3/D,EAAI,EAAGA,EAAIsgE,EAAKO,eAAeC,QAAQ7gE,OAAQD,IACpD4gE,EAAa5kD,KAAKskD,EAAKO,eAAeC,QAAQ9gE,GAAG+gE,OAGzD,IAAS/gE,EAAI,EAAGA,EAAIwgE,EAAKvgE,OAAQD,IAAK,CAClC,IAAIghE,EAAOV,EAAK/7D,cAAc,MAAO,CAAE0rB,UAAW,uBAClD+wC,EAAKvpC,aAAa,qBAAsB+oC,EAAKxgE,GAAG+gE,OAChDC,EAAKvpC,aAAa,oBAAqB+oC,EAAKxgE,GAAGnB,KAC/C,IAAIkhE,EAAOO,EAAK/7D,cAAc,OAAQ,CAAEc,UAAWm7D,EAAKxgE,GAAGihE,WAAYhxC,UAAW,sBAGlF,GAFA+wC,EAAKh8D,YAAY+6D,GACjB38D,KAAKs9D,gBAAgB17D,YAAYg8D,GAC7B59D,KAAKykC,SAAW63B,IAAuBwB,OAAQ,CAC/C,IACItkD,EADSxZ,KAAK+9D,6BAA6B,SAC5B5/D,QAAQi/D,EAAKxgE,GAAG+gE,OAC/BK,EAASd,EAAK/7D,cAAc,SAAU,CAAEqX,GAAI0kD,EAAKl8D,QAAQwX,GAAK4kD,EAAKxgE,GAAG+gE,MAAQ,eAC9E1+D,EAAQs+D,EAAc17D,YAC1B5C,EAAM2C,YAAYo8D,GAClBJ,EAAKh8D,YAAY3C,GACJ,IAAI29D,IAAO,CACpBC,SAAU,oBAEPl3B,SAASq4B,GAChBA,EAAO/7D,UAAYuX,GAAS,EAAIxZ,KAAKO,OAAO09D,aAAaP,QAAQlkD,GAAOspC,UAAY,OACpFkb,EAAOE,QAAU,SAAUr9D,GACvBd,EAAMo+D,uBAAuBt9D,EAAE+6B,SAGvC,GAAI57B,KAAKykC,SAAW63B,IAAuBC,UAAYiB,EAAar/D,QAAQi/D,EAAKxgE,GAAG+gE,QAAU,EAAG,CAC7F,IAAIS,EAAUlB,EAAK/7D,cAAc,MAAO,CAAE0rB,UAAW,sCACjDwxC,EAAWnB,EAAK/7D,cAAc,OAAQ,CAAE0rB,UAAW,mCACvDwxC,EAAShqC,aAAa,UAAW+oC,EAAKxgE,GAAGsN,MACzCk0D,EAAQx8D,YAAYy8D,GACpBT,EAAKh8D,YAAYw8D,IAIzB,OADA52C,IAAaG,IAAI3nB,KAAKs9D,gBAAiB,QAASt9D,KAAKs+D,+BAAgCt+D,MAC9EA,KAAKs9D,iBAGpBlC,EAAyBl/D,UAAU6hE,6BAA+B,SAAU3kD,GAExE,IADA,IAAIiiC,EAAS,GACJz+C,EAAI,EAAGA,EAAIoD,KAAKO,OAAO09D,aAAaP,QAAQ7gE,OAAQD,IACzDy+C,EAAOziC,KAAK5Y,KAAKO,OAAO09D,aAAaP,QAAQ9gE,GAAGwc,IAEpD,OAAOiiC,GAEX+f,EAAyBl/D,UAAUiiE,uBAAyB,SAAUviC,GAClE,GAAIA,EAAQ,CACR,IACI+hC,EADYY,EAAa3iC,EAAQ,sBACfjO,aAAa,sBAC9B3tB,KAAKO,OAAOi+D,oBACbx+D,KAAKu7D,cAAgB,GACrBv7D,KAAKs7D,WAAa,GAClBt7D,KAAKy+D,eAAgB,EACrBz+D,KAAK0+D,iBAAiB9iC,IAE1B,IAAI+iC,EAAM/iC,EAAOgjC,YACb9b,EAAoB,SAAR6b,EAAiB,YAAsB,cAARA,EAAsB,aAAe,OACpF/iC,EAAO35B,UAAY6gD,EACnB9iD,KAAK6+D,cAAclB,EAAO7a,KAGlCsY,EAAyBl/D,UAAUwiE,iBAAmB,SAAU9iC,GAE5D,IADA,IAAIkjC,EAAU,GAAGz9D,MAAMC,KAAKtB,KAAKs9D,gBAAgB97D,iBAAiB,qBACzD5E,EAAI,EAAGA,EAAIkiE,EAAQjiE,OAAQD,IAC5BkiE,EAAQliE,KAAOg/B,IACfkjC,EAAQliE,GAAGqF,UAAY,SAInCm5D,EAAyBl/D,UAAU2iE,cAAgB,SAAUlB,EAAO7a,GAChE,IACItpC,EADSxZ,KAAK++D,yBACC5gE,QAAQw/D,GACvB39D,KAAKO,OAAOi+D,mBAAqBhlD,GAAS,IAC1CxZ,KAAKs7D,WAAWxiD,OAAOU,EAAO,GAC9BxZ,KAAKu7D,cAAcziD,OAAOU,EAAO,IAErCxZ,KAAKy+D,eAAgB,EACH,SAAd3b,IACA9iD,KAAKs7D,WAAW1iD,KAAK+kD,GACrB39D,KAAKu7D,cAAc3iD,KAAK,CAAE+kD,MAAOA,EAAO7a,UAAWA,MAG3DsY,EAAyBl/D,UAAU6iE,uBAAyB,WAExD,IADA,IAAI1jB,EAAS,GACJz+C,EAAI,EAAGA,EAAIoD,KAAKs7D,WAAWz+D,OAAQD,IACxCy+C,EAAOziC,KAAK5Y,KAAKs7D,WAAW1+D,IAEhC,OAAOy+C,GAEX+f,EAAyBl/D,UAAUoiE,+BAAiC,SAAUz9D,GAC1E,GAAIb,KAAKykC,SAAW63B,IAAuBC,SAA3C,CAGA,IAAIW,EAAOl9D,KAAKO,OACZq7B,EAAS/6B,EAAE+6B,OACf,GAAiC,cAA7BshC,EAAKO,eAAevzD,KACpB,GAAI0xB,EAAOnH,UAAU1D,SAAS,uBAAyB6K,EAAO8W,cAAcje,UAAU1D,SAAS,uBAK3F,IAJI4sC,EAAQ/hC,EAAOjO,aAAa,yBAE5BgwC,EAAQ/hC,EAAO8W,cAAc/kB,aAAa,uBAE1CgwC,EAAO,CACP,IAAIV,EAAMC,EAAK8B,iBAAiBrB,GAChC39D,KAAKi/D,iBAAkB,EACvBj/D,KAAKk/D,qBAAqBjC,SAG7B,GAAIrhC,EAAOnH,UAAU1D,SAAS,gBAAkB6K,EAAO8W,cAAcje,UAAU1D,SAAS,kBAAmB,CAC5G,IAAIouC,EAASZ,EAAa3iC,EAAQ,sBAClC,GAAIujC,EAAQ,CACR,IAAIxB,EAAQwB,EAAOxxC,aAAa,uBAER,UADpBsvC,EAAMC,EAAK8B,iBAAiBrB,IACxBjuC,OAAOxlB,OAAqB+yD,EAAIvtC,OAAOxlB,MAAqC,SAA7BgzD,EAAKO,eAAevzD,QACvElK,KAAKo/D,eAAgB,GAEzBp/D,KAAKO,OAAOw7D,aAAaA,aAAasD,kBAAkBpC,GACxDj9D,KAAKs/D,yBAAyB1jC,OAU9Cw/B,EAAyBl/D,UAAUgjE,qBAAuB,SAAUjC,GAC3B,aAAjCj9D,KAAKO,OAAOg/D,kBAAmCv/D,KAAKykC,SAAW63B,IAAuBC,UAAav8D,KAAKi/D,iBAMxGj/D,KAAKw/D,YAAcvC,EACnBj9D,KAAKy/D,uBAAuBxC,GACxBj9D,KAAKO,OAAOm/D,kBAAoBzC,IAChCj9D,KAAKO,OAAOw7D,aAAa4D,eAAe1C,GACxCj9D,KAAKO,OAAOw7D,aAAaA,aAAa6D,WAAW5/D,KAAKO,OAAOw7D,aAAa8D,cAAc5C,OAAKjhE,KAEjGgE,KAAK67D,oBAAoBiE,MAAK,GAC9B9/D,KAAK67D,oBAAoB76D,QAAQwxB,MAAMutC,UAAY,OACnD//D,KAAKggE,oBAAoBhgE,KAAK67D,oBAAoB76D,WAblDhB,KAAKigE,2BACLjgE,KAAKkgE,gBAAgBJ,MAAK,GAC1B9/D,KAAKkgE,gBAAgBl/D,QAAQwxB,MAAMutC,UAAY,SAcvD3E,EAAyBl/D,UAAU8jE,oBAAsB,SAAUG,GAC/D,IAAI7/D,EAAQ6/D,EAAUnqC,cAAc,aACpC,GAAI11B,EAAO,CACP,IAAI8/D,EAAQD,EAAUnqC,cAAc,yBAAyBgL,wBAAwB2N,OACrFruC,EAAMkyB,MAAMmP,IAAMy+B,EAAQ,OAGlChF,EAAyBl/D,UAAU+jE,yBAA2B,SAAUhD,GACpE,IAAIC,EAAOl9D,KAAKO,OAChB,GAAIP,KAAKykC,SAAW63B,IAAuBC,UAAyC,cAA7BW,EAAKO,eAAevzD,KAA3E,CAGA,IAAIm2D,EAAWrgE,KAAKO,OAAOY,cAAc,MAAO,CAC5CqX,GAAI0kD,EAAKl8D,QAAQwX,GAAK,eAAgBqU,UAAW,0CAErD7sB,KAAKO,OAAOS,QAAQY,YAAYy+D,GAChCrgE,KAAKkgE,gBAAkBlgE,KAAKsgE,iBAAiBrD,GAAK,GAClDj9D,KAAKkgE,gBAAgBv6B,SAAS06B,KAElCjF,EAAyBl/D,UAAUokE,iBAAmB,SAAUrD,EAAKsD,EAAgB/nD,GACjF,IAAInN,EAAU,IAAIm1D,IAAO,CACrBC,SAAS,EACTC,eAAe,EACfC,eAAe,EACfp7B,OAAQvlC,KAAKO,OAAOglC,OACpB3J,OAAQp7B,SAAS2gC,KACjB+jB,SAAS,EACT5f,UAAWtlC,KAAKO,OAAO+kC,UACvB8lB,QAASprD,KAAKg9D,wBAAwBC,GACtCt7D,KAAM3B,KAAK4gE,WAAWzkE,KAAK6D,MAC3B6gE,QAAS7gE,KAAK8gE,cAAc3kE,KAAK6D,MACjCkC,MAAOlC,KAAK+gE,kBAAkB5kE,KAAK6D,MACnC0uC,MAAO,OACPC,OAAQ,OACRqyB,kBAAmB,CAAExb,OAAQ,UAajC,OAVAn6C,EAAO,kBAAqB,EACxBk1D,GACAl1D,EAAQsY,OAAS3jB,KAAKihE,4BAAuBjlE,GAAW,GACxDqP,EAAQwxD,SAAW,mBAGnBxxD,EAAQsY,OAAS3jB,KAAKihE,yBACtB51D,EAAQwxD,SAA4C,aAAjC78D,KAAKO,OAAOg/D,kBAAmCv/D,KAAKykC,SAAW63B,IAAuBC,SACnG,QAAU/jD,EAAK,2BAA6B,QAAUA,GAEzDnN,GAEX+vD,EAAyBl/D,UAAUujE,uBAAyB,SAAUxC,GAClE,IAAIC,EAAOl9D,KAAKO,OAChB,GAAIP,KAAKykC,SAAW63B,IAAuBC,UAAyC,cAA7BW,EAAKO,eAAevzD,KAA3E,CAGA,IAAIsO,EAAKxY,KAAKykC,SAAW63B,IAAuBC,SAAW,SAAW,OAClE8D,EAAWrgE,KAAKO,OAAOY,cAAc,MAAO,CAC5CqX,GAAI0kD,EAAKl8D,QAAQwX,GAAK,aAAeA,EAAIqU,UAAW,QAAUrU,EAAK,4BAEvExY,KAAKO,OAAOS,QAAQY,YAAYy+D,GAChCrgE,KAAK67D,oBAAsB77D,KAAKsgE,iBAAiBrD,GAAK,EAAOzkD,GAC7DxY,KAAK67D,oBAAoBl2B,SAAS06B,KAEtCjF,EAAyBl/D,UAAU4kE,cAAgB,WAC/CI,GAAgBlhE,KAAKO,SAEzB66D,EAAyBl/D,UAAU0kE,WAAa,WAC5C,GAAI5gE,KAAKykC,SAAW63B,IAAuBwB,QAAU99D,KAAKO,OAAOi+D,kBAC7D,IAAK,IAAI5hE,EAAI,EAAGA,EAAIoD,KAAKO,OAAO09D,aAAaP,QAAQ7gE,OAAQD,IAAK,CAC9DoD,KAAKs7D,WAAW1iD,KAAK5Y,KAAKO,OAAO09D,aAAaP,QAAQ9gE,GAAG+gE,OACzD,IAAIwD,EAAYnhE,KAAKO,OAAO09D,aAAaP,QAAQ9gE,GAAG+gE,MAChDyD,EAAgBphE,KAAKO,OAAO09D,aAAaP,QAAQ9gE,GAAGkmD,UACxD9iD,KAAKu7D,cAAc3iD,KAAK,CAAE+kD,MAAOwD,EAAWre,UAAWse,MAInEhG,EAAyBl/D,UAAU6kE,kBAAoB,SAAU9gE,GAC7DD,KAAKo/D,cAAgBn/D,EAAKe,UAAYf,EAAKe,QAAQg1B,cAAc,0BAC1D/1B,EAAKe,QAAQyzB,UAAU1D,SAAS,kBACnC/wB,KAAKykC,SAAW63B,IAAuBC,SACnCt8D,EAAKe,QAAQyzB,UAAU1D,SAAS,kBAChC/wB,KAAKO,OAAOw7D,aAAaA,aAAasF,sBAAsBrhE,KAAK47D,mBAE5D37D,EAAKe,QAAQyzB,UAAU1D,SAAS,sBACrC/wB,KAAKshE,oBAGJthE,KAAKykC,SAAW63B,IAAuBwB,QAC5C99D,KAAKw7D,qBAGbJ,EAAyBl/D,UAAUqlE,WAAa,WAC5C,GAAKvhE,KAAKy+D,cAAV,CAIIz+D,KAAKu7D,cAAc1+D,QACnBmD,KAAKO,OAAOq3B,cAAc,CAAEqmC,aAAc,CAAEP,QAAS,MAAQ,GAEjE,IAAK,IAAI9gE,EAAI,EAAGA,EAAIoD,KAAKu7D,cAAc1+D,OAAQD,IAC3CoD,KAAKO,OAAOghE,WAAWvhE,KAAKu7D,cAAc3+D,GAAG+gE,MAAO39D,KAAKu7D,cAAc3+D,GAAGkmD,UAAW9iD,KAAKO,OAAOi+D,mBAEhGx+D,KAAKu7D,cAAc1+D,QACpBmD,KAAKO,OAAOihE,eAEhBxhE,KAAKw7D,yBAZDx7D,KAAKw7D,qBAcbJ,EAAyBl/D,UAAU6gE,eAAiB,SAAU98D,GAC1D,IACIowD,EADA6M,EAAOl9D,KAAKO,OAchB,OAZIP,KAAKykC,SAAW63B,IAAuBmF,OACvCpR,EAAQ6M,EAAKd,UAAUzmB,YAAY,iBAAmB11C,EAAKyhE,gBAAgB,GAEtE1hE,KAAKykC,SAAW63B,IAAuBqF,MAC5CtR,EAAQ6M,EAAKd,UAAUzmB,YAAY,gBAE9B31C,KAAKykC,SAAW63B,IAAuBC,SAC5ClM,EAAQ6M,EAAKd,UAAUzmB,YAAY,gBAE9B31C,KAAKykC,SAAW63B,IAAuBwB,SAC5CzN,EAAQ6M,EAAKd,UAAUzmB,YAAY,SAEhC0a,GAEX+K,EAAyBl/D,UAAU0lE,cAAgB,SAAUn9B,GACzD,IAAIrrB,EAOJ,OANIqrB,IAAW63B,IAAuBqF,OAASl9B,IAAW63B,IAAuBmF,OAC7EroD,EAAO,2BAEFqrB,IAAW63B,IAAuBC,WACvCnjD,EAAO,oCAEJA,GAEXgiD,EAAyBl/D,UAAU2lE,cAAgB,SAAUp9B,GACzD,IAAInzB,EAOJ,OANImzB,IAAW63B,IAAuBqF,OAASl9B,IAAW63B,IAAuBmF,OAC7EnwD,EAAO,OAEFmzB,IAAW63B,IAAuBC,UAAYv8D,KAAKykC,SAAW63B,IAAuBwB,SAC1FxsD,EAAO,YAEJA,GAGX8pD,EAAyBl/D,UAAU+kE,uBAAyB,SAAUhhE,EAAMsgE,GACxE,IAAIxgE,EAAQC,KACRk9D,EAAOl9D,KAAKO,OACZiY,EAAK0kD,EAAKl8D,QAAQwX,GAAKxY,KAAK4hE,cAAc5hE,KAAKykC,QAC/C9gB,EAASu5C,EAAK/7D,cAAc,MAAO,CAAE0rB,UAAW,yBAChDi1C,EAAW9hE,KAAKO,OAAOY,cAAc,MAAO,CAAE0rB,UAAW,sBAAuBrU,GAAIA,IACxFspD,EAAS7/D,UAAYjC,KAAK+8D,eAAe98D,GACzC0jB,EAAO/hB,YAAYkgE,GACnB,IAAI7F,EAAUiB,EAAK/7D,cAAc,UAC5Bo/D,IACDvgE,KAAKi8D,QAAU,IAAIW,IAAO,CACtBC,SAAU,qCAEdZ,EAAQh6D,UAAYi7D,EAAKd,UAAUzmB,YAAY31C,KAAK6hE,cAAc7hE,KAAKykC,SACvEzkC,KAAKi8D,QAAQt2B,SAASs2B,GACtBA,EAAQiC,QAAU,SAAUr9D,GACxBd,EAAMgiE,6BAGd,IAAIjE,EAAS99D,KAAKykC,SAAW63B,IAAuBwB,OAChDvB,EAAWv8D,KAAKykC,SAAW63B,IAAuBC,SACtD,GAAIA,GAAYuB,EAAQ,CACpB,IAAIkE,EAAOlE,EAAS,OAAS,SACzBmE,EAAW/E,EAAK/7D,cAAc,UAIlC,GAHAnB,KAAK08D,eAAiB,IAAIE,IAAO,CAC7BC,SAAU,0BAA4BmF,EAAO,eAE7CzF,EAAU,CACV,IAAII,EAAOO,EAAK/7D,cAAc,OAAQ,CAAE0rB,UAAW,2CACnDo1C,EAASrgE,YAAY+6D,QAGrBsF,EAAShgE,UAAYi7D,EAAKd,UAAUzmB,YAAY,SAEpDhyB,EAAO/hB,YAAYqgE,GACnBjiE,KAAK08D,eAAe/2B,SAASs8B,GAC7BA,EAAS/D,QAAU,SAAUr9D,GACpB09D,EAAa19D,EAAE+6B,OAAQ,mBACxB77B,EAAMQ,OAAOw7D,aAAamG,iBAC1BniE,EAAMu/D,4BAGF/C,EACAx8D,EAAMoiE,eAGNpiE,EAAM2+D,mBACN3+D,EAAMu7D,WAAa,GACnBv7D,EAAMw7D,cAAgB,GACtBx7D,EAAM0+D,eAAgB,IAIlC96C,EAAO/hB,YAAYqgE,GAKvB,OAHK1B,GACD58C,EAAO/hB,YAAYq6D,GAEhBt4C,GAEXy3C,EAAyBl/D,UAAUimE,YAAc,WAC7CniE,KAAKO,OAAOw7D,aAAaA,aAAasD,kBAAkBr/D,KAAKw/D,aAC7Dx/D,KAAKO,OAAOw7D,aAAaA,aAAasF,yBAE1CjG,EAAyBl/D,UAAU6lE,yBAA2B,WACtD/hE,KAAKykC,SAAW63B,IAAuBmF,QAAUzhE,KAAKykC,SAAW63B,IAAuBqF,MACxF3hE,KAAKO,OAAO6hE,UAEPpiE,KAAKykC,SAAW63B,IAAuBC,SAC5Cv8D,KAAKO,OAAOw7D,aAAaA,aAAasG,kBAAkB,CAAEpF,IAAKj9D,KAAKw/D,YAAae,eAAgBvgE,KAAK47D,oBAEjG57D,KAAKykC,SAAW63B,IAAuBwB,QAC5C99D,KAAKuhE,cAGbnG,EAAyBl/D,UAAUs/D,kBAAoB,WACnD,GAAIx7D,KAAK47D,kBAAT,CACI,IAAI0G,EAAgBtiE,KAAK67D,oBAAoB76D,QAAQg1B,cAAc,oBACnE3N,YAAOi6C,QAGXtiE,KAAKi/D,iBAAkB,EACvBj/D,KAAK47D,mBAAoB,EACzB57D,KAAKuiE,6BAETnH,EAAyBl/D,UAAUqmE,0BAA4B,WAC3D,GAAKviE,KAAK67D,oBAAV,CAGA,IAAI2G,EAAOhiE,SAAS+sB,eAAevtB,KAAK67D,oBAAoB76D,QAAQwX,IAChExY,KAAK67D,sBAAwB77D,KAAK67D,oBAAoBhkC,aAAe2qC,IACrExiE,KAAK67D,oBAAoB1hD,UACzBkO,YAAOm6C,IAEXxiE,KAAKshE,oBACDthE,KAAKykC,SAAW63B,IAAuBwB,SACvC99D,KAAKu7D,cAAgB,GACrBv7D,KAAKs7D,WAAa,GAClBt7D,KAAKy+D,eAAgB,KAG7BrD,EAAyBl/D,UAAUolE,kBAAoB,WACnD,IAAKthE,KAAKo/D,eAAiBp/D,KAAKkgE,gBAAiB,CAC7C,IAAIuC,EAAYjiE,SAAS+sB,eAAevtB,KAAKkgE,gBAAgBl/D,QAAQwX,IACjExY,KAAKkgE,kBAAoBlgE,KAAKkgE,gBAAgBroC,aAAe4qC,IAC7DziE,KAAKkgE,gBAAgB/lD,UACrBkO,YAAOo6C,IAGfziE,KAAKo/D,eAAgB,GAEzBhE,EAAyBl/D,UAAUojE,yBAA2B,SAAU1jC,GACpE,GAAIA,EACIA,EAAO8W,cAAcje,UAAU1D,SAAS,kBACxC1I,YAAOuT,EAAO8W,eAGdrqB,YAAOuT,QAKX,IADA,IAAIt7B,EAAQN,KAAKs9D,gBAAgBhuC,SACxB1yB,EAAI,EAAGA,EAAI0D,EAAMzD,OAAQD,KAC9Bg/B,EAASt7B,EAAM1D,GAAGo5B,cAAc,sBAE5B3N,YAAOuT,GACPh/B,MAKhBw+D,EAAyBl/D,UAAU0+D,sBAAwB,SAAU36D,GACjE,GAAqC,aAAjCD,KAAKO,OAAOg/D,iBAAhB,CAGA,IAAI57C,EAAS3jB,KAAK67D,oBAAoB76D,QAAQg1B,cAAc,eACxDrS,GAAUA,EAAO4R,oBACjB5R,EAAO4R,kBAAkBtzB,UAAYhC,EAAKowD,SAGlD+K,EAAyBl/D,UAAUqsB,oBAAsB,WACjDvoB,KAAKs9D,iBACL91C,IAAaa,OAAOroB,KAAKs9D,gBAAiB,QAASt9D,KAAKs+D,gCAE5Dt+D,KAAKO,OAAOsY,IAAI8M,KAA0B3lB,KAAKw7D,mBAC/Cx7D,KAAKO,OAAOsY,IAAI8M,KAA8B3lB,KAAK46D,uBACnD56D,KAAKO,OAAOsY,IAAI8M,KAAiC3lB,KAAK66D,0BACtD76D,KAAKO,OAAOsY,IAAI8M,KAA8B3lB,KAAKy7D,6BACnDz7D,KAAKO,OAAOsY,IAAI8M,KAA0B3lB,KAAK07D,uBAC/C17D,KAAKO,OAAOsY,IAAI8M,IAA0B3lB,KAAK27D,qBAC/C37D,KAAKO,OAAOsY,IAAI8M,KAAoC3lB,KAAK86D,8BAxhBnB,GCOvC,SAAS4H,EAAuB9mC,EAAQ+mC,GAE3C,OAAO/mC,EAAO1/B,WAAaymE,KAAY/mC,EAAO1/B,UAS3C,SAAS0mE,EAAcjF,EAAO9jD,EAAMgpD,GACvC,OAAQzlE,YAAkBugE,IAAoB,KAAVA,EAAgB,GAAKmF,IAASrpC,UAAUkkC,EAAO9jD,GAiBhF,SAASkpD,EAAkBC,EAAgB71C,GAC9C4S,uBAAsB,WAClB,IACI5S,EAAS,KAAM61C,KAEnB,MAAOniE,GACHssB,EAAStsB,OAwHd,SAASoiE,EAAqBC,EAAYC,GAE7C,IADA,IAAIxkE,EAAS,GACJ/B,EAAI,EAAGkF,EAAMohE,EAAWrmE,OAAQD,EAAIkF,EAAKlF,IAAK,CACnD,IAAIwmE,EAAOD,EAAUD,EAAWtmE,GAAIA,GAC/BQ,YAAkBgmE,IACnBzkE,EAAOia,KAAKwqD,GAGpB,OAAOzkE,EAGJ,SAAS0kE,EAAcC,GAE1B,IADA,IAAI/mE,EAAM,GACDK,EAAI,EAAGA,EAAI0mE,EAAMzmE,OAAQD,IAC9BL,EAAIqc,KAAK2qD,YAAW,GAAIn7B,EAAoBk7B,EAAM1mE,IAAK,IAAI,IAE/D,OAAOL,EAGJ,SAASinE,EAAiBt5C,GAC7B,GAAIA,EAAU,CAEV,IACI,GAAI1pB,SAASgB,iBAAiB0oB,GAAUrtB,OACpC,OAAO4mE,YAAqBjjE,SAASw1B,cAAc9L,GAAUjoB,UAAU6oB,QAG/E,MAAOjqB,GACH,OAAO4iE,YAAqBv5C,KAMjC,SAASw5C,EAAsBzxC,EAAM0xC,GACxC,IAAIC,EAAW,GACXC,EAAW,CAAC,QAAS,SAEzBN,YAAWK,EAAUD,EAAkB,IACnC,UAAWC,IACX1vC,YAAkBjC,EAAM2xC,EAASC,EAAS,YACnCD,EAASC,EAAS,KAEzB,UAAWD,IACXtvC,YAAS,CAACrC,GAAO2xC,EAASC,EAAS,YAC5BD,EAASC,EAAS,KAE7B9xC,YAAWE,EAAM2xC,GAcd,SAASE,EAAeC,EAAaC,QAC5B,IAARA,IAAkBA,EAAM,GAC5B,IAAK,IAAIpnE,EAAI,EAAGkF,EAAMiiE,EAAYlnE,OAAQD,EAAIkF,EAAKlF,IAC3CmnE,EAAYnnE,GAAG8gE,SACfqG,EAAYnnE,GAAG4c,MAAQpc,YAAkB2mE,EAAYnnE,GAAG4c,OAASwqD,EAAMD,EAAYnnE,GAAG4c,MACtFwqD,IACAA,EAAMF,EAAeC,EAAYnnE,GAAG8gE,QAASsG,KAG7CD,EAAYnnE,GAAG4c,MAAQpc,YAAkB2mE,EAAYnnE,GAAG4c,OAASwqD,EAAMD,EAAYnnE,GAAG4c,MACtFwqD,KAGR,OAAOA,EAGJ,SAASC,EAAevG,EAASwG,EAAWhH,GAC/C,IAAK,IAAIr2D,EAAI,EAAG/E,EAAM47D,EAAQ7gE,OAAQgK,EAAI/E,EAAK+E,IAAK,CAChD,IAAIg8D,OAAS,EACa,kBAAfnF,EAAQ72D,GACfg8D,EAAS,IAAIsB,IAAO,CAAExG,MAAOD,EAAQ72D,IAAMq2D,GAEpCQ,EAAQ72D,aAAcs9D,IAU7BtB,EAASnF,EAAQ72D,GATZ62D,EAAQ72D,GAAG62D,SAIZA,EAAQ72D,GAAG62D,QAAUuG,EAAevG,EAAQ72D,GAAG62D,QAAS,KAAMR,GAC9D2F,EAAS,IAAIsB,IAAOzG,EAAQ72D,GAAIq2D,IAJhC2F,EAAS,IAAIsB,IAAOzG,EAAQ72D,GAAIq2D,GAUpC2F,EAAO34D,MAAsC,aAA9B24D,EAAO34D,KAAKsM,gBAC3BqsD,EAAOuB,iBAAkB,GAE7BvB,EAAOhF,WAAazgE,YAAkBylE,EAAOhF,YAAcgF,EAAOwB,iBAAmBxB,EAAOlF,OAAS,GAAKkF,EAAOhF,WACjHgF,EAAOyB,gBAAkBzB,EAAOyB,iBAAmBzB,EAAOlF,MAC1DkF,EAAOD,eAAiD,kBAAzBC,EAAOD,cAA6BvmE,YAASwmE,EAAOD,cAAelhE,QAC5FmhE,EAAOD,gBAAkBA,EAC/BC,EAAOn0B,MAAQw1B,GAAa9mE,YAAkBylE,EAAOn0B,OAAS,IAAMm0B,EAAOn0B,MACvEtxC,YAAkBylE,EAAO3d,WACzB2d,EAAO3d,SAAU,GAErBwY,EAAQ72D,GAAKg8D,EAEjB,OAAOnF,EAGJ,SAAS6G,EAAkBC,EAAO3jE,EAAGgsB,GACxC,IAGI43C,EAHAC,EAAYF,EAAMxuC,cAAc,QAChC+W,EAAWy3B,EAAM9xB,cAAc1R,wBAC/B2jC,EAAiB9jE,EAAE+6B,OAAOoF,wBAE9B0jC,EAAU73C,UAAYA,EACtB23C,EAAMhyC,MAAM+gB,QAAU,GACtBkxB,GAAgBrnE,YAAkByD,EAAE+qC,SAAW/qC,EAAE0qC,eAAe,GAAGK,QAC/D/qC,EAAE+qC,SAAW44B,EAAM51B,aAAe,GACtC41B,EAAMhyC,MAAMmP,IAAMgjC,EAAehjC,IAAMoL,EAASpL,KAC3C8iC,IAAiBD,EAAM51B,aAAe,IAAM41B,EAAM51B,aAAe,IAAM,KAC5E41B,EAAMhyC,MAAMiP,KAWhB,SAA8BmjC,EAAO/jE,EAAG8jE,EAAgBljC,GACpD,IAAIiN,EAAQk2B,EAAM1vC,YAAc,EAC5B/U,EAAI0kD,EAAYhkE,GAAGsf,EACvB,OAAIA,EAAIwkD,EAAeljC,KAAOiN,EACnBi2B,EAAeljC,KAAOA,EAExBkjC,EAAejjC,MAAQvhB,EAAIuuB,EACzBi2B,EAAejjC,MAAQD,EAAe,EAARiN,EAG9BvuB,EAAIshB,EAAOiN,EArBHo2B,CAAqBN,EAAO3jE,EAAG8jE,EAAgB53B,EAAStL,MAAQ,KAC/EgjC,GACAD,EAAMxuC,cAAc,eAAexD,MAAM+gB,QAAU,GACnDixB,EAAMxuC,cAAc,aAAaxD,MAAM+gB,QAAU,SAGjDixB,EAAMxuC,cAAc,eAAexD,MAAM+gB,QAAU,OACnDixB,EAAMxuC,cAAc,aAAaxD,MAAM+gB,QAAU,IAkBlD,SAASnL,EAAoB7rC,GAChC,OAAIA,aAAeynC,IACR3nC,YAAS,aAAcE,GAGvBA,EAIR,SAASgiE,EAAaiE,EAAMhzC,EAAUu1C,GAEzC,IADA,IAAIxkE,EAASiiE,EACNjiE,KACCwkE,EAAOxkE,EAAOiY,KAAOgX,EAAWjvB,EAAOk0B,UAAU1D,SAASvB,KAG9DjvB,EAASA,EAAOmyC,cAEpB,OAAOnyC,EAuBJ,SAASykE,EAAsB9B,GAElC,IADA,IAAI+B,EAAO,GACFroE,EAAI,EAAGkF,EAAMohE,EAAWrmE,OAAQD,EAAIkF,EAAKlF,IAC1CsmE,EAAWtmE,GAAG4C,eAAe,cAC7BylE,EAAKrsD,KAAKsqD,EAAWtmE,GAAGy1B,YAGxB4yC,EAAKrsD,KAAKsqD,EAAWtmE,IAG7B,OAAOqoE,EAUJ,SAASJ,EAAYhkE,GACxB,IAAIksC,EAAW,GAKf,OAJAA,EAAS5sB,EAAK/iB,YAAkByD,EAAE8qC,SAAW9qC,EAAE0qC,eAAe,GAAGI,QAC7D9qC,EAAE8qC,QACNoB,EAAS13B,EAAKjY,YAAkByD,EAAE+qC,SAAW/qC,EAAE0qC,eAAe,GAAGK,QAC7D/qC,EAAE+qC,QACCmB,EAEX,IAAItxC,EAAM,EAEH,SAASypE,EAAOvyD,GACnB,OAAOA,EAASlX,IAGb,SAAS0pE,EAAe3C,EAAMlzC,GACjC,IAAK,IAAI1yB,EAAI,EAAGkF,EAAMwtB,EAASzyB,OAAQD,EAAIkF,EAAKlF,IACxCkF,IAAQwtB,EAASzyB,OACjB2lE,EAAK5gE,YAAY0tB,EAAS1yB,IAG1B4lE,EAAK5gE,YAAY0tB,EAAS,IAGlC,OAAOkzC,EAeJ,SAAS4C,EAAmBl7D,EAAM2P,EAAMgpD,EAAQ3qD,GACnD,GAAa,WAAThO,EAAmB,CACnB,IAAIwG,EAAOmyD,EAAOwC,gBAIlB,MAHoB,kBAAT30D,IACPA,EAAOrU,YAASqU,EAAMhP,SAEnBgP,EAAOA,EAAKpP,KAAK4W,EAAS2B,EAAMgpD,GAAU,GAErD,OAAQA,EAAOlF,SAAS9jD,GAAQA,aAAgBzb,MAAS0kE,IAASwC,WAAWp7D,EAAKsM,eAAeqD,EAAMgpD,EAAOlF,OAAS,KAG3H,IAeI4H,EA6eOC,EA5fPz6B,EAAc,KAEX,SAAS06B,IACZ,GAAoB,OAAhB16B,EACA,OAAOA,EAEX,IACIvuC,EADAkpE,EAAUllE,SAASW,cAAc,OAMrC,OAJAukE,EAAQlzC,MAAMmzC,QAAU,8EACxBnlE,SAAS2gC,KAAKv/B,YAAY8jE,GAC1BlpE,EAASkpE,EAAQxwC,YAAcwwC,EAAQvW,YAAe,EACtD3uD,SAAS2gC,KAAKxL,YAAY+vC,GACnB36B,EAAcvuC,EAKlB,SAASopE,EAAa5kE,GACzB,QAAkBhF,IAAdupE,EACA,OAAOA,EAEX,IAAIM,EAAQ1kE,YAAc,QAAS,CAAE0rB,UAAW,UAAW0F,OAAQ,uBACnEszC,EAAM5jE,UAAY,uCAClBjB,EAAQY,YAAYikE,GACpB,IAAI32B,EAAO22B,EAAM7vC,cAAc,MAAMgL,wBAGrC,OAFAhgC,EAAQ20B,YAAYkwC,GACpBN,EAAY/+D,KAAKu4C,KAAK7P,EAAKP,QAoDxB,SAASm3B,EAAgB7rC,GAC5B,IAAI8rC,EAAMlwC,YAAO,IAAMoE,EAAKj5B,QAAQwX,GAAK,cAAeyhB,EAAKj5B,SAC7D,MAAkC,UAA3Bi5B,EAAK+rC,aAAajpD,MACpBgT,YAAU,eAAgBkK,EAAKj5B,SAASnE,QAAWo9B,EAAK+rC,aAAaC,qBACrEF,GAAMA,EAAItxC,UAAU1D,SAAS,kBAG/B,SAASm1C,EAAK1D,EAAM/9B,GAEvB+9B,EAAOA,aAAgBpkE,MAAQokE,EAAO,CAACA,GACvC,IAAK,IAAI5lE,EAAI,EAAGA,EAAI4lE,EAAK3lE,OAAQD,IAC7B6nC,EAAS+9B,EAAK5lE,GAAG63B,UAAU9M,IAHlB,UAGgC66C,EAAK5lE,GAAG63B,UAAUpM,OAHlD,UAOV,SAAS89C,EAAa9K,EAAgBwH,EAAQj5D,GACjD,IAEI3J,EAFAmmE,EAAO/K,EAAegL,WAAW,kBAGrC,GAAoB,SAAhBxD,EAAO34D,MAAmC,aAAhB24D,EAAO34D,KAAqB,CAEtD,GADAjK,EAAO,CAAEiK,KAAM24D,EAAO34D,KAAMD,SAAU44D,EAAO94D,QACzCzK,eAAcsK,EAAkB,CAEhC3J,EAAI,iBAAa2J,EAEW,kBAAnBi5D,EAAO94D,QAA2C,QAAlB84D,EAAO94D,SAChD9J,EAAI,OAAW4iE,EAAO94D,QAG9B,OAAQ84D,EAAO34D,MACX,IAAK,OAIL,IAAK,WACD24D,EAAOsD,aAAaC,EAAKE,kBAAkBrmE,IAC3C4iE,EAAO0D,UAAUH,EAAKI,kBAAkBvmE,IACxC,MACJ,IAAK,SACD4iE,EAAOsD,aAAaC,EAAKE,kBAAkB,CAAEv8D,OAAQ84D,EAAO94D,UAC5D84D,EAAO0D,UAAUH,EAAKI,kBAAkB,CAAEz8D,OAAQ84D,EAAO94D,WAK9D,SAAS08D,EAAuBC,EAAO/+C,GAE1C,IADA,IAAI1nB,EAAO,GACFjC,EAAK,EAAGA,EAAKY,UAAU/B,OAAQmB,IACpCiC,EAAKjC,EAAK,GAAKY,UAAUZ,GAE7B,IAAK,IAAIpB,EAAI,EAAGkF,EAAM4kE,EAAM7pE,OAAQD,EAAIkF,EAAKlF,IACrC+qB,GACA8M,YAAUiyC,EAAM9pE,GAAIqD,EAAKoB,QAAS,IAClCqlE,EAAM9pE,GAAGy3B,aAAa,gBAAiB,UAGvCI,YAAUiyC,EAAM9pE,GAAI,GAAIqD,EAAKoB,SAC7BqlE,EAAM9pE,GAAGoiC,gBAAgB,kBAiB9B,SAAS2nC,EAAqB/qC,EAAQgrC,EAAWC,GACpD,IAAIC,EAAiBF,EAAU5lE,QAAQwxB,MAAM+gB,QAC7CqzB,EAAU5lE,QAAQwxB,MAAM+gB,QAAU,QAClC,IACIwzB,EADAC,EAAWJ,EAAUl4B,MAEzBq4B,EAASE,YAA+BrrC,EAAQgrC,EAAU5lE,SAC1D4lE,EAAU5lE,QAAQwxB,MAAM+gB,QAAUuzB,EAClCF,EAAU5lE,QAAQwxB,MAAMmP,IAAOolC,EAAOplC,IAAM/F,EAAOoF,wBAAwB2N,OAAU,EAAI,KACzF,IAAIu4B,EAAYH,EAAOtlC,KAAOulC,EAAYprC,EAAOuzB,YAE7CyX,EAAU5lE,QAAQwxB,MAAMiP,KADxBylC,EAAU,EACsBF,EAAWE,EAAW,GAAK,KAG5BA,GAAW,EAAI,KAQ/C,SAASC,EAAe3E,GAC3B,IAAI7F,EAAO6F,EAAKxsC,cAAc,YAC1BoxC,EAAQzK,EAAK0K,gBACb1K,EAAKloC,UAAU1D,SAAS,YACxBq2C,EAAME,SAAU,EAChB7yC,YAAUkoC,EAAM,CAAC,aAAc,CAAC,cAGhCyK,EAAME,SAAU,EAChB7yC,YAAUkoC,EAAM,CAAC,WAAY,CAAC,eAI/B,SAAS4K,EAAW/E,EAAM8E,GAC7B9E,EAAK8E,QAAUA,EAGZ,SAASE,EAAmB/rE,EAAK+mE,EAAM31C,GAC1C,IAAI3rB,EAAMC,YAAc,MAAO,CAAE0rB,UAAWA,IAG5C,OAFA3rB,EAAIU,YAAY4gE,GAChBthE,EAAImzB,aAAa,MAAO54B,GACjByF,EAGJ,SAASumE,EAAqBjF,EAAM8E,GACvCzyC,YAAY,CAAC2tC,GAAO,CAAC,UAAW,SAAU,cACtC8E,EACA9E,EAAK/tC,UAAU9M,IAAI,WAGnB66C,EAAK/tC,UAAU9M,IAAI,aAUpB,SAAS+/C,EAAmBC,EAAKjK,EAAS7jD,GAC7C,IAAK,IAAIjd,EAAI,EAAGA,EAAI8gE,EAAQ7gE,OAAQD,IAChCG,aAAS2gE,EAAQ9gE,GAAG+gE,MAAOiK,EAAelK,EAAQ9gE,GAAIid,GAAO8tD,EAAIjQ,gBAErE,IAAIgP,EAAQiB,EAAIjB,MAChB,IAAS9pE,EAAI,EAAGA,EAAI8pE,EAAM7pE,OAAQD,IAC1B8pE,EAAM9pE,GAAGirE,cACT9qE,aAAS,iBAAkBV,YAASqqE,EAAM9pE,GAAGimE,OAAOlF,MAAOgK,EAAIjQ,gBAAiBgP,EAAM9pE,IAY3F,SAASgrE,EAAe/E,EAAQhpD,EAAMiuD,EAAQpQ,GACjD,IAAIqQ,EAASlF,EAAOyB,gBAChBtnE,EAAQI,YAAkB0qE,GAAmBlF,EAAcC,EAAOlF,MAAO9jD,GAArCiuD,EACxC9qE,EAAMI,YAAkBJ,GAAO,GAAKA,EACpC,IAAIgrE,EAAQ,IAAIC,IACZC,EAAQxQ,IAAoBmL,EAAOsF,sBAAsBC,KAAgBvF,EAAOsF,WAAWA,WAAWE,KAAKxrE,OAC3GgmE,EAAOsF,WAAWA,WAAWE,KAAOxF,EAAOyF,YAO/C,OANItrE,EAAIgP,OACJg8D,EAAMO,MAAMC,EAAiB,CAAE7K,MAAOoK,EAAQU,SAAU,QAASjsE,MAAOQ,EAAK0rE,WAAW,KAGxFV,EAAMO,MAAMR,EAAQ,KAAM/qE,GAAK,GAE5B,IAAIorE,IAAYF,GAAOS,aAAaX,GAQxC,SAASY,EAA2BvE,EAAiB3G,GACxD,IAAImF,EACJ,OAAOnF,EAAQp1C,MAAK,SAAU20C,GAE1B,OADA4F,EAAS5F,EACFA,EAAIoH,kBAAoBA,MAC7BxB,EAMH,SAAS2F,EAAiBK,EAAc3+D,GAC3C,IAAI4+D,EACAC,EACAC,EACAC,EAAU1F,YAAW,GAAIn7B,EAAoBygC,IAC7CK,EAAU3F,YAAW,GAAIn7B,EAAoBygC,IACjD,GAAIzrE,YAAkByrE,EAAarsE,OAE/B,OADAssE,EAAgB,IAAIK,IAAUF,EAAQtL,MAAOsL,EAAQR,SAAUQ,EAAQzsE,OAAO,GAGlF,IAAIA,EAAQ,IAAI2L,KAAK0gE,EAAarsE,OAClC,GAA8B,UAA1BqsE,EAAaJ,UAAkD,aAA1BI,EAAaJ,SAAyB,CAC9D,aAATv+D,GACA6+D,EAAW,IAAI5gE,KAAK3L,EAAM4sE,WAAW5sE,EAAM6sE,aAAe,IAC1DL,EAAW,IAAI7gE,KAAK3L,EAAM4sE,WAAW5sE,EAAM6sE,aAAe,IAC1DR,EAAarsE,MAAQ,IAAI2L,KAAK3L,EAAM4sE,WAAWJ,EAASK,aAAe,MAGvEN,EAAW,IAAI5gE,KAAK3L,EAAMqZ,SAAS,GAAK,GACxCmzD,EAAW,IAAI7gE,KAAK3L,EAAMqZ,SAAS,MAEvCozD,EAAQzsE,MAAQusE,EAChBG,EAAQ1sE,MAAQwsE,EACc,UAA1BH,EAAaJ,UACbQ,EAAQR,SAAW,cACnBS,EAAQT,SAAW,YAEY,aAA1BI,EAAaJ,WAClBQ,EAAQR,SAAW,kBACnBS,EAAQT,SAAW,sBAEvB,IAAIa,EAAc,IAAIH,IAAUF,EAAQtL,MAAOsL,EAAQR,SAAUQ,EAAQzsE,OAAO,GAC5E+sE,EAAe,IAAIJ,IAAUD,EAAQvL,MAAOuL,EAAQT,SAAUS,EAAQ1sE,OAAO,GACjFssE,EAA0C,UAA1BD,EAAaJ,SAAuBa,EAAYE,IAAID,GAAgBD,EAAYG,GAAGF,OAElG,CAC8B,kBAAnBN,EAAQzsE,QAChBysE,EAAQzsE,MAAQ,IAAI2L,KAAK8gE,EAAQzsE,QAGrCssE,EADiB,IAAIK,IAAUF,EAAQtL,MAAOsL,EAAQR,SAAUQ,EAAQzsE,OAAO,GASnF,OANIqsE,EAAajxC,cACbixC,EAAajxC,cAAc,CAAE8xC,YAAaZ,IAAiB,GAG3DD,EAAaa,YAAcZ,EAExBA,EAKJ,SAASa,EAAc75C,EAAK85C,EAAS1M,GACxC0M,EAAUA,GAAW1M,GAAQA,EAAK2M,gBAAkBD,EAAU,EAAIA,EAElE,IADA,IAAIE,EAAOh6C,EAAIjuB,WAAU,GAChBjF,EAAI,EAAGA,EAAIgtE,EAAShtE,IACzBktE,EAAKn0C,YAAYm0C,EAAKx6C,SAAS,IAE1B1yB,EAAIgtE,EAAb,IAAK,IAAiB9nE,EAAMguB,EAAIi6C,kBAAmBntE,EAAIkF,EAAKlF,IACxDkzB,EAAI6F,YAAY7F,EAAIR,SAASQ,EAAIi6C,kBAAoB,IAEzD,OAAOD,EAKJ,SAASE,EAAgBnD,GAC5B,OAAOA,EAAKoD,sBAAwBpD,EAAKqD,cAAcxM,QAAQ7gE,OAAS,GAAKgqE,EAAKsD,kBAK/E,SAAS1wC,EAAUkkC,EAAOyM,GAE7B,QADc,IAAVzM,IAAoBA,EAAQ,IAC5BA,EAAO,CAGP,IAFA,IAAInhE,EAAQ4tE,EACR3tE,EAASkhE,EAAMhhE,MAAM,KAChBC,EAAI,EAAGA,EAAIH,EAAOI,SAAWO,YAAkBZ,GAAQI,IAC5DJ,EAAQA,EAAMC,EAAOG,IAEzB,OAAOJ,GA+CR,SAAS6tE,GAAkBnN,EAAMoN,QACT,IAAvBA,IAAiCA,EAAqB,YAC1D,IAAIC,EAAiB,GACrB,IAAKrN,EACD,OAAOqN,EAGX,IADA,IAAIC,EAAWtN,EAAKuN,iBAAmBvN,EAAKwN,mBACnC1sE,EAAK,EAAG80B,EAAK63C,IAAMC,cAAe5sE,EAAK80B,EAAGj2B,OAAQmB,IAAM,CAC7D,IAAIhB,EAAM81B,EAAG90B,GAETusE,EAAevtE,GADP,YAARA,EACsBgoE,EAAsBwF,EAAWtN,EAAKG,aAAeH,EAAKlgE,IAEnE,gBAARA,EACoC,gBAAnBkgE,EAAK2N,UAGLziC,EAAoB80B,EAAKlgE,IAMvD,OAHIkgE,EAAK4N,WAAoC,SAAvBR,IAClBC,EAAeQ,aAvChB,SAA0B7N,EAAMoN,GAGnC,IAFA,IACI/tE,EAAM,GACDyB,EAAK,EAAGgtE,EAFN9N,EAAK+N,gBAEgBjtE,EAAKgtE,EAAOnuE,OAAQmB,IAAM,CACtD,IAAI2pE,EAAMqD,EAAOhtE,GACjB,GAAI2pE,EAAIuD,WAAavD,EAAIwD,YAAa,CAClC,IAAI3xD,EAAQ0jD,EAAKkO,aAAkC,aAAnBlO,EAAK2N,UAA2BlD,EAAInuD,MAC/D0jD,EAAKmO,aAAaC,YAAcpO,EAAKmO,aAAaE,SAAYrO,EAAKmO,aAAaE,SAAW5D,EAAInuD,MACpGjd,EAAIid,GAAS,GACbjd,EAAIid,GAAO0xD,UAAW,EACtB3uE,EAAIid,GAAOgyD,UAAYnB,GAAkB1C,EAAImD,UAAWR,GACxD/tE,EAAIid,GAAOgyD,UAAUxD,MAAQ9K,EAAK4N,UAAU9C,OAGpD,OAAOzrE,EAyB2BkvE,CAAiBvO,EAAMoN,IAElDC,EAKJ,SAASmB,GAAgBntE,EAAQC,EAAOC,EAAQC,GACnD,IAAI2E,EAAM9E,GAAU,GAChBuD,EAAMlD,UAAU/B,OAChB6B,IACAoD,GAAY,GAEhB,IAAK,IAAIlF,EAAI,EAAGA,EAAIkF,EAAKlF,IACrB,GAAKgC,UAAUhC,GAMf,IAHA,IAAImC,EAAOH,UAAUhC,GACjBK,EAAOiB,OAAOjB,KAAKiB,OAAOytE,eAAe5sE,IAAOlC,OAChDqB,OAAOjB,KAAK8B,GAAMuxB,OAAOs7C,GAAmB7sE,IAASb,OAAOjB,KAAK8B,GAC5D0oD,EAAM,EAAGA,EAAMxqD,EAAKJ,OAAQ4qD,IAAO,CACxC,IAAI7pD,EAASyF,EAAIpG,EAAKwqD,IAClBokB,EAAM9sE,EAAK9B,EAAKwqD,IAChBqkB,OAAM,EACNptE,IAASpB,YAASuuE,IAAQztE,MAAMC,QAAQwtE,IACpCvuE,YAASuuE,IACTC,EAAMluE,GAAkB,GACxByF,EAAIpG,EAAKwqD,IAAQ8b,YAAW,GAAIuI,EAAKD,EAAKntE,KAG1CotE,EAAMluE,GAAkB,GACxByF,EAAIpG,EAAKwqD,IAAQ8b,YAAW,GAAIuI,EAAKD,EAAKntE,IAI9C2E,EAAIpG,EAAKwqD,IAAQokB,EAI7B,OAAOxoE,EAKX,SAASuoE,GAAmBrvE,GAExB,IADA,IAAIU,EAAO,GACJiB,OAAOytE,eAAepvE,IAAQ2B,OAAOjB,KAAKiB,OAAOytE,eAAepvE,IAAMM,QACzEI,EAAOA,EAAKqzB,OAAOpyB,OAAOjB,KAAKiB,OAAOytE,eAAepvE,KACrDA,EAAM2B,OAAOytE,eAAepvE,GAEhC,OAAOU,EAKJ,SAAS8uE,GAAmBlJ,GAE/B,IADA,IAAIzwD,EAAM,EACDxV,EAAI,EAAGA,EAAIimE,EAAOhmE,OAAQD,IAAK,CACpC,IAAIovE,EAAQC,GAAWpJ,EAAOjmE,GAAI,GAC9BwV,EAAM45D,IACN55D,EAAM45D,GAGd,OAAO55D,EAAM,EAKV,SAAS65D,GAAWhP,EAAKzjD,GAC5B,IAAIpH,EAAMoH,EACN0yD,EAAU,GACd,GAAIjP,EAAIS,QAAS,CACblkD,IACA,IAAK,IAAI5c,EAAI,EAAGA,EAAIqgE,EAAIS,QAAQ7gE,OAAQD,IACpCsvE,EAAQtvE,GAAKqvE,GAAWhP,EAAIS,QAAQ9gE,GAAI4c,GAE5C,IAAK,IAAIrS,EAAI,EAAGA,EAAI+kE,EAAQrvE,OAAQsK,IAC5BiL,EAAM85D,EAAQ/kE,KACdiL,EAAM85D,EAAQ/kE,IAGtBqS,EAAQpH,EAEZ,OAAOoH,EAKJ,SAAS2yD,GAAuBjP,EAAMM,GACzC,IAAK,IAAI5gE,EAAI,EAAGA,EAAI4gE,EAAa3gE,OAAQD,IACrC4gE,EAAa5gE,GAAGnB,IAAM+hE,EAAa5gE,GAAGirE,aAClCe,EAA2BpL,EAAa5gE,GAAG+gE,MAAOT,EAAKkP,wBAAwB3wE,IAC7EyhE,EAAK8B,iBAAiBxB,EAAa5gE,GAAG+gE,OAAOliE,IAkEpD,SAAS4wE,GAAapsE,EAAM+nE,GAC/B,IAAIsE,EACJA,EAOG,SAA+BtE,GAClC,IAAIuE,EAAS,IAAIC,IACbC,EAAK,IAAIrE,IAAY,CAAE5mD,IAAK,GAAIkrD,QAAS,IAAIF,MAC7CF,EAAQC,EAAOI,aAAaF,EAAIzE,GAEpC,OADWjuD,KAAKC,MAAMsyD,EAAMzyD,MAXpB+yD,CAAsB5E,GAC9B,IAAInhB,EAAM,IAAIgmB,IAGd,OAFAP,EAAMnE,WAAathB,EAAI/kC,QACvBwqD,EAAM7nC,OAASxkC,EACR,CAAEqsE,MAAOA,EAAOQ,SAAUjmB,GAW9B,SAASkmB,GAAkB7P,GAI9B,IAHA,IAAIQ,EAAUR,EAAK8P,oBACfC,EAAgB,EAChBC,EAAoB,EACftwE,EAAI,EAAGA,EAAI8gE,EAAQ7gE,OAAQD,IAC5BE,YAAY4gE,EAAQ9gE,GAAG8xC,OACvBw+B,KAEmD,IAA9CxP,EAAQ9gE,GAAG8xC,MAAMxiC,WAAW/N,QAAQ,MACzC8uE,IAGR,OAAuB,SAAf/P,EAAKxuB,OAA4C,kBAAhBwuB,EAAKxuB,QAAoD,IAA7BwuB,EAAKxuB,MAAMvwC,QAAQ,OAAsC,WAAtB8mB,IAAQ2B,KAAKxN,OAC7G8jD,EAAKgN,cAAciD,mBAAqBjQ,EAAKgN,cAAcxM,QAAQ7gE,QACpEowE,IAAkBC,EAGtB,SAASE,GAAclQ,EAAMmQ,EAAMC,EAAS9zD,GAE/C,IADA,IAAI+zD,EAAa/zD,GAAgB,EACxB5c,EAAI,EAAGA,EAAIywE,EAAKxwE,OAAQD,IAC7B,GAAIywE,EAAKzwE,GAAG4wE,UAAW,CACnBH,EAAKzwE,GAAG4c,MAAQ+zD,EAChBF,EAAKzwE,GAAG6wE,WAAWvQ,EAAKwQ,cAAeH,EAAa,IAAM,EAC1DD,EAAQ1wE,GAAGy3B,aAAa,gBAAiBk5C,EAAWrhE,YACpDmhE,EAAKzwE,GAAG6wE,SAAWH,EAAQ1wE,GAAG63B,UAAU9M,IAAI,YAAc2lD,EAAQ1wE,GAAG63B,UAAUpM,OAAO,YACtF,IAAK,IAAIlhB,EAAI,EAAGA,EAAImmE,EAAQ1wE,GAAG8pE,MAAM7pE,OAAQsK,IACzCmmE,EAAQ1wE,GAAG8pE,MAAMv/D,GAAGktB,aAAa,QAASk5C,EAAWrhE,YAEzDqhE,IAGHF,EAAKxwE,QACNqgE,EAAKyQ,aAAaC,UAAS,GAY5B,SAASC,GAAe3Q,EAAM4Q,EAAS5jE,EAAM6jE,GAChD,IAAIC,EAAW9Q,EAAK+Q,gBAAgB/jE,GAAMomB,OAAOw9C,EAAQ5jE,IAAOgkE,QAAO,SAAUzwC,EAAG0wC,GAEhF,OADA1wC,EAAE0wC,EAAEJ,SAAgC/xE,IAAnByhC,EAAE0wC,EAAEJ,IAA2BI,EAAIjwE,OAAOkwE,OAAO3wC,EAAE0wC,EAAEJ,IAAYI,GAC3E1wC,IACR,IACHy/B,EAAK+Q,gBAAgB/jE,GAAQhM,OAAOjB,KAAK+wE,GAAUtqE,KAAI,SAAU2qE,GAAK,OAAOL,EAASK,MAGnF,SAASC,GAAepR,GAC3B,GAAIA,EAAKuN,eAAgB,CACpBvN,EAAMqR,cAAcC,YACjB,GAAGntE,MAAMC,KAAK47D,EAAKl8D,QAAQQ,iBAAiB,sDAChD,IAAIitE,EAA+B,eAAzBvR,EAAKwR,gBAAmC,8DAC5C,kDACLxR,EAAMqR,cAAcI,kBACjB,GAAGttE,MAAMC,KAAK47D,EAAKl8D,QAAQQ,iBAAiBitE,IACnB,eAAzBvR,EAAKwR,kBACLxR,EAAKqR,cAAcK,uBACf,GAAGvtE,MAAMC,KAAK47D,EAAKl8D,QAAQQ,iBAAiB,wEAInD07D,EAAMqR,cAAcC,YACjB,GAAGntE,MAAMC,KAAK47D,EAAKl8D,QAAQQ,iBAAiB,4BA0BjD,SAASqtE,GAAkB3R,EAAM/vC,EAAUkgD,EAAMyB,EAAOC,IACvD1B,EAAK,GAAGxwE,QAAUiyE,KAClBC,EAAS5hD,EAAS,cAAekgD,EAAK,GAAI0B,EAAO,IAAM5hD,EAAS,cAAekgD,EAAK,KAEpFnQ,EAAKuN,iBAAmB4C,EAAK,GAAGxwE,QAAUiyE,KAC1CC,EAAS5hD,EAAS,UAAWkgD,EAAK,GAAI0B,EAAO,IAAM5hD,EAAS,UAAWkgD,EAAK,KAElD,eAAzBnQ,EAAKwR,iBAA6D,UAAzBxR,EAAKwR,kBAAiCrB,EAAK,GAAGxwE,SAAUiyE,IAClGC,EAAS5hD,EAAS,eAAgBkgD,EAAK,GAAI0B,EAAO,IAAM5hD,EAAS,eAAgBkgD,EAAK,KA4BvF,SAAS2B,GAAoB9R,EAAMD,EAAKgS,GAC3C,MAAiC,YAA7BhS,EAAIiS,qBACG,GAAG7tE,MAAMC,KAAK47D,EAAKiS,qBAAqBF,GAAUztE,iBAAiB,eAExC,iBAA7By7D,EAAIiS,qBACF,GAAG7tE,MAAMC,KAAK47D,EAAKkS,yBAAyBH,GAAUztE,iBAAiB,eAGvE,GAAGH,MAAMC,KAAK47D,EAAKmS,cAAcJ,GAAUztE,iBAAiB,eAIpE,SAAS8tE,GAAwBpS,EAAMD,EAAKgS,EAAUz1D,GACzD,IAAIioB,EAAOy7B,EAAKqS,qBACZC,EAAUtS,EAAKuS,yBAGnB,OAFAj2D,EAAqC,YAA7ByjD,EAAIiS,qBAAqC11D,EAAQioB,EAAoC,iBAA7Bw7B,EAAIiS,qBAC9D11D,GAASioB,EAAO+tC,GAAWh2D,EAC1Bw1D,GAAoB9R,EAAMD,EAAKgS,GAAUz1D,GA4C7C,SAASqB,GAAgB60D,EAAcxlE,EAAMuR,GAChD,IAAI1R,EACA4lE,EAAO,IAAIl1D,IACf,GAAa,WAATvQ,EACA,IACIH,EAAS4lE,EAAKn0D,iBAAiB,CAAEzR,OAAQ2lE,EAAcvhE,SAAUnO,KAAKmO,SAAUoB,aAAa,IAAQ,GAEzG,MAAO8T,GACHtZ,EAAS2lE,OAGZ,GAAa,SAATxlE,GAA4B,SAATA,GAA4B,aAATA,EAC3C,IAEI,GADAH,EAAS4lE,EAAKv0D,eAAe,CAAEnR,SAAUylE,EAAcxlE,KAAMA,GAAQuR,GACjEre,YAAkB2M,GAClB,KAAM,QAGd,MAAOsZ,GACH,IACItZ,EAAS4lE,EAAKv0D,eAAe,CAAErR,OAAQ2lE,EAAcxlE,KAAMA,GAAQuR,GAEvE,MAAO4H,GACHtZ,EAAS2lE,QAKjB3lE,EAAS2lE,EAEb,GAAa,WAATxlE,EAAmB,CACnB,IACI0lE,EAAS,CAAE,EAAK,GAAI,EAAK,IAAK,EAAK,IAAK1zD,IAAM,IAAK,KAAM,SAAU,GAAM,KAAM,EAAK,OAAQ,KAAQ,OAAQ,EAAK,OACrHnS,EAASA,EAAOrN,QAFG,2BAEmB,SAAU4N,GAC5C,OAAOslE,EAAOtlE,MAGtB,OAAOP,EAGJ,SAASm3D,GAAgBhE,GAC5B,GAAIA,EAAKwC,iBAEL,IADA,IAAImQ,EAAUrvE,SAASitB,uBAAuB,uBACrC7wB,EAAI,EAAGA,EAAIizE,EAAQhzE,OAAQD,IAChCizE,EAAQjzE,GAAG63B,UAAU9M,IAAI,YAkB9B,SAASmoD,GAA4BtzE,EAAOuzE,GAK/C,IAJA,IAAIC,EACAnzE,EAASL,EAAMG,MAAM,KAAKE,OAC1BJ,EAASD,EAAMG,MAAM,KACrBszE,EAAeF,EACVnzE,EAAI,EAAGA,EAAIC,EAAQD,IAExBqzE,EADAD,EAAYC,EAAaxzE,EAAOG,IAGpC,OAAOozE,GAnVX,SAAWxK,GACPA,EAAOrY,MAAQ,KADnB,CAEGqY,IAAWA,EAAS,M,4XCv6BnB9oB,EAA6B,WAE7B,SAASA,EAAYwzB,GAEjBlwE,KAAKmwE,QAAU,6BACfnwE,KAAKowE,OAASF,EAiXlB,OA7WAxzB,EAAYxgD,UAAUm0E,eAAiB,SAAUhlE,EAASrO,GACtD,OAAOqO,EAAQrO,IAOnB0/C,EAAYxgD,UAAU4zD,UAAY,SAAUzkD,GAUxC,OATIjO,YAAkBiO,EAAQmN,MAC1BnN,EAAQmN,GAAKxY,KAAKowE,OAAS,QAE/BpwE,KAAKswE,OAAS9vE,SAAS+sB,eAAeliB,EAAQmN,IAC1Cpb,YAAkBoD,SAAS+sB,eAAeliB,EAAQmN,OAClDxY,KAAKswE,OAAS9vE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,QAEzDnwE,KAAKswE,OAAStwE,KAAKouD,qBAAqB/iD,EAASrL,KAAKswE,QACtDtwE,KAAKuwE,WAAWllE,EAAQqjC,MAAOrjC,EAAQsjC,QAChC3uC,KAAKswE,QAGhB5zB,EAAYxgD,UAAUq0E,WAAa,SAAU7hC,EAAOC,GAChD,IAAI3tC,EAAUR,SAAS+sB,eAAevtB,KAAKowE,QACvCvzB,EAAQz/C,YAAkB4D,GAA6C,KAAlCA,EAAQggC,wBAC7C5jC,YAAkB4C,KAAK0uC,QAAU1uC,KAAK0uC,OAAS,EAC/C1uC,KAAKswE,OAAOj8C,aAAa,QAASqa,EAAQA,EAAMxiC,WAAa2wC,EAAKnO,MAAMxiC,YAGxElM,KAAKswE,OAAOj8C,aAAa,QAASr0B,KAAK0uC,MAAMxiC,YAE7C9O,YAAkB4C,KAAK2uC,SAAW3uC,KAAK2uC,QAAU,EACjD3uC,KAAKswE,OAAOj8C,aAAa,SAAUsa,EAASA,EAAOziC,WAAa,OAGhElM,KAAKswE,OAAOj8C,aAAa,SAAUr0B,KAAK2uC,OAAOziC,aASvDwwC,EAAYxgD,UAAU0nD,SAAW,SAAUv4C,EAASmlE,GAChD,IAAIC,EAAOjwE,SAAS+sB,eAAeliB,EAAQmN,IAK3C,OAJa,OAATi4D,IACAA,EAAOjwE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,SAElDM,EAAOzwE,KAAKouD,qBAAqB/iD,EAASolE,IAQ9C/zB,EAAYxgD,UAAUw0E,SAAW,SAAUrlE,GACvC,IAAIslE,EAAOnwE,SAAS+sB,eAAeliB,EAAQmN,IAK3C,OAJa,OAATm4D,IACAA,EAAOnwE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,SAElDQ,EAAO3wE,KAAKouD,qBAAqB/iD,EAASslE,IAQ9Cj0B,EAAYxgD,UAAU00E,cAAgB,SAAUvlE,EAASmlE,GACrD,IAAIK,EAAYrwE,SAAS+sB,eAAeliB,EAAQmN,IAKhD,OAJkB,OAAdq4D,IACAA,EAAYrwE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,SAEvDU,EAAY7wE,KAAKouD,qBAAqB/iD,EAASwlE,IAQnDn0B,EAAYxgD,UAAU40E,WAAa,SAAUzlE,GACzC,IAAI0lE,EAASvwE,SAAS+sB,eAAeliB,EAAQmN,IAK7C,OAJe,OAAXu4D,IACAA,EAASvwE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,WAEpDY,EAAS/wE,KAAKouD,qBAAqB/iD,EAAS0lE,IAQhDr0B,EAAYxgD,UAAU80E,aAAe,SAAU3lE,GAC3C,IAAI4lE,EAAWzwE,SAAS+sB,eAAeliB,EAAQmN,IAK/C,OAJiB,OAAby4D,IACAA,EAAWzwE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,aAEtDc,EAAWjxE,KAAKouD,qBAAqB/iD,EAAS4lE,IAQlDv0B,EAAYxgD,UAAUg1E,YAAc,SAAU7lE,GAC1C,IAAI8lE,EAAU3wE,SAAS+sB,eAAeliB,EAAQmN,IAK9C,OAJgB,OAAZ24D,IACAA,EAAU3wE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,YAErDgB,EAAUnxE,KAAKouD,qBAAqB/iD,EAAS8lE,IAQjDz0B,EAAYxgD,UAAUk1E,YAAc,SAAU/lE,GAC1C,IAAI21C,EAAUxgD,SAAS+sB,eAAeliB,EAAQmN,IAK9C,OAJgB,OAAZwoC,IACAA,EAAUxgD,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,YAErDnvB,EAAUhhD,KAAKouD,qBAAqB/iD,EAAS21C,IAQjDtE,EAAYxgD,UAAUm1E,UAAY,SAAUhmE,GACxC,IAAIimE,EAAM9wE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,SAcjD,OAbAmB,EAAIC,eAAe,KAAM,SAAUlmE,EAAQsjC,OAAOziC,YAClDolE,EAAIC,eAAe,KAAM,QAASlmE,EAAQqjC,MAAMxiC,YAChDolE,EAAIC,eAAe,+BAAgC,OAAQlmE,EAAQw8B,MACnEypC,EAAIC,eAAe,KAAM,IAAKlmE,EAAQ8U,EAAEjU,YACxColE,EAAIC,eAAe,KAAM,IAAKlmE,EAAQgK,EAAEnJ,YACxColE,EAAIC,eAAe,KAAM,KAAMlmE,EAAQmN,IACvC84D,EAAIC,eAAe,KAAM,aAAclmE,EAAQ4pB,YAC1C73B,YAAkB4C,KAAKqwE,eAAehlE,EAAS,eAChDimE,EAAIC,eAAe,KAAM,YAAavxE,KAAKqwE,eAAehlE,EAAS,cAElEjO,YAAkBiO,EAAQomD,sBAC3B6f,EAAIC,eAAe,KAAM,sBAAuBlmE,EAAQomD,qBAErD6f,GAOX50B,EAAYxgD,UAAU+gD,WAAa,SAAU5xC,EAASowC,EAAOmT,EAAQC,EAAQtS,EAAIi1B,GAC7E,IAAIlgE,EAAO9Q,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,QAKlD,OAJA7+D,EAAOtR,KAAKouD,qBAAqB/iD,EAASiG,GACrClU,YAAkBq+C,KACnBnqC,EAAKstD,YAAcnjB,GAEhBnqC,GAQXorC,EAAYxgD,UAAUohD,YAAc,SAAUjyC,EAASowC,GACnD,IAAIg2B,EAAQjxE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,SAKnD,OAJAsB,EAAQzxE,KAAKouD,qBAAqB/iD,EAASomE,GACtCr0E,YAAkBq+C,KACnBg2B,EAAM7S,YAAcnjB,GAEjBg2B,GAOX/0B,EAAYxgD,UAAUw1E,YAAc,SAAUpgE,GAC1C,IAAI++C,EAAQ7vD,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,SAEnD,OADA9f,EAAMuO,YAActtD,EACb++C,GAMX3T,EAAYxgD,UAAU4qD,WAAa,WAE/B,OADWtmD,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,SAQtDzzB,EAAYxgD,UAAUy1E,eAAiB,SAAUtmE,GAC7C,IAAIq7C,EAAWlmD,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,YAEtD,OADAzpB,EAAW1mD,KAAKouD,qBAAqB/iD,EAASq7C,IAQlDhK,EAAYxgD,UAAU01E,oBAAsB,SAAUvmE,GAClD,IAAIwmE,EAAgBrxE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,iBAE3D,OADA0B,EAAgB7xE,KAAKouD,qBAAqB/iD,EAASwmE,IAQvDn1B,EAAYxgD,UAAU41E,YAAc,SAAUzmE,GAC1C,IAAI0mE,EAAQvxE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,KAEnD,OADA4B,EAAQ/xE,KAAKouD,qBAAqB/iD,EAAS0mE,IAS/Cr1B,EAAYxgD,UAAU81E,cAAgB,SAAU3mE,EAASrK,GACrD,IAAIsJ,EAAU9J,SAAS4zB,gBAAgBp0B,KAAKmwE,QAASnvE,GAErD,OADAsJ,EAAUtK,KAAKouD,qBAAqB/iD,EAASf,IAWjDoyC,EAAYxgD,UAAU+1E,qBAAuB,SAAUC,EAAQ94D,EAAM/N,GACjE,IAAI8mE,EACJ,GAAK/0E,YAAkB80E,EAAO,GAAGE,WAa7BD,EAAYD,EAAO,GAAGhuB,MAAMh4C,eAba,CACzC,IAAImmE,EAAa,CACb,GAAMryE,KAAKowE,OAAS,IAAMh3D,EAAO,iBACjC,GAAM/N,EAAQsmD,GAAK,IACnB,GAAMtmD,EAAQumD,GAAK,IACnB,EAAKvmD,EAAQoyB,EAAI,IACjB,GAAMpyB,EAAQinE,GAAK,IACnB,GAAMjnE,EAAQknE,GAAK,KAEvBvyE,KAAKwyE,aAAa,iBAAkBH,EAAYH,GAChDC,EAAY,QAAUnyE,KAAKowE,OAAS,IAAMh3D,EAAO,kBAKrD,OAAO+4D,GAUXz1B,EAAYxgD,UAAUu2E,qBAAuB,SAAUP,EAAQ94D,EAAM/N,GACjE,IAAI8mE,EACJ,GAAK/0E,YAAkB80E,EAAO,GAAGE,WAY7BD,EAAYD,EAAO,GAAGhuB,MAAMh4C,eAZa,CACzC,IAAImmE,EAAa,CACb,GAAMryE,KAAKowE,OAAS,IAAMh3D,EAAO,iBACjC,GAAM/N,EAAQqnE,GAAK,IACnB,GAAMrnE,EAAQsnE,GAAK,IACnB,GAAMtnE,EAAQunE,GAAK,IACnB,GAAMvnE,EAAQwnE,GAAK,KAEvB7yE,KAAKwyE,aAAa,iBAAkBH,EAAYH,GAChDC,EAAY,QAAUnyE,KAAKowE,OAAS,IAAMh3D,EAAO,kBAKrD,OAAO+4D,GAUXz1B,EAAYxgD,UAAUs2E,aAAe,SAAUM,EAAcznE,EAAS6mE,GAClE,IAAIa,EAAO/yE,KAAK8mD,aACZksB,EAAWxyE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS2C,GACtDE,EAAWhzE,KAAKouD,qBAAqB/iD,EAAS2nE,GAC9C,IAAK,IAAIp2E,EAAI,EAAGA,EAAIs1E,EAAOr1E,OAAQD,IAAK,CACpC,IAAIq2E,EAASzyE,SAAS4zB,gBAAgBp0B,KAAKmwE,QAAS,QACpD8C,EAAO5+C,aAAa,SAAU69C,EAAOt1E,GAAGw1E,WACxCa,EAAO5+C,aAAa,aAAc69C,EAAOt1E,GAAGsnD,OAC5C+uB,EAAO5+C,aAAa,eAAgB69C,EAAOt1E,GAAG0lC,QAAW4vC,EAAOt1E,GAAG0lC,QAAW,KACzEllC,YAAkB80E,EAAOt1E,GAAG41B,QAC7BygD,EAAO5+C,aAAa,QAAS69C,EAAOt1E,GAAG41B,OAE3CwgD,EAASpxE,YAAYqxE,GAGzB,OADAF,EAAKnxE,YAAYoxE,GACVD,GAOXr2B,EAAYxgD,UAAUg3E,aAAe,SAAU7nE,GAC3C,IAAI0nE,EAAO/yE,KAAK8mD,aACZJ,EAAW1mD,KAAK2xE,eAAe,CAAE,GAAMtmE,EAAQmN,KACnDnN,EAAQmN,GAAKnN,EAAQmN,GAAK,QAC1B,IAAI02B,EAAOlvC,KAAK4wE,cAAcvlE,GAG9B,OAFAq7C,EAAS9kD,YAAYstC,GACrB6jC,EAAKnxE,YAAY8kD,GACVqsB,GAOXr2B,EAAYxgD,UAAUi3E,qBAAuB,SAAU9nE,GACnD,IAAI0nE,EAAO/yE,KAAK8mD,aACZJ,EAAW1mD,KAAK2xE,eAAe,CAAE,GAAMtmE,EAAQmN,KACnDnN,EAAQmN,GAAKnN,EAAQmN,GAAK,UAC1B,IAAIu4D,EAAS/wE,KAAK8wE,WAAWzlE,GAG7B,OAFAq7C,EAAS9kD,YAAYmvE,GACrBgC,EAAKnxE,YAAY8kD,GACVqsB,GAQXr2B,EAAYxgD,UAAUkyD,qBAAuB,SAAU/iD,EAASrK,GAE5D,IADA,IAAI/D,EAAOiB,OAAOjB,KAAKoO,GACdzO,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAC7BoE,EAAQqzB,aAAap3B,EAAKL,GAAIyO,EAAQpO,EAAKL,KAE/C,OAAOoE,GAQX07C,EAAYxgD,UAAUi0D,aAAe,SAAU9kD,GAC3C,OAAO,MAEJqxC,EAtXsB,GCG7BsS,EAAgC,WAEhC,SAASA,EAAekhB,GACpBlwE,KAAKowE,OAASF,EA0elB,OAteAlhB,EAAe9yD,UAAUm0E,eAAiB,SAAUhlE,EAASrO,GACzD,OAAOqO,EAAQrO,IAQnBgyD,EAAe9yD,UAAUi0D,aAAe,SAAU9kD,GAC9C,IAAI+nE,EAAY5yE,SAASW,cAAc,UAKvC,OAJAiyE,EAAU/+C,aAAa,KAAMr0B,KAAKowE,OAAS,WAC3CpwE,KAAKqzE,IAAMD,EAAUE,WAAW,MAChCtzE,KAAKozE,UAAYA,EACjBpzE,KAAKuzE,cAAcloE,EAAQqjC,MAAOrjC,EAAQsjC,QACnC3uC,KAAKozE,WAQhBpkB,EAAe9yD,UAAUq3E,cAAgB,SAAU7kC,EAAOC,GACtD,IAAI3tC,EAAUR,SAAS+sB,eAAevtB,KAAKowE,QACvCvzB,EAAQz/C,YAAkB4D,GAA6C,KAAlCA,EAAQggC,wBAC7C5jC,YAAkB4C,KAAK0uC,OACvB1uC,KAAKozE,UAAU/+C,aAAa,QAASqa,EAAQA,EAAMxiC,WAAa2wC,EAAKnO,MAAMxiC,YAG3ElM,KAAKozE,UAAU/+C,aAAa,QAASr0B,KAAK0uC,MAAMxiC,YAEhD9O,YAAkB4C,KAAK2uC,QACvB3uC,KAAKozE,UAAU/+C,aAAa,SAAUsa,EAASA,EAAOziC,WAAa,OAGnElM,KAAKozE,UAAU/+C,aAAa,SAAUr0B,KAAK2uC,OAAOziC,aAI1D8iD,EAAe9yD,UAAUs3E,cAAgB,SAAUnoE,GAC/CrL,KAAKqzE,IAAII,UAAYzzE,KAAKqwE,eAAehlE,EAAS,gBAClD,IAAIkmD,EAAYvxD,KAAKqwE,eAAehlE,EAAS,oBAC7C,IAAKjO,YAAkBm0D,GAAY,CAC/B,IAAImiB,EAAkBniB,EAAU50D,MAAM,KACtCqD,KAAKqzE,IAAIM,YAAY,CAACz+D,SAASw+D,EAAgB,GAAI,IAAKx+D,SAASw+D,EAAgB,GAAI,MAEzF1zE,KAAKqzE,IAAIO,YAAc5zE,KAAKqwE,eAAehlE,EAAS,WAOxD2jD,EAAe9yD,UAAUw0E,SAAW,SAAUrlE,GAC1CrL,KAAKqzE,IAAIQ,OACT7zE,KAAKqzE,IAAIS,YACT9zE,KAAKqzE,IAAII,UAAYzzE,KAAKqwE,eAAehlE,EAAS,gBAClDrL,KAAKqzE,IAAIO,YAAcvoE,EAAQm+C,OAC/BxpD,KAAKqzE,IAAIU,OAAO1oE,EAAQqnE,GAAIrnE,EAAQsnE,IACpC3yE,KAAKqzE,IAAIW,OAAO3oE,EAAQunE,GAAIvnE,EAAQwnE,IACpC7yE,KAAKqzE,IAAI7pB,SACTxpD,KAAKqzE,IAAIY,WAObjlB,EAAe9yD,UAAU00E,cAAgB,SAAUvlE,EAASmlE,GACxD,IAAI0D,EAAYl0E,KAAKqzE,IACjBc,EAAe9oE,EAAQgmD,GAsB3B,OArBArxD,KAAKqzE,IAAIQ,OACT7zE,KAAKqzE,IAAIS,YACLtD,GACAxwE,KAAKqzE,IAAIe,UAAU5D,EAAgB,GAAIA,EAAgB,IAE3DxwE,KAAKqzE,IAAIgB,YAAcr0E,KAAKqwE,eAAehlE,EAAS,WACpDrL,KAAKwzE,cAAcnoE,GACnBrL,KAAKqzE,IAAInkC,KAAK7jC,EAAQ8U,EAAG9U,EAAQgK,EAAGhK,EAAQqjC,MAAOrjC,EAAQsjC,QACtC,OAAjBwlC,GAAyBA,GAAgB,EACzCn0E,KAAKs0E,iBAAiBjpE,IAGD,SAAjBA,EAAQo+C,OACRp+C,EAAQo+C,KAAO,eAEnBzpD,KAAKqzE,IAAIkB,UAAYlpE,EAAQo+C,KAC7BzpD,KAAKqzE,IAAImB,SAASnpE,EAAQ8U,EAAG9U,EAAQgK,EAAGhK,EAAQqjC,MAAOrjC,EAAQsjC,QAC/D3uC,KAAKqzE,IAAI7pB,UAEbxpD,KAAKqzE,IAAIY,UACTj0E,KAAKqzE,IAAMa,EACHl0E,KAAKozE,WAGjBpkB,EAAe9yD,UAAUo4E,iBAAmB,SAAUjpE,GAClD,IAAI8oE,EAAe9oE,EAAQgmD,GACvBlxC,EAAI9U,EAAQ8U,EACZ9K,EAAIhK,EAAQgK,EACZq5B,EAAQrjC,EAAQqjC,MAChBC,EAAStjC,EAAQsjC,OACA,SAAjBtjC,EAAQo+C,OACRp+C,EAAQo+C,KAAO,eAEnBzpD,KAAKqzE,IAAIkB,UAAYlpE,EAAQo+C,KACzB/a,EAAQ,EAAIylC,IACZA,EAAezlC,EAAQ,GAEvBC,EAAS,EAAIwlC,IACbA,EAAexlC,EAAS,GAE5B3uC,KAAKqzE,IAAIS,YACT9zE,KAAKqzE,IAAIU,OAAO5zD,EAAIuuB,EAAQylC,EAAc9+D,GAC1CrV,KAAKqzE,IAAIoB,MAAMt0D,EAAIuuB,EAAOr5B,EAAG8K,EAAIuuB,EAAOr5B,EAAIs5B,EAAQwlC,GACpDn0E,KAAKqzE,IAAIoB,MAAMt0D,EAAIuuB,EAAOr5B,EAAIs5B,EAAQxuB,EAAG9K,EAAIs5B,EAAQwlC,GACrDn0E,KAAKqzE,IAAIoB,MAAMt0D,EAAG9K,EAAIs5B,EAAQxuB,EAAG9K,EAAG8+D,GACpCn0E,KAAKqzE,IAAIoB,MAAMt0D,EAAG9K,EAAG8K,EAAIuuB,EAAOr5B,EAAG8+D,GACnCn0E,KAAKqzE,IAAIqB,YACT10E,KAAKqzE,IAAI5pB,OACTzpD,KAAKqzE,IAAI7pB,UAQbwF,EAAe9yD,UAAU0nD,SAAW,SAAUv4C,EAASmlE,GACnD,IACImE,EADOtpE,EAAQvE,EACEnK,MAAM,KACvBwsC,EAAcnpC,KAAKqwE,eAAehlE,EAAS,gBAC3C6oE,EAAYl0E,KAAKqzE,IACjB3gE,GAAO,EACX1S,KAAKqzE,IAAIQ,OACT7zE,KAAKqzE,IAAIS,YACLtD,GACAxwE,KAAKqzE,IAAIe,UAAU5D,EAAgB,GAAIA,EAAgB,IAE3DxwE,KAAKqzE,IAAIgB,YAAchpE,EAAQi3B,QAAUj3B,EAAQi3B,QAAUtiC,KAAKqwE,eAAehlE,EAAS,gBACxFrL,KAAKwzE,cAAcnoE,GACnB,IAAK,IAAIzO,EAAI,EAAGA,EAAI+3E,EAAU93E,OAAQD,GAAQ,EAAG,CAC7C,IAAI81E,EAAK56D,WAAW68D,EAAU/3E,EAAI,IAC9B+1E,EAAK76D,WAAW68D,EAAU/3E,EAAI,IAClC,OAAQ+3E,EAAU/3E,IACd,IAAK,IACIyO,EAAQupE,QAAWvpE,EAAQsmD,IAC5B3xD,KAAKqzE,IAAIU,OAAOrB,EAAIC,GAExB,MACJ,IAAK,IACItnE,EAAQupE,QACT50E,KAAKqzE,IAAIW,OAAOtB,EAAIC,GAExB,MACJ,IAAK,IACD,IAAIkC,EAAK/8D,WAAW68D,EAAU/3E,EAAI,IAC9Bk4E,EAAKh9D,WAAW68D,EAAU/3E,EAAI,IAClCoD,KAAKqzE,IAAI0B,iBAAiBrC,EAAIC,EAAIkC,EAAIC,GACtCl4E,GAAQ,EACR,MACJ,IAAK,IACD,IAAIo4E,EAAKl9D,WAAW68D,EAAU/3E,EAAI,IAC9Bq4E,EAAKn9D,WAAW68D,EAAU/3E,EAAI,IAC9Bs4E,EAAKp9D,WAAW68D,EAAU/3E,EAAI,IAC9Bu4E,EAAKr9D,WAAW68D,EAAU/3E,EAAI,IAClCoD,KAAKqzE,IAAI+B,cAAc1C,EAAIC,EAAIqC,EAAIC,EAAIC,EAAIC,GAC3Cv4E,GAAQ,EACR,MACJ,IAAK,IACIyO,EAAQupE,OAUJliE,IACL1S,KAAKqzE,IAAIgC,IAAIhqE,EAAQ8U,EAAG9U,EAAQgK,EAAGhK,EAAQw2B,OAAQx2B,EAAQnO,MAAOmO,EAAQqM,IAAKrM,EAAQiqE,kBACvFt1E,KAAKqzE,IAAIgC,IAAIhqE,EAAQ8U,EAAG9U,EAAQgK,EAAGhK,EAAQupE,OAAQvpE,EAAQqM,IAAKrM,EAAQnO,OAAQmO,EAAQiqE,kBACxF5iE,GAAO,GAZHrH,EAAQsmD,GACR3xD,KAAKqzE,IAAIgC,IAAIhqE,EAAQsmD,GAAItmD,EAAQumD,GAAIvmD,EAAQw2B,OAAQ,EAAG,EAAIr7B,KAAKk5C,GAAIr0C,EAAQiqE,mBAG7Et1E,KAAKqzE,IAAIU,OAAO1oE,EAAQ8U,EAAG9U,EAAQgK,GACnCrV,KAAKqzE,IAAIgC,IAAIhqE,EAAQ8U,EAAG9U,EAAQgK,EAAGhK,EAAQw2B,OAAQx2B,EAAQnO,MAAOmO,EAAQqM,IAAKrM,EAAQiqE,kBACvFt1E,KAAKqzE,IAAIW,OAAO3oE,EAAQ8U,EAAG9U,EAAQgK,IAQ3CzY,GAAQ,EACR,MACJ,IAAK,IACL,IAAK,IACDoD,KAAKqzE,IAAIqB,YAET93E,GAAQ,GAapB,MATqB,SAAjByO,EAAQo+C,WAAoCztD,IAAjBqP,EAAQo+C,OACnCzpD,KAAKqzE,IAAIkB,UAAYlpE,EAAQo+C,KAC7BzpD,KAAKqzE,IAAI5pB,QAETtgB,EAAc,GACdnpC,KAAKqzE,IAAI7pB,SAEbxpD,KAAKqzE,IAAIY,UACTj0E,KAAKqzE,IAAMa,EACJl0E,KAAKozE,WAQhBpkB,EAAe9yD,UAAU+gD,WAAa,SAAU5xC,EAASowC,EAAOmT,EAAQC,EAAQtS,EAAIi1B,GAChF,IAAIx0B,EAAah9C,KAAKqwE,eAAehlE,EAAS,eACzCjO,YAAkB4/C,IAA4C,YAA7BA,EAAWxmC,gBAC7CwmC,EAAa,UAEjB,IAAI8R,EAAW9uD,KAAKqwE,eAAehlE,EAAS,aACxC0xC,EAAa/8C,KAAKqwE,eAAehlE,EAAS,eAE1C4wC,EADYj8C,KAAKqwE,eAAehlE,EAAS,cAAcmL,cACnC,IAAMwmC,EAAa,IAAM8R,EAAW,IAAM/R,EAC9DiG,EAAShjD,KAAKqwE,eAAehlE,EAAS,eACtCi3B,OAA8BtmC,IAApBqP,EAAQi3B,QAAwBj3B,EAAQi3B,QAAU,EACjDllC,YAAkBiO,EAAQqjD,gBAAqBrjD,EAAQqjD,cAYtE,GAXe,WAAX1L,IACAA,EAAS,UAEbhjD,KAAKqzE,IAAIQ,OACT7zE,KAAKqzE,IAAIkB,UAAYlpE,EAAQo+C,KAC7BzpD,KAAKqzE,IAAIp3B,KAAOA,EAChBj8C,KAAKqzE,IAAIkC,UAAYvyB,EACrBhjD,KAAKqzE,IAAIgB,YAAc/xC,EACnBj3B,EAAQmqE,WACRx1E,KAAKqzE,IAAIoC,aAAepqE,EAAQmqE,WAE/BhE,EAAS,CAEVxxE,KAAKqzE,IAAIe,UAAU/oE,EAAQ8U,EAAKu1D,GAAiB9mB,GAAkB,GAAIvjD,EAAQgK,GAAKw5C,GAAkB,IACtG7uD,KAAKqzE,IAAIsC,OAAOtqE,EAAQqjD,cAAgBloD,KAAKk5C,GAAK,KAItD,OAFA1/C,KAAKqzE,IAAIuC,SAASn6B,EAAO+1B,EAAUnmE,EAAQ8U,EAAI,EAAGqxD,EAAUj1B,EAAK,GACjEv8C,KAAKqzE,IAAIY,UACFj0E,KAAKozE,WAOhBpkB,EAAe9yD,UAAU40E,WAAa,SAAUzlE,EAASmlE,GACrD,IAAI0D,EAAYl0E,KAAKqzE,IAcrB,OAbArzE,KAAKqzE,IAAIQ,OACT7zE,KAAKqzE,IAAIS,YACT9zE,KAAKqzE,IAAIgC,IAAIhqE,EAAQsmD,GAAItmD,EAAQumD,GAAIvmD,EAAQoyB,EAAG,EAAG,EAAIj3B,KAAKk5C,IAC5D1/C,KAAKqzE,IAAIkB,UAAYlpE,EAAQo+C,KAC7BzpD,KAAKqzE,IAAIgB,YAAchpE,EAAQi3B,QAC/BtiC,KAAKqzE,IAAI5pB,OACL+mB,GACAxwE,KAAKqzE,IAAIe,UAAU5D,EAAgB,GAAIA,EAAgB,IAE3DxwE,KAAKwzE,cAAcnoE,GACnBrL,KAAKqzE,IAAI7pB,SACTxpD,KAAKqzE,IAAIY,UACTj0E,KAAKqzE,IAAMa,EACJl0E,KAAKozE,WAOhBpkB,EAAe9yD,UAAU80E,aAAe,SAAU3lE,GAC9CrL,KAAKqzE,IAAIQ,OACT7zE,KAAKqzE,IAAIS,YAET,IADA,IAAIj4B,EAASxwC,EAAQwwC,OAAOl/C,MAAM,KACzBC,EAAI,EAAGA,EAAIi/C,EAAOh/C,OAAS,EAAGD,IAAK,CACxC,IAAIs5C,EAAQ2F,EAAOj/C,GAAGD,MAAM,KACxBwjB,EAAIrI,WAAWo+B,EAAM,IACrB7gC,EAAIyC,WAAWo+B,EAAM,IACf,IAANt5C,EACAoD,KAAKqzE,IAAIU,OAAO5zD,EAAG9K,GAGnBrV,KAAKqzE,IAAIW,OAAO7zD,EAAG9K,GAG3BrV,KAAKqzE,IAAII,UAAYzzE,KAAKqwE,eAAehlE,EAAS,gBAClDrL,KAAKqzE,IAAIO,YAAcvoE,EAAQm+C,OAC/BxpD,KAAKqzE,IAAI7pB,SACTxpD,KAAKqzE,IAAIY,WAObjlB,EAAe9yD,UAAUg1E,YAAc,SAAU7lE,EAASmlE,GACtD,IAAI0D,EAAYl0E,KAAKqzE,IACjBwC,EAAgBrvE,KAAK4L,IAAI/G,EAAQgmD,GAAIhmD,EAAQimD,IAC7CwkB,EAASzqE,EAAQgmD,GAAKwkB,EACtBE,EAAS1qE,EAAQimD,GAAKukB,EAC1B71E,KAAKqzE,IAAIQ,OACT7zE,KAAKqzE,IAAIS,YACT9zE,KAAKqzE,IAAIe,UAAU/oE,EAAQsmD,GAAItmD,EAAQumD,IACnC4e,GACAxwE,KAAKqzE,IAAIe,UAAU5D,EAAgB,GAAIA,EAAgB,IAE3DxwE,KAAKqzE,IAAIQ,OACT7zE,KAAKqzE,IAAI2C,MAAMF,EAAQC,GACvB/1E,KAAKqzE,IAAIgC,IAAI,EAAG,EAAGQ,EAAe,EAAG,EAAIrvE,KAAKk5C,IAAI,GAClD1/C,KAAKqzE,IAAIkB,UAAYlpE,EAAQo+C,KAC7BzpD,KAAKqzE,IAAI5pB,OACTzpD,KAAKqzE,IAAIY,UACTj0E,KAAKqzE,IAAII,UAAYzzE,KAAKqwE,eAAehlE,EAAS,gBAClDrL,KAAKqzE,IAAIO,YAAcvoE,EAAQm+C,OAC/BxpD,KAAKqzE,IAAI7pB,SACTxpD,KAAKqzE,IAAIY,UACTj0E,KAAKqzE,IAAMa,GAOfllB,EAAe9yD,UAAUm1E,UAAY,SAAUhmE,GAC3CrL,KAAKqzE,IAAIQ,OACT,IAAIoC,EAAW,IAAIC,MACd94E,YAAkBiO,EAAQw8B,QAC3BouC,EAAS/2E,IAAMmM,EAAQw8B,KACvB7nC,KAAKqzE,IAAIhC,UAAU4E,EAAU5qE,EAAQ8U,EAAG9U,EAAQgK,EAAGhK,EAAQqjC,MAAOrjC,EAAQsjC,SAE9E3uC,KAAKqzE,IAAIY,WAObjlB,EAAe9yD,UAAUu2E,qBAAuB,SAAUP,GACtD,IAAIiE,EAKJ,OAJK/4E,YAAkB80E,EAAO,GAAGE,aAC7B+D,EAAan2E,KAAKqzE,IAAIZ,qBAAqB,EAAG,EAAG,EAAGzyE,KAAKozE,UAAUzkC,SAE3D3uC,KAAKo2E,kBAAkBlE,EAAQiE,IAQ/CnnB,EAAe9yD,UAAU+1E,qBAAuB,SAAUC,GACtD,IAAIiE,EAKJ,OAJK/4E,YAAkB80E,EAAO,GAAGE,aAC7B+D,EAAan2E,KAAKqzE,IAAIpB,qBAAqB,EAAG,EAAG,EAAG,EAAG,EAAGjyE,KAAKozE,UAAUzkC,SAE7D3uC,KAAKo2E,kBAAkBlE,EAAQiE,IAInDnnB,EAAe9yD,UAAUk6E,kBAAoB,SAAUlE,EAAQiE,GAC3D,IAAIhE,EACJ,GAAK/0E,YAAkB80E,EAAO,GAAGE,WAU7BD,EAAYD,EAAO,GAAGhuB,MAAMh4C,eAVa,CACzC,IAAK,IAAItP,EAAI,EAAGA,GAAKs1E,EAAOr1E,OAAS,EAAGD,IAAK,CACzC,IAAIsnD,EAAQguB,EAAOt1E,GAAGsnD,MAClBmyB,EAAgBnE,EAAOt1E,GAAGw1E,UAAW/wE,MAAM,GAAI,GAC/Ci1E,EAAYphE,SAASmhE,EAAc,IAAM,IAC7CF,EAAWI,aAAaD,EAAWpyB,GAEvCiuB,EAAYgE,EAAWjqE,WAK3B,OAAOimE,GAQXnjB,EAAe9yD,UAAUkyD,qBAAuB,SAAU/iD,EAASrK,GAG/D,IAFA,IAAI/D,EAAOiB,OAAOjB,KAAKoO,GACnB4zC,EAAS/gD,OAAOjB,KAAKoO,GAAS3H,KAAI,SAAU1G,GAAO,OAAOqO,EAAQrO,MAC7DJ,EAAI,EAAGA,EAAIK,EAAKJ,OAAQD,IAC7BoE,EAAQqzB,aAAap3B,EAAKL,GAAIqiD,EAAOriD,IAEzC,OAAO,MAOXoyD,EAAe9yD,UAAUs6E,uBAAyB,SAAUnrE,GACxDrL,KAAKouD,qBAAqB/iD,EAASrL,KAAKozE,WACxC,IAAIC,EAAMrzE,KAAKqzE,IACf,IAAKj2E,YAAkB4C,KAAKy2E,SAAU,CAClC,IAAIC,EAAQ,IAAIR,MAChBQ,EAAMt0D,OAAS,WACXixD,EAAIhC,UAAUqF,EAAO,EAAG,IAE5BA,EAAMx3E,IAAMc,KAAKy2E,UAOzBznB,EAAe9yD,UAAUy6E,UAAY,SAAUznC,GAC3ClvC,KAAKqzE,IAAIY,UACTj0E,KAAKqzE,IAAIsD,UAAUznC,EAAK/uB,EAAG+uB,EAAK75B,EAAG65B,EAAKR,MAAOQ,EAAKP,SASxDqgB,EAAe9yD,UAAU41E,YAAc,SAAUzmE,GAC7C,OAAO,MAQX2jD,EAAe9yD,UAAUg3E,aAAe,SAAU7nE,GAC9C,OAAO,MAMX2jD,EAAe9yD,UAAU06E,WAAa,SAAUvrE,GAC5CrL,KAAKqzE,IAAIQ,OACT7zE,KAAKqzE,IAAIkB,UAAY,cACrBv0E,KAAKqzE,IAAInkC,KAAK7jC,EAAQ8U,EAAG9U,EAAQgK,EAAGhK,EAAQqjC,MAAOrjC,EAAQsjC,QAC3D3uC,KAAKqzE,IAAI5pB,OACTzpD,KAAKqzE,IAAIwD,QAMb7nB,EAAe9yD,UAAU46E,cAAgB,WACrC92E,KAAKqzE,IAAIY,WAQbjlB,EAAe9yD,UAAUk1E,YAAc,SAAU/lE,GAC7C,OAAO,MAOX2jD,EAAe9yD,UAAU4qD,WAAa,WAClC,OAAO,MAQXkI,EAAe9yD,UAAUy1E,eAAiB,SAAUtmE,GAChD,OAAO,MAQX2jD,EAAe9yD,UAAU4zD,UAAY,SAAUzkD,GAC3C,OAAO,MAEJ2jD,EA7eyB,GCPpC,IAAIhyB,EAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAuBtC,SAASigB,EAAY/rC,EAAM2qC,GAC9B,IAAI86B,EAAYzlE,GAAQ,GACpB+qC,EAAa77C,SAAS+sB,eAAe,oBAKzC,GAJmB,OAAf8uB,IACAA,EAAal7C,YAAc,OAAQ,CAAEqX,GAAI,qBACzChY,SAAS2gC,KAAKv/B,YAAYy6C,IAER,kBAAV/qC,IAAuBA,EAAKnT,QAAQ,MAAQ,GAAKmT,EAAKnT,QAAQ,MAAQ,GAAI,CAElF,IADA,IAAI64E,EAAY1lE,EAAK3U,MAAM,KAClBC,EAAI,EAAGA,EAAIo6E,EAAUn6E,OAAQD,KACK,IAAnCo6E,EAAUp6E,GAAGuB,QAAQ,WACrB64E,EAAUp6E,GAAKo6E,EAAUp6E,GAAGF,QAAQ,QAAS,MAGrD4U,EAAO0lE,EAAUpzE,KAAK,KAc1B,OAZAy4C,EAAWp6C,UAAa80E,EAAU54E,QAAQ,SAAW,GAAK44E,EAAU54E,QAAQ,UAAY,EAAK44E,EAAYzlE,EACzG+qC,EAAW7pB,MAAMua,SAAW,QAC5BsP,EAAW7pB,MAAMs8B,SAAW7S,EAAKY,KACjCR,EAAW7pB,MAAMwqB,WAAaf,EAAKe,WACnCX,EAAW7pB,MAAMsqB,UAAYb,EAAKa,UAClCT,EAAW7pB,MAAMuqB,WAAad,EAAKc,WACnCV,EAAW7pB,MAAMyC,WAAa,SAC9BonB,EAAW7pB,MAAMmP,IAAM,OACvB0a,EAAW7pB,MAAMiP,KAAO,IACxB4a,EAAW7pB,MAAMykD,WAAa,SAE9B56B,EAAW7pB,MAAM0kD,WAAa,SACvB,IAAI35B,EAAKlB,EAAW8S,YAAa9S,EAAWgT,cAGhD,SAAS3L,EAAcyzB,EAAIC,EAAIloC,EAAM2T,EAAew0B,EAAc11C,EAAKC,EAAQH,EAAM61C,EAAMC,EAAMC,GACpG,IAAI10B,EAAY,GACZxL,EAASpI,EAAK/uB,EACdo3B,EAASrI,EAAK75B,EACdq5B,EAAQQ,EAAK/uB,EAAI+uB,EAAKR,MACtBC,EAASO,EAAK75B,EAAI65B,EAAKP,OAmE3B,OAlEA6oC,EAAYA,GAAwB,EAChC71C,GAKAmhB,GAJAA,EAAYA,EAAUxyB,OAAO,KAAagnB,EAAU,KAAOC,EAAS6/B,GAAM,MAAQ9/B,EAAS,IACrFC,EAAS,KAAOD,EAAS6/B,GAAM,IAAM5/B,EADd,QAEX7I,EAAQyoC,GAAM,IAAO5/B,EAAU,MAAQ7I,EAAQ,IAC3D6I,EAAS,IAAO7I,EAAS,KAAO6I,EAAS6/B,KACzB9mD,OAAO,MAAcoe,EAAS,KAAOC,EAASyoC,GAAM,MAAQ1oC,EAAQ,IACnFC,EAAU,KAAOD,EAAQyoC,GAAM,IAAOxoC,GACxB,IAAjB0oC,IAEAv0B,GADAA,EAAYA,EAAUxyB,OAAO,OAAcuyB,EAAc1iC,EAAIk3D,EAAe,GAAK,IAAO1oC,IAClEre,OAAO,OAAcgnD,EAAOE,GAAa,KAAO7oC,EAAS0oC,EAAeG,IAC9F10B,GAAa,MAAcw0B,EAAQ,KAAO3oC,EAAS0oC,GAAgB,KAAOC,EAAOE,GAC7E,KAAO7oC,EAAS0oC,EAAeG,IAGnC10B,EADCD,EAAc1iC,EAAIk3D,EAAe,EAAK//B,EAC3BwL,EAAUxyB,OAAO,OAAcuyB,EAAc1iC,EAAIk3D,EAAe,GAAK,IAAM1oC,EAA1D,OACX2I,EAAS6/B,GAAM,IAAMxoC,EAAS,MAAQ2I,EAAS,IAC3D3I,EAAS,IAAO2I,EAAU,KAAO3I,EAASyoC,GAAM,MAGjC,IAAjBC,EACYv0B,EAAUxyB,OAAO,OAAcgnB,EAAS6/B,GAAM,IAAMxoC,EAAS,MAAQ2I,EAAS,IACpF3I,EAAS,IAAO2I,EAAU,KAAO3I,EAASyoC,GAAM,MAG1Ct0B,EAAUxyB,OAAO,MAAcgnB,EAAU,KAAO3I,EAASyoC,GAAM,OAI9Ex1C,GAGLkhB,GAFAA,EAAYA,EAAUxyB,OAAO,KAAagnB,EAAU,KAAOC,EAAS6/B,GAAM,MAAQ9/B,EAAS,IACpFC,EAAU,KAAOD,EAAS6/B,GAAM,IAAO5/B,EADjB,OACyCsL,EAAc1iC,EAAIk3D,EAAe,GAAK,IAAO9/B,IAC7FjnB,OAAO,OAAcgnD,EAAOE,GAAa,KAAO30B,EAAcxtC,EAAImiE,IAIxF10B,GAFAA,GADAA,GAAa,MAAcw0B,EAAQ,IAAOz0B,EAAcxtC,EAAK,KAAOiiE,EAAOE,GAAa,KAAO30B,EAAcxtC,EAAImiE,IAC3FlnD,OAAO,OAAcuyB,EAAc1iC,EAAIk3D,EAAe,GAAK,IAAO9/B,EAA3D,OACtB7I,EAAQyoC,GAAM,IAAO5/B,EAAU,MAAS7I,EAAS,IAAO6I,EAAU,IAAO7I,EAAS,KAAO6I,EAAS6/B,KACnF9mD,OAAO,MAAcoe,EAAS,KAAOC,EAASyoC,GAAM,MAAS1oC,EAAS,IACrFC,EAAU,KAAOD,EAAQyoC,GAAM,IAAOxoC,EADhB,OAEX2I,EAAS6/B,GAAM,IAAOxoC,EAAU,MAAS2I,EAAU,IAC9D3I,EAAU,IAAO2I,EAAU,KAAO3I,EAASyoC,GAAM,OAEnD31C,GAKLqhB,GAFAA,GAFAA,EAAYA,EAAUxyB,OAAO,KAAagnB,EAAU,KAAOC,EAAS6/B,GAAM,MAAQ9/B,EAAS,IACpFC,EAAU,KAAOD,EAAS6/B,GAAM,IAAO5/B,IACxBjnB,OAAO,OAAcoe,EAAQyoC,GAAM,IAAO5/B,EAAU,MAAS7I,EAAS,IACrF6I,EAAU,IAAO7I,EAAS,KAAO6I,EAAS6/B,GADpB,MACwC1oC,EAAS,KAAOmU,EAAcxtC,EAAIgiE,EAAe,KAChG/mD,OAAO,OAAcoe,EAAQ2oC,EAAeG,GAAa,KAAOD,EAAOC,IAI7F10B,GAFAA,GADAA,GAAa,OAASpU,EAAQ2oC,GAAgB,IAAOE,EAAQ,KAAO7oC,EAAQ2oC,EAAeG,GAAa,KAAOD,EAAOC,IAChGlnD,OAAO,MAAcoe,EAAS,KAAOmU,EAAcxtC,EAAIgiE,EAAe,GAA/D,MACX3oC,EAAS,KAAOC,EAASyoC,GAAM,MAAQ1oC,EAAQ,IAAOC,EAAU,KAAOD,EAAQyoC,GAAM,IAAOxoC,IACxFre,OAAO,OAAcgnB,EAAS6/B,GAAM,IAAOxoC,EAAU,MAAQ2I,EAAS,IACrF3I,EAAU,IAAO2I,EAAU,KAAO3I,EAASyoC,GAAM,QAKxDt0B,GAFAA,EAAYA,EAAUxyB,OAAO,MAAagnB,EAAS6/B,GAAM,IAAO5/B,EAAU,MAASD,EAAU,IACtFC,EAAU,IAAOD,EAAU,KAAOC,EAAS6/B,GADrB,MACyC9/B,EAAU,KAAOuL,EAAcxtC,EAAIgiE,EAAe,KAClG/mD,OAAO,OAAcgnB,EAAS+/B,EAAeG,GAAa,KAAOD,EAAOC,IAK9F10B,GAHAA,GADAA,GAAa,OAASxL,EAAS+/B,GAAgB,IAAOE,EAAQ,KAAOjgC,EAAS+/B,EAAeG,GAAa,KAAOD,EAAOC,IAClGlnD,OAAO,MAAcgnB,EAAU,KAAOuL,EAAcxtC,EAAIgiE,EAAe,GAAhE,MACX//B,EAAU,KAAO3I,EAASyoC,GAAM,MAAQ9/B,EAAS,IAC5D3I,EAAU,KAAO2I,EAAS6/B,GAAM,IAAOxoC,IACxBre,OAAO,OAAcoe,EAAQyoC,GAAM,IAAOxoC,EAAU,MAAQD,EAAQ,IACnFC,EAAU,IAAOD,EAAS,KAAOC,EAASyoC,GADpB,MAEX1oC,EAAS,KAAO6I,EAAS6/B,GAAM,MAAQ1oC,EAAQ,IAC1D6I,EAAU,KAAO7I,EAAQyoC,GAAM,IAAO5/B,EAAU,OAEpDuL,EAGX,IAAIvF,EACA,SAAc7O,EAAOC,GACjB3uC,KAAK0uC,MAAQA,EACb1uC,KAAK2uC,OAASA,GAMlBgV,EACA,SAAcxjC,EAAG9K,EAAGq5B,EAAOC,GACvB3uC,KAAKmgB,EAAIA,EACTngB,KAAKqV,EAAIA,EACTrV,KAAK0uC,MAAQA,EACb1uC,KAAK2uC,OAASA,GAKlB8oC,EACA,SAAc71C,EAAQF,GAClB1hC,KAAK03E,QAAUh2C,EACf1hC,KAAK23E,SAAW/1C,GAMpBg2C,EACA,SAAyBp/D,GACrBxY,KAAKwY,GAAKA,GAMdyrC,EAA4B,SAAUnmB,GAEtC,SAASmmB,EAAWzrC,EAAI2H,EAAG9K,EAAG2tC,EAAQ1xC,EAAM6wB,EAAWwsB,EAAUD,QAC3C,IAAdvsB,IAAwBA,EAAY,IACxC,IAAIpiC,EAAQ+9B,EAAOx8B,KAAKtB,KAAMwY,IAAOxY,KAWrC,OAVAD,EAAMoiC,UAAY,GAClBpiC,EAAM4uD,SAAW,OACjB5uD,EAAM2uD,cAAgB,EACtB3uD,EAAMogB,EAAIA,EACVpgB,EAAMsV,EAAIA,EACVtV,EAAMijD,OAASA,EACfjjD,EAAMuR,KAAOA,EACbvR,EAAMoiC,UAAYA,EAClBpiC,EAAM4uD,SAAWA,EACjB5uD,EAAM2uD,cAAgBA,EACf3uD,EAEX,OAhBAi9B,EAAUinB,EAAYnmB,GAgBfmmB,EAjBqB,CAkB9B2zB,GAGK,SAASp6B,EAAWhlC,GACvB,OAAOhY,SAAS+sB,eAAe/U,GAG5B,SAASqiC,EAAcriC,GAC1B,IAAIxX,EAAUw8C,EAAWhlC,GACrBxX,GACAqnB,YAAOrnB,GAIR,SAAS2nD,EAAW/gB,EAAUghB,EAAO/L,EAAMr7B,EAAKnW,EAASowC,GAC5D,IACIgB,EAAW,IAAIC,EAAY,IAC3BhsC,EAMD,SAAyBk3B,EAAUiV,EAAM+L,EAAOv9C,EAASmW,GAC5D,IAAIivD,EACAhrB,EAAe,OACf/W,EAAQmO,EAAKnO,MACbC,EAASkO,EAAKlO,OACdkb,EAAOjiB,EAASznB,EAChB2pC,EAAOliB,EAASvyB,EAChB8K,EAAIynB,EAASznB,GAAMuuB,EAAQ,EAC3Br5B,EAAIuyB,EAASvyB,GAAMs5B,EAAS,EAChC,OAAQia,GACJ,IAAK,SACL,IAAK,SACDnD,EAAe,UACf9nD,YAAM0N,EAAS,CAAE,GAAMqjC,EAAQ,EAAG,GAAMC,EAAS,EAAG,GAAMkb,EAAM,GAAMC,IACtE,MACJ,IAAK,QACD2mB,EAAO,KAAYtwD,EAAI,IAAM2pC,EAAtB,OAAgDD,EAAQnb,EAAQ,GAAM,IAAMob,EAA5E,MACSD,EAAO,KAAOC,EAAQnb,EAAS,GADxC,MACgEkb,EAAO,KACzEC,GAASnb,EAAS,GACvBhxC,YAAM0N,EAAS,CAAE,EAAKolE,IACtB,MACJ,IAAK,iBACDA,EAAO,KAAYtwD,EAAI,IAAM2pC,EAAtB,OAAgDD,EAAQnb,EAAQ,GAAM,IAAMob,EACnFnsD,YAAM0N,EAAS,CAAE,EAAKolE,IACtB,MACJ,IAAK,eACDA,EAAO,KAAY5mB,EAAO,KAAOC,EAAQnb,EAAS,GAA3C,MAAmEkb,EAAO,KAAOC,GAASnb,EAAS,GAC1GhxC,YAAM0N,EAAS,CAAE,EAAKolE,IACtB,MACJ,IAAK,UACDA,EAAO,KAAYtwD,EAAI,IAAM2pC,EAAtB,MACSD,EAAO,KAAOC,GAASnb,EAAS,GADzC,OAEUkb,EAAQnb,EAAQ,GAAM,IAAMob,EAFtC,MAGSD,EAAO,KAAOC,EAAQnb,EAAS,GAHxC,MAISxuB,EAAI,IAAM2pC,EAAO,KACjCnsD,YAAM0N,EAAS,CAAE,EAAKolE,IACtB,MACJ,IAAK,YACDA,EAAO,KAAYtwD,EAAI,KAAO2pC,GAASnb,EAAS,GAAzC,OACUkb,EAAQnb,EAAQ,GAAM,KAAOob,GAASnb,EAAS,GADzD,OAEUkb,EAAQnb,EAAQ,GAAM,KAAOob,EAAQnb,EAAS,GAFxD,MAGSxuB,EAAI,KAAO2pC,EAAQnb,EAAS,GAHrC,MAISxuB,EAAI,KAAO2pC,GAASnb,EAAS,GAAM,KACnDhxC,YAAM0N,EAAS,CAAE,EAAKolE,IACtB,MACJ,IAAK,WACDA,EAAO,KAAYtwD,EAAI,KAAO2pC,EAAQnb,EAAS,GAAxC,MACSkb,EAAO,KAAOC,GAASnb,EAAS,GADzC,OAEUkb,EAAQnb,EAAQ,GAAM,KAAOob,EAAQnb,EAAS,GAFxD,MAGSxuB,EAAI,KAAO2pC,EAAQnb,EAAS,GAAM,KAClDhxC,YAAM0N,EAAS,CAAE,EAAKolE,IACtB,MACJ,IAAK,mBACDA,EAAO,MAAa5mB,EAAQnb,EAAQ,GAAM,KAAOob,EAAQnb,EAAS,GAA3D,MACSkb,EAAO,KAAOC,EAAQnb,EAAS,GADxC,OAEUkb,EAAQnb,EAAQ,GAAM,KAAOob,EAAQnb,EAAS,GAFxD,OAGUkb,EAAQnb,EAAQ,GAAM,KAAOob,EAAQnb,EAAS,GAAM,KACrEhxC,YAAM0N,EAAS,CAAE,EAAKolE,IACtB,MACJ,IAAK,WAID,IAHA,IACIjyB,OAAS,EACTuO,OAAS,EACJnwD,EAAI,EAAGA,GAAK,EAAGA,IACpB4hD,EAAU9P,EAAQ,EAAKloC,KAAKo5C,IAAKp5C,KAAKk5C,GAAK,KAJtC,GAI8C9iD,IACnDmwD,EAAUpe,EAAS,EAAKnoC,KAAKq5C,IAAKr5C,KAAKk5C,GAAK,KALvC,GAK+C9iD,IAEhD6zE,EADM,IAAN7zE,EACO,MAAaitD,EAAOrL,GAAU,KAAOsL,EAAOiD,GAAU,IAGtD0jB,EAAKngD,OAAO,MAAau5B,EAAOrL,GAAU,KAAOsL,EAAOiD,GAAU,KAGjF0jB,EAAOA,EAAKngD,OAAO,KACnB3yB,YAAM0N,EAAS,CAAE,EAAKolE,IACtB,MACJ,IAAK,QACDhrB,EAAe,QACf9nD,YAAM0N,EAAS,CAAE,KAAQmW,EAAK,OAAUmtB,EAAQ,MAASD,EAAOvuB,EAAGA,EAAG9K,EAAGA,IAGjF,MAAO,CAAEu0C,aAAcv+C,EAASo6C,aAAcA,GAvFnC0E,CAAgBviB,EAAUiV,EAAM+L,EAAOv9C,EAASmW,GACvD66B,EAAaI,EAAS,OAAS/rC,EAAK+0C,cAAc/0C,EAAKk5C,cAE3D,OADAvN,EAAWhoB,aAAa,aAAconB,GAC/BY,EAuFX,IAAIwH,EAA4B,SAAU/lB,GAEtC,SAAS+lB,EAAWrrC,EAAIixC,EAAM/a,EAAOwV,EAAO5hB,EAASivB,EAAWzqD,GAC5D,IAAI/G,EAAQ+9B,EAAOx8B,KAAKtB,KAAMwY,IAAOxY,KAOrC,OANAD,EAAMuiC,QAAUA,EAChBviC,EAAM0pD,KAAOA,EACb1pD,EAAMypD,OAAStF,EACfnkD,EAAM,gBAAkB2uC,EACxB3uC,EAAM,oBAAsBwxD,EAC5BxxD,EAAM+G,EAAIA,EACH/G,EAEX,OAXAi9B,EAAU6mB,EAAY/lB,GAWf+lB,EAZqB,CAa9B+zB,GAkCF,IAAIC,EACA,SAAyB13D,EAAG9K,GACxBrV,KAAKmgB,EAAIA,EACTngB,KAAKqV,EAAIA,GCpVb2nB,EAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAazCE,EAA0C,SAAUC,EAAY3B,EAAQ5+B,EAAKwgC,GAC7E,IAA2H12B,EAAvHD,EAAIjI,UAAU/B,OAAQ4gC,EAAI52B,EAAI,EAAI+0B,EAAkB,OAAT4B,EAAgBA,EAAOt/B,OAAOw/B,yBAAyB9B,EAAQ5+B,GAAOwgC,EACrH,GAAuB,kBAAZG,SAAoD,oBAArBA,QAAQC,SAAyBH,EAAIE,QAAQC,SAASL,EAAY3B,EAAQ5+B,EAAKwgC,QACpH,IAAK,IAAI5gC,EAAI2gC,EAAW1gC,OAAS,EAAGD,GAAK,EAAGA,KAASkK,EAAIy2B,EAAW3gC,MAAI6gC,GAAK52B,EAAI,EAAIC,EAAE22B,GAAK52B,EAAI,EAAIC,EAAE80B,EAAQ5+B,EAAKygC,GAAK32B,EAAE80B,EAAQ5+B,KAASygC,GAChJ,OAAO52B,EAAI,GAAK42B,GAAKv/B,OAAOooB,eAAesV,EAAQ5+B,EAAKygC,GAAIA,GAa5Dq6C,EAA2B,SAAUh6C,GAErC,SAASg6C,IACL,OAAkB,OAAXh6C,GAAmBA,EAAO1hC,MAAM4D,KAAMpB,YAAcoB,KAoB/D,OAtBAg9B,EAAU86C,EAAWh6C,GAIrBR,EAAW,CACP3B,YAAS,OACVm8C,EAAU57E,UAAW,YAAQ,GAChCohC,EAAW,CACP3B,YAAS,KACVm8C,EAAU57E,UAAW,aAAS,GACjCohC,EAAW,CACP3B,YAAS,aACVm8C,EAAU57E,UAAW,kBAAc,GACtCohC,EAAW,CACP3B,YAAS,WACVm8C,EAAU57E,UAAW,kBAAc,GACtCohC,EAAW,CACP3B,YAAS,WACVm8C,EAAU57E,UAAW,iBAAa,GACrCohC,EAAW,CACP3B,YAAS,IACVm8C,EAAU57E,UAAW,eAAW,GAC5B47E,EAvBoB,CAwB7B9zC,KAME+zC,EAA+B,SAAUj6C,GAEzC,SAASi6C,IACL,OAAkB,OAAXj6C,GAAmBA,EAAO1hC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAg9B,EAAU+6C,EAAej6C,GAIzBR,EAAW,CACP3B,YAAS,KACVo8C,EAAc77E,UAAW,aAAS,GACrCohC,EAAW,CACP3B,YAAS,IACVo8C,EAAc77E,UAAW,aAAS,GAC9B67E,EAXwB,CAYjC/zC,KAMEg0C,EAA4B,SAAUl6C,GAEtC,SAASk6C,IACL,OAAkB,OAAXl6C,GAAmBA,EAAO1hC,MAAM4D,KAAMpB,YAAcoB,KAc/D,OAhBAg9B,EAAUg7C,EAAYl6C,GAItBR,EAAW,CACP3B,YAAS,IACVq8C,EAAW97E,UAAW,SAAK,GAC9BohC,EAAW,CACP3B,YAAS,IACVq8C,EAAW97E,UAAW,SAAK,GAC9BohC,EAAW,CACP3B,YAAS,IACVq8C,EAAW97E,UAAW,aAAS,GAClCohC,EAAW,CACP3B,YAAS,IACVq8C,EAAW97E,UAAW,cAAU,GAC5B87E,EAjBqB,CAkB9Bh0C,KAMEi0C,EAA8B,SAAUn6C,GAExC,SAASm6C,IACL,OAAkB,OAAXn6C,GAAmBA,EAAO1hC,MAAM4D,KAAMpB,YAAcoB,KAQ/D,OAVAg9B,EAAUi7C,EAAcn6C,GAIxBR,EAAW,CACP3B,YAAS,IACVs8C,EAAa/7E,UAAW,SAAK,GAChCohC,EAAW,CACP3B,YAAS,IACVs8C,EAAa/7E,UAAW,SAAK,GACzB+7E,EAXuB,CAYhCj0C,KAaEk0C,EAAyB,SAAUp6C,GAMnC,SAASo6C,EAAQ7sE,EAASrK,GACtB,OAAO88B,EAAOx8B,KAAKtB,KAAMqL,EAASrK,IAAYhB,KAkvBlD,OAxvBAg9B,EAAUk7C,EAASp6C,GAYnBo6C,EAAQh8E,UAAU6pC,UAAY,WAC1B/lC,KAAKi3B,wBAAyB,EAC9Bj3B,KAAKm4E,sBACAn4E,KAAKqsD,UACNrsD,KAAKo4E,YAETp4E,KAAKq4E,wBAETH,EAAQh8E,UAAUi8E,oBAAsB,WACpCn4E,KAAKy8C,SAAW,IAAIC,EAAY18C,KAAKgB,QAAQwX,IAC7CxY,KAAK8jD,WCrJN,SAA8Bw0B,GACjC,IAAI9lD,EACJ,OAAQ8lD,GACJ,IAAK,eACL,IAAK,eACD9lD,EAAQ,CACJ+lD,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,WAEvB,MACJ,IAAK,eACL,IAAK,aACL,IAAK,gBACDlmD,EAAQ,CACJ+lD,YAAa,UACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,WAEvB,MACJ,IAAK,aACDlmD,EAAQ,CACJ+lD,YAAa,qBACbC,iBAAkB,sBAClBC,kBAAmB,2BACnBC,kBAAmB,4BAEvB,MACJ,QACIlmD,EAAQ,CACJ+lD,YAAa,uBACbC,iBAAkB,UAClBC,kBAAmB,UACnBC,kBAAmB,WAI/B,OAAOlmD,ED8GemmD,CAAqB34E,KAAKs4E,OAC5Ct4E,KAAK44E,cAAgB,GACrB54E,KAAKopC,QAAU,EACfppC,KAAK64E,SAAU,EACf74E,KAAK84E,YAAc,IAEvBZ,EAAQh8E,UAAUk8E,UAAY,WAC1B,IAAIh7B,EAAY58C,SAAS+sB,eAAevtB,KAAKgB,QAAQwX,GAAK,QACtDugE,EAAiBv4E,SAAS+sB,eAAevtB,KAAKgB,QAAQwX,GAAK,mBAC3DxY,KAAKg5E,gBACL3rD,YAAoBrtB,KAAKgB,QAAQwX,GAAbxY,kCAEpBo9C,GAAaA,EAAU38C,YACvB4nB,YAAO+0B,GAEP27B,GAAkBA,EAAet4E,YACjC4nB,YAAO0wD,IAMfb,EAAQh8E,UAAUgyB,OAAS,WAEvB,GADAluB,KAAKi5E,WAAY,EACZj5E,KAAKkqB,SAUNlqB,KAAKk5E,mBACLl5E,KAAKmrD,eAAenrD,KAAKm5E,WAAYn5E,KAAK4nC,cAX1B,CAChB5nC,KAAKo5E,WAAWp5E,KAAK64E,SACrB,IAAI5xB,EAAW,CACXtlC,QAAQ,EAAOvI,KAAM,gBAAiB0kC,QAAS99C,MAEnDA,KAAK2oB,QAAQ,gBAAiBs+B,GAC9B,IAAIoyB,EAAar5E,KAAKs5E,qBAAqBt5E,KAAKm5E,WAAYn5E,KAAK4nC,UACjE5nC,KAAKu5E,WAAWF,EAAW1B,SAAU0B,EAAW3B,QAAS13E,KAAKw5E,YAMlEx5E,KAAK2oB,QAAQ,SAAU,CAAEm1B,QAAS99C,OAClC,IAAIgB,EAAUR,SAAS+sB,eAAe,oBAClCvsB,GACAqnB,YAAOrnB,GAEXhB,KAAKi3B,wBAAyB,GAElCihD,EAAQh8E,UAAUm8E,qBAAuB,WAErC,GADAr4E,KAAKy5E,aAAe,IACfz5E,KAAKkqB,UAAYlqB,KAAK05E,OAAQ,CAE/B,IAAIt8B,EAAYp9C,KAAKy8C,SAASqT,UAAU,CAAEt3C,GAAIxY,KAAKgB,QAAQwX,GAAK,SAChExY,KAAKgB,QAAQY,YAAYw7C,GAEzB,IAAIu8B,EAAen5E,SAAS+sB,eAAevtB,KAAKgB,QAAQwX,GAAK,UACxDmhE,IACDA,EAAe35E,KAAKy8C,SAASq1B,YAAY,CAAEt5D,GAAIxY,KAAKgB,QAAQwX,GAAK,YACpD6b,aAAa,YAAa,kBAE3C+oB,EAAUx7C,YAAY+3E,GACtB,IAAIC,EAAc55E,KAAKy8C,SAASmH,SAAS,CACrC,GAAM5jD,KAAKgB,QAAQwX,GAAK,QAAS,eAA+B,eAAfxY,KAAKs4E,MAAyB,EAAIt4E,KAAKoxD,OAAO1iB,MAC/F,KAAQ1uC,KAAKypD,MAAQzpD,KAAK8jD,WAAWy0B,YAAa,QAA0B,eAAfv4E,KAAKs4E,MAAyB,GAAMt4E,KAAKsiC,QACtG,OAAUtiC,KAAKoxD,OAAOlN,QAE1By1B,EAAa/3E,YAAYg4E,KAGjC1B,EAAQh8E,UAAUq9E,WAAa,SAAU5B,EAAUD,EAAS76B,GACxD,GAAI78C,KAAK65E,OAAOh9E,QAAU,EACtB,OAAO,KAOX,IALA,IAAImsD,EACA8wB,EAAQ,EACRC,EAAc/5E,KAAKy8C,SAASq1B,YAAY,CAAEt5D,GAAIxY,KAAKgB,QAAQwX,GAAK,qBAChEmhE,EAAen8B,EAAWx9C,KAAKgB,QAAQwX,GAAK,UAC5C2H,EAAoB,EAAfngB,KAAKg6E,QAAgBn9B,EAAO,GAAM66B,EAAU13E,KAAKq3E,aAAe,GAChEr5E,EAAK,EAAG80B,EAAK9yB,KAAK65E,OAAQ77E,EAAK80B,EAAGj2B,OAAQmB,IAAM,CACrD,IAAI4qD,EAAQ91B,EAAG90B,GACD,SAAV4qD,IACAI,EAAc,IAAInF,EAAW7jD,KAAKgB,QAAQwX,GAAK,cAAgBshE,EAAO95E,KAAKi6E,QAAQH,GAAQ,EAAG,UAAW,EAAG,MACxG95E,KAAK84E,YAAYgB,IACjBC,EAAYn4E,YAAY+mD,EAAW,IAAIkvB,EAAgB13D,EAAGngB,KAAK84E,YAAYgB,GAAS95E,KAAKopC,SAAWuuC,EAAW33E,KAAKq3E,aAAe,IAAKzuB,EAAO,IAAIrL,EAAKV,EAAMA,GAAO,GAAImM,EAAa,OAE1L8wB,KAGRH,EAAa/3E,YAAYm4E,IAE7B7B,EAAQh8E,UAAUo9E,qBAAuB,SAAUH,EAAYvxC,GAC3D,IAOIsH,EAPAgrC,EAAa18B,EAAWx9C,KAAKgB,QAAQwX,IACrCqqC,EAAgB,IAAIg1B,EAAgB,EAAG,GACvCsC,EAAc,IAAItC,EAAgB,EAAG,GAErCz6B,EAAYI,EAAWx9C,KAAKgB,QAAQwX,GAAK,QACzCmhE,EAAen8B,EAAWx9C,KAAKgB,QAAQwX,GAAK,UAC5CohE,EAAcp8B,EAAWx9C,KAAKgB,QAAQwX,GAAK,SAE3C4hE,GAAQ,EACRC,GAAS,EACT1C,GAAW,EACXx3D,EAAI,EACJ9K,EAAI,EAqBR,GApBArV,KAAKw3E,UAAY,EACG,KAAhBx3E,KAAK2jB,SACL3jB,KAAKs6E,YAAY3rC,QAAU3uC,KAAKu6E,SAEhCv6E,KAAKorD,QAAQvuD,OAAS,GACtBqyC,EAAOlvC,KAAKw6E,sBAAsBrB,EAAYn5E,KAAK4nC,SAASznB,EAAGngB,KAAK4nC,SAASvyB,GAC7E+kE,GAAQ,IAGRlrC,EAAOlvC,KAAKy6E,gBAAgBtB,EAAYvxC,EAAUib,EAAes3B,GAC5Dn6E,KAAK06E,SAONv6D,GADAk6D,EAAUnrC,EAAK/uB,EAAKynB,EAASznB,EAAIngB,KAAK26E,WAAWx6D,GACnC,EAAIngB,KAAKq3E,cALvBM,IADAyC,EAASlrC,EAAK75B,EAAKuyB,EAASvyB,EAAIrV,KAAK26E,WAAWtlE,GAEhDA,EAAK+kE,EAAQ,EAAIp6E,KAAKq3E,eAOV,KAAhBr3E,KAAK2jB,OAAe,CACpB,IAAIi3D,EAAav9B,EAAYr9C,KAAK66E,OAAS76E,KAAK86E,YAAc96E,KAAK2jB,OAAQ3jB,KAAK+6E,WAAWpsC,OACvE,EAAf3uC,KAAKu6E,SAAgB5C,EAAW33E,KAAKq3E,aAAe,IAAMr3E,KAAK66E,OAAS,EAAI,GAE7E/3B,EAAY,MADc,EAAf9iD,KAAKg6E,SAAiBK,GAAWD,GAAUzC,EAA+B,EAApB33E,KAAKq3E,eACzC,IAAMuD,EACnC,MAAQ1rC,EAAKR,OAAU2rC,GAAWD,GAAUzC,EAA+B,EAApB33E,KAAKq3E,cAAoC,EAAfr3E,KAAKg6E,SACtF,IAAMY,EACNI,EAAgBh7E,KAAKy8C,SAASmH,SAAS,CACvC,GAAM5jD,KAAKgB,QAAQwX,GAAK,eAAgB,eAAgB,EACxD,KAAQ,KAAM,QAAW,GAAK,OAAUxY,KAAK8jD,WAAW40B,kBAAmB,EAAK51B,IAEpF62B,EAAa/3E,YAAYo5E,GAE7B,IAAI99E,EAAQ8C,KAAKoxD,OAAO1iB,MAAQ,EAC5BusC,EAAY,IAAIt3B,EAAKzmD,EAAQijB,EAAGjjB,EAAQmY,EAAG65B,EAAKR,MAAQxxC,EAAOgyC,EAAKP,OAASzxC,GAiBjF,GAhBAy8E,EAAatlD,aAAa,UAAW,MACjCr0B,KAAKk7E,iBAAoBl7E,KAAK05E,QAAW15E,KAAK64E,QAI9C74E,KAAKm7E,UAAUjB,EAAYhrC,EAAK/uB,EAAG+uB,EAAK75B,GAHxCrV,KAAKo7E,kBAAkBlB,EAAYhrC,GAKvCkO,EAAU/oB,aAAa,UAAW6a,EAAKP,OAAS3uC,KAAKoxD,OAAO1iB,OAAa1uC,KAAK06E,SAAa,EAAI16E,KAAKq3E,cAAgB,GAAGnrE,YACvHkxC,EAAU/oB,aAAa,SAAU6a,EAAKR,MAAQ1uC,KAAKoxD,OAAO1iB,OAAY1uC,KAAK06E,SAAiB16E,KAAKq3E,aAAT,GAAyB,GAAGnrE,YACpHkxC,EAAU/oB,aAAa,UAAW,KAC7Bj3B,YAAkB4C,KAAKq7E,oBACxBjB,EAAQp6E,KAAKq7E,iBAAiBl9E,QAAQ,QAAU,EAChDw5E,EAAW33E,KAAKq7E,iBAAiBl9E,QAAQ,WAAa,EACtDk8E,EAASr6E,KAAKq7E,iBAAiBl9E,QAAQ,SAAW,GAEtDy7E,EAAYvlD,aAAa,IAAKqvB,EAAc1jD,KAAKqxD,GAAIrxD,KAAKsxD,GAAI2pB,EAAWp4B,EAAe7iD,KAAKq3E,aAAc+C,EAAOzC,EAAU0C,EAAQF,EAAYh6D,EAAGg6D,EAAY9kE,EAAGrV,KAAKw3E,YACnKx3E,KAAKs7E,cAA+B,eAAft7E,KAAKs4E,MAAwB,CAElD,IAAIiD,EAAWv7E,KAAKgB,QAAQwX,GAAK,UACjCohE,EAAYvlD,aAAa,SAAUpP,IAAQiD,KAAO,GAAK,QAAUqzD,EAAW,KAC5E,IAAIC,EAAS,eAAiBD,EAAW,sEACzCC,GAAU,yGACVA,GAAU,oGACV,IAAIC,EAAaz7E,KAAKy8C,SAASqK,aAC/B20B,EAAWpnD,aAAa,KAAMr0B,KAAKgB,QAAQwX,GAAK,0BAChDmhE,EAAa/3E,YAAY65E,GACzBA,EAAWx5E,UAAYu5E,EAI3B,OAFA5B,EAAYvlD,aAAa,SAAUr0B,KAAKoxD,OAAOlN,OAC/ClkD,KAAK07E,WAAW,IAAI7D,EAAgB13D,EAAG9K,GAAIsiE,GAAW0C,IAAWD,IAAUzC,EAAUzoC,GAC9E,IAAIuoC,EAAKE,GAAW0C,IAAWD,IAAUzC,IAEpDO,EAAQh8E,UAAUw/E,WAAa,SAAUxlC,EAAOyhC,EAAUD,EAASxoC,GAC/D,IAAIluC,EAAUR,SAAS+sB,eAAevtB,KAAKgB,QAAQwX,GAAK,SACpDm/D,GACA32E,EAAQqzB,aAAa,YAAa,eAAiBr0B,KAAKq3E,aAAe,KAEvEK,GACA12E,EAAQqzB,aAAa,YAAa,aAAer0B,KAAKq3E,aAAe,QAG7Ea,EAAQh8E,UAAUy/E,kBAAoB,WAClC37E,KAAK44E,cAAgB,GACgD,KAAjE54E,KAAK2jB,OAAOjnB,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAIouB,SACtD9qB,KAAK44E,cAAgB54E,KAAK44E,cAActoD,OAAOtwB,KAAK2jB,SAExD3jB,KAAK44E,cAAgB54E,KAAK44E,cAActoD,OAAOtwB,KAAKorD,UAGxD8sB,EAAQh8E,UAAUk9E,WAAa,SAAUwC,GACrC,IAGIC,EAEAh/B,EAGAL,EACAG,EAEAg0B,EACAmL,EAEAC,EAdAptC,EAAS,EACTD,EAAQ,EACRstC,EAAW,EAIX//B,EAAO39C,YAAO,GAAI0B,KAAK+6E,UAAW,MAAM,GAAjC,WACPpB,EAAen8B,EAAWx9C,KAAKgB,QAAQwX,GAAK,UAG5CyjE,EAAa,GAGjBj8E,KAAK27E,oBAEL,IACI34B,EADqD,QAAtCxiD,SAAS2gC,KAAKxT,aAAa,OAClB,MAAQ,QACpC3tB,KAAKk8E,UAAYl8E,KAAKm5E,WAAWh5D,EAAIngB,KAAK4nC,SAASznB,EACnDngB,KAAKm8E,WAAcn8E,KAAKm5E,WAAWh5D,EAAIngB,KAAKm5E,WAAWzqC,MAAS1uC,KAAKk8E,UACrE,IAAIE,EAAgBp8E,KAAK2jB,OAAOjnB,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAIouB,OACtEuxD,EAAYr8E,KAAK2jB,OAAOxlB,QAAQ,QAAU,GAAK6B,KAAK2jB,OAAOxlB,QAAQ,SAAW,EAC9Em+E,EAAcj/B,EAAYr9C,KAAK44E,cAAc,GAAI38B,GAAMvN,MAAS,EAAI1uC,KAAKg6E,QAAWh6E,KAAKq3E,aACzFkF,EAAev8E,KAAK4nC,SAASznB,EAAIm8D,EAAet8E,KAAK4nC,SAASznB,EAC9Dq8D,EAAgBx8E,KAAKm5E,WAAWh5D,EAAIngB,KAAKm5E,WAAWzqC,MAAU1uC,KAAK4nC,SAASznB,EAAIm8D,EAEhFG,EAAiC,KAAlBL,EAAwBp8E,KAAKu6E,QAAU,EACtDmC,GAAQ,EACRC,GAAW,EACf38E,KAAK84E,YAAc,GACnB,IAGI8D,EAHApD,EAAcx5E,KAAK65E,OAAOh9E,OAAS,EAAK,GAAK,EAC7CggF,EAAiB78E,KAAK65E,OAAOh9E,OAAS,EAAK,EAAI,EAI/CmgD,EAAa,SACb8/B,EAAa98E,KAAK8jD,WAAW20B,kBAC7Bl8B,EAAM,GAAKzkC,WAHA,QAGyBA,WAAWmkC,EAAKY,MACnD++B,IAAY57E,KAAKqsD,WAClBxR,EAAc76C,KAAKgB,QAAQwX,GAAK,SAChCqiC,EAAc76C,KAAKgB,QAAQwX,GAAK,gBAChCqiC,EAAc76C,KAAKgB,QAAQwX,GAAK,oBAChCqiC,EAAc76C,KAAKgB,QAAQwX,GAAK,2BAEpC,IAAInN,EAAU,IAAI44C,EAAWjkD,KAAKgB,QAAQwX,GAAK,QAAwB,EAAfxY,KAAKg6E,QAA6B,EAAfh6E,KAAKu6E,QAA6B,EAAfv6E,KAAKopC,SAAgC,IAAjBppC,KAAKu6E,QAAgB,EAAI,GAAKv3B,EAAQ,IACpJtQ,EDzEL,SAAqBrnC,EAAS4wC,EAAMiI,EAAO3jD,GAC9C,IAAIkuD,EACApS,EAGA/qC,EADAmrC,EAAW,IAAIC,EAAY,IAyB/B,OAtBA+R,EAAgB,CACZ,GAAMpjD,EAAQmN,GACd,EAAKnN,EAAQ8U,EACb,EAAK9U,EAAQgK,EACb,KAAQ6uC,EACR,YAAajI,EAAKY,KAClB,aAAcZ,EAAKa,UACnB,cAAeb,EAAKc,WACpB,cAAed,EAAKe,WACpB,cAAe3xC,EAAQ23C,OACvB,UAAa33C,EAAQ82B,UACrB,QAAW8Z,EAAK3Z,QAChB,oBAAqBj3B,EAAQsjD,UAEjCr9C,EAA+B,kBAAjBjG,EAAQiG,KAAoBjG,EAAQiG,KAAOjG,EAAQiG,KAAK,IACtE+qC,EAAaI,EAASQ,WAAWwR,EAAen9C,IACrCkhB,MAAMuqB,WAAad,EAAKc,WACnCV,EAAW7pB,MAAMsqB,UAAYb,EAAKa,UAClCT,EAAW7pB,MAAMs8B,SAAW7S,EAAKY,KACjCR,EAAW7pB,MAAMwqB,WAAaf,EAAKe,WACnCX,EAAW7pB,MAAM0xB,MAAQjI,EAAKiI,MAC9B3jD,EAAOqB,YAAYy6C,GACZA,EC4CiB2H,CAAY34C,EAAS4wC,EAAM,KAAM09B,GACjDoD,EAA8C,IAA9B/8E,KAAK44E,cAAc/7E,QAAgBmD,KAAK44E,cAAc,GAAGz6E,QAAQ,WAAa,EAElG0+C,GADAk/B,EAA2B,KAAhB/7E,KAAK2jB,SACG04D,EAAY,GAAK,GACpC,IAAK,IAAIhO,EAAI,EAAG2O,EAAeh9E,KAAK44E,cAAc/7E,OAAQwxE,EAAI2O,EAAc3O,IAaxE,GAZA1xB,EAAiB38C,KAAK44E,cAAcvK,GAAG3xE,QAAQ,gBAAiB,OAC3DA,QAAQ,kBAAmB,QAC3BC,MAAM,YACD,IAAN0xE,IAAY0O,GAAiB/8E,KAAKi9E,aACjCj9E,KAAKk8E,UAAYI,GAAeC,KAChCv8E,KAAKm8E,WAAaG,GAAeE,KAClCI,EAAkBp2E,KAAKynD,MAAMjuD,KAAKk8E,UAAYl8E,KAAKm8E,WAAcn8E,KAAKk8E,UAAYr/B,EAAS78C,KAAKm8E,WAAat/B,GAE7GF,GAD2B,KAAlBy/B,EAAuBA,EAAgBp8E,KAAK44E,cAAcvK,IAC3C5rE,MAAM,IAAIoB,OAAO,OAAS+4E,EAAkB,IAAK,MACzE58E,KAAK86E,YAAcuB,EAAY,MAAQ1/B,EAAe/4C,KAAK,QAAU,OAAS+4C,EAAe/4C,KAAK,QAClG5D,KAAK66E,OAASl+B,EAAe9/C,OAAS,GAEhB,KAAtB8/C,EAAe,GAAnB,CAGW,IAAN0xB,GAA+B,KAAlB+N,GACdp8E,KAAK84E,YAAYlgE,MAAwB,KAAlBwjE,EAAwBp8E,KAAKu6E,QAAW,GAAKlvE,EAAQgK,EAAIs5B,GAEpF,IAAK,IAAI/xC,EAAI,EAAGkF,EAAM66C,EAAe9/C,OAAQD,EAAIkF,EAAKlF,IAAK,CAGvDo/E,EAAW,EACXW,GAAW,EACXhuC,GAAU4N,EACV,IAAK,IAAIp1C,EAAI,EAAG+1E,GALhBrB,EAAQl/B,EAAe//C,GAAGF,QAAQ,OAAQ,WAAWA,QAAQ,SAAU,YAAYA,QAAQ,KAAM,mBAC5FC,MAAM,SAImBE,OAAQsK,EAAI+1E,EAAO/1E,IAK7C,GAJAwpE,EAAOkL,EAAM10E,GACR,KAAKwC,KAAKgnE,IAAkB,KAATA,IACpBA,EAAO,MAELgM,GAAqB,MAAThM,GAA4E,KAA1DA,EAAKj0E,QAAQ,OAAQ,IAAIA,QAAQ,SAAU,IAAIouB,OAAgB,CAC/FkxD,GAAqB,MAATrL,EAhDX,EAgDuC,EACpCgM,IAAaD,GACbZ,EAAc,CAAE37D,EAAmB,EAAfngB,KAAKg6E,SAAgBR,EAAaqD,GAClDtgC,GAAIA,GAAOogC,EAAYF,EAAc,GAAIhzB,KAAM,IACnDgzB,EAAc,MAIVX,EADAY,GAASC,EACK,CACVx8D,EAAsB,KAAlBi8D,EAAyC,EAAfp8E,KAAKg6E,SAAgBR,EAAaqD,GAC1C,EAAf78E,KAAKg6E,SAAgBh6E,KAAK66E,OAAUrB,EAAaqD,EAAiB,IAI/D,GAGtBF,GAAW,EACXngC,EAAex8C,KAAKy8C,SAASa,YAAYw+B,EAAa,IACtDppC,EAAc9wC,YAAY46C,GACtBm0B,EAAKxyE,QAAQ,QAAU,GAAOk+E,GAAmB,IAANl1E,GAAiB,IAANknE,IAAa0N,GAAY/7E,KAAK66E,SACpF79B,EAAa,OACb8/B,EAAa98E,KAAK8jD,WAAW00B,iBAC7ByD,EAAa,eAAiBj/B,EAC9Bf,EAAKe,WAAaA,EACjBR,EAAcnoB,aAAa,OAAQr0B,KAAK+6E,UAAU72B,OAAS44B,KAG5Db,EAA4B,SAAfj/B,EAAwB,eAAiBA,EAAa,GACnEf,EAAKe,WAAaA,EACjBR,EAAcnoB,aAAa,OAAQr0B,KAAK+6E,UAAU72B,OAAS44B,KAE5DnM,EAAKxyE,QAAQ,SAAW,GAAOk+E,GAAal1E,IAAM+1E,EAAQ,GAAW,IAAN7O,IAAa0N,GAAY/7E,KAAK66E,WAC7F79B,EAAa,SACb8/B,EAAa98E,KAAK8jD,WAAW20B,mBAEjC,IAAI0E,EAAY,8DAA8DxzE,KAAKgnE,GAClFn0B,EAAcoiB,YAAc+R,EAAOA,EAAKj0E,QAAQ,wBAAyBygF,EAAY,SAAW,IACjGnB,GAAY3+B,EAAYszB,EAAM10B,GAAMvN,MACjB,KAAfutC,IACAz/B,EAAahqB,MAAMwqB,WAAai/B,EAAWt/E,MAAM,gBAAgB,GACjE6/C,EAAahqB,MAAM0xB,MAAQ1H,EAAa7uB,aAAa,SAGzD6uB,EAAahqB,MAAMuqB,WAAa,UAChCP,EAAahqB,MAAMsqB,UAAY,UAC/BN,EAAahqB,MAAMs8B,SAAW,UAC9B4tB,GAAQ,EAGhBV,GAlGS,EAmGTttC,EAAQloC,KAAK4L,IAAIs8B,EAAOstC,IAGhCh8E,KAAKs6E,YAAc,IAAI/8B,EAAK7O,GAASA,EAAQ,EAAK,EAAI1uC,KAAKg6E,QAAW,GAAIrrC,GAC1E3uC,KAAKs6E,YAAY5rC,OAAU8qC,EAAaqD,EACxC,IAAI77E,EAAW0xC,EAAc5lB,WAAW,GACxC,GAAsB,KAAlBsvD,GAAwBp7E,IAAYhB,KAAK66E,OAAQ,CACjD5+B,EAAKe,WAAa,OAClB,IAAIogC,GAAWp9E,KAAKs6E,YAAY5rC,MAAS,EAAI1uC,KAAKopC,SAAY,EAAIiU,EAAY++B,EAAengC,GAAMvN,MAAQ,EAC3G1tC,EAAQqzB,aAAa,IAAK+oD,EAAQlxE,cAG1CgsE,EAAQh8E,UAAUivD,eAAiB,SAAUguB,EAAYvxC,GACrD,IAAIqf,EAAW,CAAEtlC,QAAQ,EAAOvI,KAAM,gBAAiB0kC,QAAS99C,MAChEA,KAAK2oB,QAAQ,gBAAiBs+B,GAC9B,IAAI1mD,EAASC,SAAS+sB,eAAevtB,KAAKgB,QAAQwX,IAC9CxY,KAAKqsD,UACLrsD,KAAKo4E,YAET,IAAIiF,EAAe98E,EAAOg1B,kBAI1B,GAHI8nD,GACAh1D,YAAOg1D,GAENp2B,EAAStlC,OAuCV0G,YAAOm1B,EAAWx9C,KAAKgB,QAAQwX,GAAK,iBAvClB,CAGlB,IAFA,IAAIgqD,EAAOrhE,YAAc,MAAO,CAAEqX,GAAIxY,KAAKgB,QAAQwX,GAAK,oBACpD+yC,EAAkBvrD,KAAKsrD,WAAWtrD,KAAK6Z,KAAM7Z,KAAKs9E,gBAAiB9a,EAAKhqD,GAAIgqD,EAAKhqD,GAAK,kBAAmB,IACtG+yC,GAAmBA,EAAgB1uD,OAAS,GAC3CyC,eAAyC,IAA3BisD,EAAgB1uD,QAC9B2lE,EAAK5gE,YAAY2pD,EAAgB,IACjCA,EAAkB,MAGlBiX,EAAK5gE,YAAY2pD,EAAgB,IAGzChrD,EAAOqB,YAAY4gE,GACnB,IAAIxhE,EAAUhB,KAAKqsD,SAAWmW,EAAOxiE,KAAKgB,QACtCkuC,EAAOluC,EAAQggC,wBACnBhhC,KAAKopC,QAAU,EACfppC,KAAKs6E,YAAc,IAAI/8B,EAAKrO,EAAKR,MAAOQ,EAAKP,QAC7C,IAAI4uC,EAAcv9E,KAAK05E,OAAS15E,KAAKw6E,sBAAsBrB,EAAYn5E,KAAK4nC,SAASznB,EAAGngB,KAAK4nC,SAASvyB,GAChGrV,KAAKy6E,gBAAgBtB,EAAYvxC,EAAU,IAAIiwC,EAAgB,EAAG,GAAI,IAAIA,EAAgB,EAAG,IAOnG,IANI73E,KAAKk7E,iBAAoBl7E,KAAK05E,QAAW15E,KAAK64E,QAI9C74E,KAAKm7E,UAAUn6E,EAASu8E,EAAYp9D,EAAGo9D,EAAYloE,GAHnDrV,KAAKo7E,kBAAkBp7E,KAAKgB,QAASu8E,GAKrCv9E,KAAKg5E,eAAgB,CAErB,IAAIwE,EAAkB,WAClB,IAAIC,EAAQjgC,EAAWkgC,EAAa18E,QAAQwX,IAAIwoB,wBAChD08C,EAAapD,YAAc,IAAI/8B,EAAKkgC,EAAM/uC,MAAO+uC,EAAM9uC,QACvD,IAAIgvC,EAAeD,EAAajD,gBAAgBtB,EAAYvxC,EAAU,IAAIiwC,EAAgB,EAAG,GAAI,IAAIA,EAAgB,EAAG,IACxH6F,EAAavC,UAAU39B,EAAWkgC,EAAa18E,QAAQwX,IAAKmlE,EAAax9D,EAAGw9D,EAAatoE,IAEzFqoE,EAAe19E,KACnBw9E,EAAgBrhF,KAAKuhF,EAAcvE,EAAYvxC,GAC/C7a,aAAqB/sB,KAAKgB,QAAQwX,GAAbxY,iCAAyDA,KAAKg5E,eAAe5/D,KAAMpZ,KAAKg5E,eAAez4E,YAAQvE,EAAWwhF,MAO3JtF,EAAQh8E,UAAUs+E,sBAAwB,SAAUn2B,EAAQlkC,EAAG9K,GAC3D,IAAIq5B,EAAQ1uC,KAAKs6E,YAAY5rC,MAAS,EAAI1uC,KAAKg6E,QAC3CrrC,EAAS3uC,KAAKs6E,YAAY3rC,OAAU,EAAI3uC,KAAKu6E,QAC7CgD,EAAc,IAAI55B,EAAKxjC,EAAI,EAAIngB,KAAKopC,QAAS/zB,EAAIs5B,EAAS3uC,KAAKopC,QAASsF,EAAOC,GAOnF,OANI4uC,EAAYloE,EAAIgvC,EAAOhvC,IACvBkoE,EAAYloE,GAAMkoE,EAAY5uC,OAAS,EAAI3uC,KAAKopC,SAEhDm0C,EAAYp9D,EAAIo9D,EAAY7uC,MAAQ2V,EAAOlkC,EAAIkkC,EAAO3V,QACtD6uC,EAAYp9D,GAAMo9D,EAAY7uC,MAAQ,EAAI1uC,KAAKopC,SAE5Cm0C,GAEXrF,EAAQh8E,UAAU0hF,mBAAqB,SAAUv5B,EAAQw5B,EAAgBh7B,EAAes3B,GACpF,IAAIptC,EAAW/sC,KAAKq7E,iBAChByC,EAAQ99E,KAAK26E,WAAWx6D,EACxB49D,EAAQ/9E,KAAK26E,WAAWtlE,EACxB2oE,EAAeh+E,KAAK0qB,OACpBgkB,EAAQ1uC,KAAKs6E,YAAY5rC,MAAS,EAAI1uC,KAAKg6E,QAC3CrrC,EAAS3uC,KAAKs6E,YAAY3rC,OAAU,EAAI3uC,KAAKu6E,QAC7C3yC,EAAW,IAAIiwC,EAAgBgG,EAAe19D,EAAG09D,EAAexoE,GA+BpE,MA9BiB,QAAb03B,GAAmC,WAAbA,GACtBnF,EAAW,IAAIiwC,EAAgBjwC,EAASznB,EAAI29D,EAAQ99E,KAAKs6E,YAAY5rC,MAAQ,EAAI1uC,KAAKopC,QAASxB,EAASvyB,EAAI0oE,EAAQ/9E,KAAKs6E,YAAY3rC,OAAU,EAAI3uC,KAAKopC,QAAWppC,KAAKq3E,aAAe2G,GACvLn7B,EAAc1iC,EAAIg6D,EAAYh6D,EAAIuuB,EAAQ,EACzB,WAAb3B,IACAnF,EAASvyB,EAAIwoE,EAAexoE,EAAI0oE,EAAQC,GAExC35B,EAAOlkC,EAAIkkC,EAAO3V,MAAQ9G,EAASznB,EAAIuuB,GACvC9G,EAASznB,EAAKkkC,EAAO3V,MAAQA,EAAW2V,EAAOlkC,EAAIkkC,EAAO3V,MAASA,EAAQ,EAAK2V,EAAOlkC,EACvF0iC,EAAc1iC,EAAIg6D,EAAYh6D,EAAKkkC,EAAO3V,MAAQA,EAAU2V,EAAOlkC,EAAI09D,EAAe19D,EAAIynB,EAASznB,EAAK09D,EAAe19D,GAElHkkC,EAAOlkC,EAAIynB,EAASznB,IACzBynB,EAASznB,EAAIkkC,EAAOlkC,EACpB0iC,EAAc1iC,EAAIg6D,EAAYh6D,EAAI09D,EAAe19D,KAIrDynB,EAAW,IAAIiwC,EAAgBjwC,EAASznB,EAAI29D,EAAQE,EAAcp2C,EAASvyB,EAAI0oE,EAAQ/9E,KAAKs6E,YAAY3rC,OAAS,EAAK3uC,KAAKopC,SAC3HyZ,EAAcxtC,EAAI8kE,EAAY9kE,EAAIs5B,EAAS,EAC1B,SAAb5B,IACAnF,EAASznB,EAAI09D,EAAe19D,EAAI29D,EAAQE,GAAgBtvC,EAAQ1uC,KAAKq3E,eAErEhzB,EAAOhvC,EAAIgvC,EAAO1V,OAAS/G,EAASvyB,EAAIs5B,GACxC/G,EAASvyB,EAAKgvC,EAAO1V,OAASA,EAAY0V,EAAOhvC,EAAIgvC,EAAO1V,OAAUA,EAAS,EAAK0V,EAAOhvC,EAC3FwtC,EAAcxtC,EAAI8kE,EAAY9kE,EAAKgvC,EAAO1V,OAASA,EAAW0V,EAAOhvC,EAAIwoE,EAAexoE,EAAIuyB,EAASvyB,EAAKwoE,EAAexoE,GAEpHgvC,EAAOhvC,EAAIuyB,EAASvyB,IACzBuyB,EAASvyB,EAAIgvC,EAAOhvC,EACpBwtC,EAAcxtC,EAAI8kE,EAAY9kE,EAAIwoE,EAAexoE,IAGlD,IAAIsuC,EAAK/b,EAASznB,EAAGynB,EAASvyB,EAAGq5B,EAAOC,IAGnDupC,EAAQh8E,UAAUu+E,gBAAkB,SAAUp2B,EAAQw5B,EAAgBh7B,EAAes3B,GACjF,IAAK/8E,YAAkB4C,KAAKq7E,kBAExB,OADkBr7E,KAAK49E,mBAAmBv5B,EAAQw5B,EAAgBh7B,EAAes3B,GAGrF,IAAIvyC,EAAW,IAAIiwC,EAAgBgG,EAAe19D,EAAG09D,EAAexoE,GAChEq5B,EAAQ1uC,KAAKs6E,YAAY5rC,MAAS,EAAI1uC,KAAKg6E,QAC3CrrC,EAAS3uC,KAAKs6E,YAAY3rC,OAAU,EAAI3uC,KAAKu6E,QAC7CyD,EAAeh+E,KAAK0qB,OACpBozD,EAAQ99E,KAAK26E,WAAWx6D,EACxB49D,EAAQ/9E,KAAK26E,WAAWtlE,EACxB4oE,EAAU55B,EAAOlkC,EACjB+9D,EAAU75B,EAAOhvC,EAgErB,OA/DKrV,KAAK06E,UAiCN9yC,EAAW,IAAIiwC,EAAgBjwC,EAASznB,EAAI29D,EAAQE,EAAcp2C,EAASvyB,EAAI0oE,EAAQ/9E,KAAKs6E,YAAY3rC,OAAS,EAAK3uC,KAAKopC,SAC3HyZ,EAAcxtC,EAAI8kE,EAAY9kE,EAAIs5B,EAAS,GACtC/G,EAASznB,EAAIuuB,EAAQ1uC,KAAKq3E,aAAe4G,EAAU55B,EAAO3V,OAAW1uC,KAAKwX,cAC3EowB,EAASznB,GAAK09D,EAAe19D,EAAIkkC,EAAO3V,MAAQ2V,EAAO3V,MAAQmvC,EAAe19D,GACxE29D,EAAQE,GAAgBtvC,EAAQ1uC,KAAKq3E,eAE3CzvC,EAASznB,EAAI89D,IACbr2C,EAASznB,GAAK09D,EAAe19D,EAAI,EAAI,EAAI09D,EAAe19D,GAAK29D,EAAQE,GAErEp2C,EAASvyB,GAAK6oE,IACdr7B,EAAcxtC,GAAM6oE,EAAUt2C,EAASvyB,EACvC8kE,EAAY9kE,GAAM6oE,EAAUt2C,EAASvyB,EACrCuyB,EAASvyB,EAAI6oE,GAEbt2C,EAASvyB,EAAIs5B,GAAUuvC,EAAU75B,EAAO1V,SACxCkU,EAAcxtC,GAAOuyB,EAASvyB,EAAIs5B,GAAWuvC,EAAU75B,EAAO1V,QAC9DwrC,EAAY9kE,GAAOuyB,EAASvyB,EAAIs5B,GAAWuvC,EAAU75B,EAAO1V,QAC5D/G,EAASvyB,GAAOuyB,EAASvyB,EAAIs5B,GAAWuvC,EAAU75B,EAAO1V,SAEzDkU,EAAcxtC,EAAIrV,KAAKq3E,aAAe,EAAI1oC,EAAS3uC,KAAKsxD,KACxDzO,EAAcxtC,EAAIs5B,EAAS3uC,KAAKsxD,GAAKtxD,KAAKq3E,aAAe,EACzD8C,EAAY9kE,EAAIs5B,EAChB3uC,KAAKw3E,UAAY,GAEjB30B,EAAcxtC,EAAIrV,KAAKq3E,aAAe,EAAIr3E,KAAKsxD,KAC/CzO,EAAcxtC,EAAIrV,KAAKsxD,GAAKtxD,KAAKq3E,aAAe,EAChD8C,EAAY9kE,EAAI,EAChBrV,KAAKw3E,UAAY,KA3DrB5vC,EAAW,IAAIiwC,EAAgBjwC,EAASznB,EAAI29D,EAAQ99E,KAAKs6E,YAAY5rC,MAAQ,EAAI1uC,KAAKopC,QAASxB,EAASvyB,EAAI0oE,EAAQ/9E,KAAKs6E,YAAY3rC,OAAU,EAAI3uC,KAAKopC,QAAWppC,KAAKq3E,aAAe2G,GACvLn7B,EAAc1iC,EAAIg6D,EAAYh6D,EAAIuuB,EAAQ,GACtC9G,EAASvyB,EAAI6oE,GAAYl+E,KAAKwX,cAC9BowB,EAASvyB,GAAKwoE,EAAexoE,EAAI,EAAI,EAAIwoE,EAAexoE,GAAK0oE,EAAQC,GAErEp2C,EAASvyB,EAAIs5B,EAAS3uC,KAAKq3E,aAAe6G,EAAU75B,EAAO1V,SAC3D/G,EAASvyB,EAAI7O,KAAK2L,IAAI0rE,EAAexoE,EAAG6oE,EAAU75B,EAAO1V,QAAUovC,EAC7D/9E,KAAKs6E,YAAY3rC,OAAU,EAAI3uC,KAAKopC,QAAWppC,KAAKq3E,aAAe2G,GAE7E7D,EAAYh6D,EAAIuuB,EAAQ,EACpB9G,EAASznB,EAAI89D,IACbp7B,EAAc1iC,GAAM89D,EAAUr2C,EAASznB,EACvCg6D,EAAYh6D,GAAM89D,EAAUr2C,EAASznB,EACrCynB,EAASznB,EAAI89D,GAEbr2C,EAASznB,EAAIuuB,EAAQuvC,EAAU55B,EAAO3V,QACtCmU,EAAc1iC,GAAOynB,EAASznB,EAAIuuB,GAAUuvC,EAAU55B,EAAO3V,OAC7DyrC,EAAYh6D,GAAOynB,EAASznB,EAAIuuB,GAAUuvC,EAAU55B,EAAO3V,OAC3D9G,EAASznB,GAAOynB,EAASznB,EAAIuuB,GAAUuvC,EAAU55B,EAAO3V,QAExDmU,EAAc1iC,EAAIngB,KAAKq3E,aAAe,EAAI3oC,EAAQ1uC,KAAKqxD,KACvDxO,EAAc1iC,EAAIuuB,EAAQ1uC,KAAKqxD,GAAKrxD,KAAKq3E,aAAe,EACxD8C,EAAYh6D,EAAIuuB,EAChB1uC,KAAKw3E,UAAY,GAEjB30B,EAAc1iC,EAAIngB,KAAKq3E,aAAe,EAAIr3E,KAAKqxD,KAC/CxO,EAAc1iC,EAAIngB,KAAKqxD,GAAKrxD,KAAKq3E,aAAe,EAChD8C,EAAYh6D,EAAI,EAChBngB,KAAKw3E,UAAY,IAkClB,IAAI7zB,EAAK/b,EAASznB,EAAGynB,EAASvyB,EAAGq5B,EAAOC,IAEnDupC,EAAQh8E,UAAUk/E,kBAAoB,SAAUlB,EAAYhrC,GACxD,IAGIivC,EAHAp+E,EAAQC,KACRmgB,EAAIrI,WAAWoiE,EAAW1nD,MAAMiP,MAChCpsB,EAAIyC,WAAWoiE,EAAW1nD,MAAMmP,KAEpC,IAAI9D,IAAU,IAAIY,QAAQy7C,EAAY,CAClCz6C,SAAUz/B,KAAKy/B,SACfK,SAAU,SAAU7/B,GAChBk+E,EAAcl+E,EAAKo/B,UAAYp/B,EAAKw/B,SACpCy6C,EAAW1nD,MAAMuM,UAAY,KAC7Bm7C,EAAW1nD,MAAMiP,KAAQthB,EAAIg+D,GAAcjvC,EAAK/uB,EAAIA,GAAM,KAC1D+5D,EAAW1nD,MAAMmP,IAAOtsB,EAAI8oE,GAAcjvC,EAAK75B,EAAIA,GAAM,MAE7DqC,IAAK,SAAU4jB,GACXv7B,EAAMo7E,UAAUjB,EAAYhrC,EAAK/uB,EAAG+uB,EAAK75B,GACzCtV,EAAM4oB,QAAQ,oBAAqB,CAAEm1B,QAAS/9C,QAI1Dm4E,EAAQh8E,UAAUi/E,UAAY,SAAUjB,EAAY/5D,EAAG9K,GACnD6kE,EAAW1nD,MAAMiP,KAAOthB,EAAI,KAC5B+5D,EAAW1nD,MAAMmP,IAAMtsB,EAAI,MAE/B6iE,EAAQh8E,UAAUg9E,iBAAmB,WACjC,GAAIl5E,KAAKkqB,SAAU,CAEf,IACQ1pB,SAASgB,iBAAiBxB,KAAKkqB,UAAUrtB,SACzCmD,KAAKsrD,WAAaE,YAAiBhrD,SAASw1B,cAAch2B,KAAKkqB,UAAUjoB,UAAU6oB,SAG3F,MAAOjqB,GACHb,KAAKsrD,WAAaE,YAAiBxrD,KAAKkqB,aAKpDguD,EAAQh8E,UAAUkiF,QAAU,WACxB,IAAIr+E,EAAQC,KACRq+E,EAAkBr+E,KAAKqsD,WAAarsD,KAAKkqB,SAAYszB,EAAWx9C,KAAKgB,QAAQwX,GAAK,QAClFglC,EAAWx9C,KAAKgB,QAAQwX,IAC5B,GAAI6lE,EAAgB,CAChB,IAKIC,EALAC,EAAiBF,EAAe5hB,WAChCz8D,KAAKqsD,WAAarsD,KAAKkqB,WACvBq0D,EAAiB/9E,SAAS+sB,eAAevtB,KAAKgB,QAAQwX,GAAK,UAAYhY,SAAS+sB,eAAevtB,KAAKgB,QAAQwX,GAAK,UAC7G+lE,GAGJA,IACAD,EAAYxmE,WAAWymE,EAAe5wD,aAAa,aAAe,GAEtE,IAAIkQ,IAAU,IAAIY,QAAQ8/C,EAAgB,CACtC9+C,SAAU,IACVK,SAAU,SAAU7/B,GAEhBF,EAAMy+E,kBAAkBD,EAAgBD,EAAYr+E,EAAKo/B,UAAYp/B,EAAKw/B,WAE9E/nB,IAAK,SAAU4jB,GACXv7B,EAAMk5E,WAAY,EAClBl5E,EAAM0+E,aAAaF,QAKnCrG,EAAQh8E,UAAUsiF,kBAAoB,SAAUE,EAAcp8C,EAASjD,GACnEq/C,EAAalsD,MAAMuM,UAAY,GAC/B2/C,EAAarqD,aAAa,WAAYiO,EAAUjD,GAAWnzB,aAK/DgsE,EAAQh8E,UAAUuiF,aAAe,SAAUC,GACvCA,EAAarqD,aAAa,UAAW,KACjCr0B,KAAKkqB,WACLw0D,EAAalsD,MAAM+gB,QAAU,QAEjCvzC,KAAK2oB,QAAQ,oBAAqB,CAAEm1B,QAAS99C,QAMjDk4E,EAAQh8E,UAAUqrC,eAAiB,WAE/B,OAAOvnC,KAAKioC,aADI,KAOpBiwC,EAAQh8E,UAAUq9B,cAAgB,WAC9B,MAAO,WAMX2+C,EAAQh8E,UAAUie,QAAU,WACxB2jB,EAAO5hC,UAAUie,QAAQ7Y,KAAKtB,MAC9BA,KAAKgB,QAAQyzB,UAAUpM,OAAO,cAOlC6vD,EAAQh8E,UAAUq8B,kBAAoB,SAAU4H,EAASC,GACjDpgC,KAAKg5E,gBACL3rD,YAAoBrtB,KAAKgB,QAAQwX,GAAbxY,kCAExBA,KAAK64E,SAAU,EACf74E,KAAKkuB,UAEToP,EAAW,CACP3B,aAAS,IACVu8C,EAAQh8E,UAAW,cAAU,GAChCohC,EAAW,CACP3B,aAAS,IACVu8C,EAAQh8E,UAAW,cAAU,GAChCohC,EAAW,CACP3B,aAAS,IACVu8C,EAAQh8E,UAAW,oBAAgB,GACtCohC,EAAW,CACP3B,YAAS,OACVu8C,EAAQh8E,UAAW,YAAQ,GAC9BohC,EAAW,CACP3B,YAAS,KACVu8C,EAAQh8E,UAAW,cAAU,GAChCohC,EAAW,CACP3B,YAAS,MACVu8C,EAAQh8E,UAAW,eAAW,GACjCohC,EAAW,CACPvB,YAAQ,CAAE8gB,KAAM,OAAQG,WAAY,SAAUkH,MAAO,KAAMpH,UAAW,SAAUC,WAAY,YAAc+6B,IAC3GI,EAAQh8E,UAAW,iBAAa,GACnCohC,EAAW,CACP3B,YAAS,OACVu8C,EAAQh8E,UAAW,gBAAY,GAClCohC,EAAW,CACP3B,aAAS,IACVu8C,EAAQh8E,UAAW,uBAAmB,GACzCohC,EAAW,CACP3B,YAAS,MACVu8C,EAAQh8E,UAAW,gBAAY,GAClCohC,EAAW,CACP3B,aAAS,IACVu8C,EAAQh8E,UAAW,gBAAY,GAClCohC,EAAW,CACP3B,aAAS,IACVu8C,EAAQh8E,UAAW,kBAAc,GACpCohC,EAAW,CACPvB,YAAQ,CAAEmoB,MAAO,UAAWxV,MAAO,IAAOqpC,IAC3CG,EAAQh8E,UAAW,cAAU,GAChCohC,EAAW,CACP3B,YAAS,KACVu8C,EAAQh8E,UAAW,eAAW,GACjCohC,EAAW,CACP3B,YAAS,KACVu8C,EAAQh8E,UAAW,kBAAc,GACpCohC,EAAW,CACPvB,YAAQ,CAAE5b,EAAG,EAAG9K,EAAG,GAAK4iE,IACzBC,EAAQh8E,UAAW,kBAAc,GACpCohC,EAAW,CACP3B,YAAS,KACVu8C,EAAQh8E,UAAW,eAAW,GACjCohC,EAAW,CACP3B,YAAS,KACVu8C,EAAQh8E,UAAW,cAAU,GAChCohC,EAAW,CACPvB,YAAQ,CAAE5b,EAAG,EAAG9K,EAAG,GAAK4iE,IACzBC,EAAQh8E,UAAW,gBAAY,GAClCohC,EAAW,CACP3B,YAAS,IACVu8C,EAAQh8E,UAAW,cAAU,GAChCohC,EAAW,CACP3B,YAAS,IACVu8C,EAAQh8E,UAAW,UAAM,GAC5BohC,EAAW,CACP3B,YAAS,IACVu8C,EAAQh8E,UAAW,UAAM,GAC5BohC,EAAW,CACP3B,YAAS,IACVu8C,EAAQh8E,UAAW,eAAW,GACjCohC,EAAW,CACP3B,YAAS,IACVu8C,EAAQh8E,UAAW,eAAW,GACjCohC,EAAW,CACP3B,YAAS,KACVu8C,EAAQh8E,UAAW,oBAAgB,GACtCohC,EAAW,CACP3B,YAAS,OACVu8C,EAAQh8E,UAAW,YAAQ,GAC9BohC,EAAW,CACP3B,YAAS,aACVu8C,EAAQh8E,UAAW,aAAS,GAC/BohC,EAAW,CACPvB,YAAQ,CAAE5b,EAAG,EAAG9K,EAAG,EAAGq5B,MAAO,EAAGC,OAAQ,GAAKqpC,IAC9CE,EAAQh8E,UAAW,kBAAc,GACpCohC,EAAW,CACP3B,YAAS,OACVu8C,EAAQh8E,UAAW,qBAAiB,GACvCohC,EAAW,CACP3B,eACDu8C,EAAQh8E,UAAW,sBAAkB,GACxCohC,EAAW,CACP3B,aAAS,IACVu8C,EAAQh8E,UAAW,gBAAY,GAClCohC,EAAW,CACP3B,aAAS,IACVu8C,EAAQh8E,UAAW,kBAAc,GACpCohC,EAAW,CACP3B,YAAS,OACVu8C,EAAQh8E,UAAW,wBAAoB,GAC1CohC,EAAW,CACP3B,YAAS,OACVu8C,EAAQh8E,UAAW,uBAAmB,GACzCohC,EAAW,CACP/9B,eACD24E,EAAQh8E,UAAW,qBAAiB,GACvCohC,EAAW,CACP/9B,eACD24E,EAAQh8E,UAAW,cAAU,GAChCohC,EAAW,CACP/9B,eACD24E,EAAQh8E,UAAW,yBAAqB,GAC3Cg8E,EAAU56C,EAAW,CACjBjB,KACD67C,GAxvBsB,CA0vB3BjzC,M,6BEz3BF,6DAGI05C,EAAS,CAAEC,UAAW,mBAKtB9b,EAA0B,WAC1B,SAASA,KAu4DT,OA93DAA,EAASzmE,SAAW,SAAUG,EAAOy9B,GACjC,MAAqB,oBAAVz9B,EACAA,EAAM8E,KAAK24B,GAAQ,IAEvBz9B,GAOXsmE,EAAS+b,SAAW,SAAUzX,EAAOh7D,GACjC,OAAOg7D,EAAM/lE,OAAS+lE,EAAM/lE,OAAO+K,EAAOvP,UAAYuP,GAO1D02D,EAASgc,WAAa,SAAU1X,EAAOlqE,GACnC,OAAOkqE,EAAM/lE,MAAM,EAAGnE,EAAML,UAAYK,GAO5C4lE,EAASic,OAAS,SAAUC,GAExB,MAAc,eADdA,EAAQA,EAAQlc,EAAStsD,YAAYwoE,GAAS,aAEnCh/E,KAAKi/E,YAETj/E,KAAKk/E,cAQhBpc,EAASmc,YAAc,SAAU9+D,EAAG9K,GAChC,OAAIjY,YAAkB+iB,IAAM/iB,YAAkBiY,IAGpC,OAANA,QAAoBrZ,IAANqZ,GAFN,EAKK,kBAAN8K,EACAA,EAAEg/D,cAAc9pE,GAEjB,OAAN8K,QAAoBnkB,IAANmkB,EACP,EAEJA,EAAI9K,GAQfytD,EAASoc,aAAe,SAAU/+D,EAAG9K,GACjC,OAAIjY,YAAkB+iB,IAAM/iB,YAAkBiY,IAClC,EAEF,OAANA,QAAoBrZ,IAANqZ,EACP,EAEM,kBAAN8K,GACsB,EAAtBA,EAAEg/D,cAAc9pE,GAEjB,OAAN8K,QAAoBnkB,IAANmkB,GACN,EAEL9K,EAAI8K,GAEf2iD,EAASsc,cAAgB,SAAU7iF,EAAK8+C,GAEpC,IADA,IAAI7S,EAAS,GACJ5rC,EAAI,EAAGA,EAAIy+C,EAAOx+C,OAAQD,IAC/B4rC,EAASxoC,KAAKjD,SAASs+C,EAAOz+C,GAAIoD,KAAKy5B,UAAU4hB,EAAOz+C,GAAIL,GAAMisC,GAEtE,OAAOA,GAOXs6B,EAASjtC,OAAS,SAAUwpD,EAAWhkC,GAEnC,IADA,IAAIikC,EAAU,GACL1iF,EAAI,EAAGA,EAAIyiF,EAAUxiF,OAAQD,IAClC0iF,EAAQ1mE,KAAK5Y,KAAKo/E,cAAcC,EAAUziF,GAAIy+C,IAElD,OAAOikC,GAWXxc,EAASiP,MAAQ,SAAUsN,EAAW1hB,EAAO2H,EAAYia,EAAOC,EAASz1E,EAAQ01E,GAC7EF,EAAQA,GAAS,EACjB,IAAIG,EAAWL,EAEf,GAAIK,EAASd,YAAcD,EAAM,UAAQ,CAerC,IAdA,IAAI9/E,EAAU,SAAUsI,GACpB,GAAK/J,YAAkBoiF,GAQnBE,EAASv4E,GAAGw4E,MAAQj3C,EAAOqpC,MAAM2N,EAASv4E,GAAGw4E,MAAOhiB,EAAO2H,EAAYoa,EAASH,MAAQ,EAAG,KAAMx1E,EAAQ01E,GACzGC,EAASv4E,GAAG2yE,MAAQ4F,EAASv4E,GAAGw4E,MAAM9iF,WATT,CAC7B,IAAI+iF,EACAlvE,EAAO8uE,EAAQ9vD,QAAO,SAAU7uB,GAAK,OAAOA,EAAE7D,MAAQ0iF,EAASv4E,GAAGnK,OACtE4iF,EAAOJ,EAAQrhF,QAAQuS,EAAK,IAC5BgvE,EAASv4E,GAAGw4E,MAAQj3C,EAAOqpC,MAAM2N,EAASv4E,GAAGw4E,MAAOhiB,EAAO2H,EAAYoa,EAASH,MAAQ,EAAGC,EAAQI,GAAMD,MAAO51E,EAAQ01E,GACxHC,EAASv4E,GAAG2yE,MAAQ0F,EAAQI,GAAM9F,QAOtCpxC,EAAS1oC,KACJmH,EAAI,EAAGA,EAAIu4E,EAAS7iF,OAAQsK,IACjCtI,EAAQsI,GAGZ,OADAu4E,EAASG,aAAe,EACjBH,EAEX,IAAII,EAAU,GACVC,EAAe,GACnBA,EAAanB,UAAYD,EAAM,UAC/BoB,EAAaR,MAAQA,EACrBQ,EAAaF,YAAc,EAC3BE,EAAaC,QAAUN,EA0BvB,IAzBA,IAAIO,EAAU,SAAUrjF,GACpB,IAAIsH,EAAMg8E,EAAOC,OAAOT,EAAU9iF,EAAG+gE,GAIrC,GAHKvgE,YAAkB2M,KACnB7F,EAAM6F,EAAO7F,EAAKy5D,KAEjBmiB,EAAQ57E,KACT47E,EAAQ57E,GAAO,CACXlH,IAAKkH,EACL41E,MAAO,EACP6F,MAAO,GACPra,WAAY,GACZ3H,MAAOA,GAEXoiB,EAAannE,KAAKknE,EAAQ57E,KACrB9G,YAAkBoiF,IAAU,CAC7B,IAAIY,EAAUZ,EAAQ9vD,QAAO,SAAU7uB,GAAK,OAAOA,EAAE7D,MAAQ8iF,EAAQ57E,GAAKlH,OAC1E8iF,EAAQ57E,GAAK41E,MAAQsG,EAAQ,GAAGtG,MAGxCgG,EAAQ57E,GAAK41E,MAAS18E,YAAkBoiF,GAAgCM,EAAQ57E,GAAK41E,OAAS,EAA3CgG,EAAQ57E,GAAK41E,QAC3D2F,GAAeA,GAAcna,EAAWzoE,SACzCijF,EAAQ57E,GAAKy7E,MAAM/mE,KAAK8mE,EAAS9iF,KAGrCsjF,EAASlgF,KACJpD,EAAI,EAAGA,EAAI8iF,EAAS7iF,OAAQD,IACjCqjF,EAAQrjF,GAEZ,GAAI0oE,GAAcA,EAAWzoE,OACzB,KAAIwjF,EAAU,SAAUzjF,GAIpB,IAHA,IAAIyG,EAAM,GACNi9E,OAAK,EACLC,EAAOjb,EACFn+D,EAAI,EAAGA,EAAIm+D,EAAWzoE,OAAQsK,IAEnC,GADAm5E,EAAKxd,EAASwC,WAAWA,EAAWn+D,GAAG+C,MAClC9M,YAAkBoiF,GAOfc,IACAj9E,EAAIk9E,EAAKp5E,GAAGw2D,MAAQ,MAAQ4iB,EAAKp5E,GAAG+C,MAAQo2E,EAAGP,EAAanjF,GAAG+iF,MAAOY,EAAKp5E,GAAGw2D,YARrD,CAC7B,IAAIjtD,EAAO8uE,EAAQ9vD,QAAO,SAAU7uB,GAAK,OAAOA,EAAE7D,MAAQ+iF,EAAanjF,GAAGI,OACtEsjF,IACAj9E,EAAIk9E,EAAKp5E,GAAGw2D,MAAQ,MAAQ4iB,EAAKp5E,GAAG+C,MAAQo2E,EAAG5vE,EAAK,GAAGivE,MAAOY,EAAKp5E,GAAGw2D,QASlFoiB,EAAanjF,GAAG0oE,WAAajiE,GAEjC,IAASzG,EAAI,EAAGA,EAAImjF,EAAaljF,OAAQD,IACrCyjF,EAAQzjF,GAGhB,GAAI6iF,GAAcM,EAAaljF,QAAUyoE,EAAWzoE,OAChD,IAASD,EAAI,EAAGA,EAAImjF,EAAaljF,OAAQD,IACrCmjF,EAAanjF,GAAG+iF,MAAQ,GAGhC,OAAOD,EAAS7iF,QAAUkjF,GAAgBL,GAY9C5c,EAAS0d,eAAiB,SAAUC,EAAMC,EAAM9iF,EAAQ+iF,EAAQC,GAC5D,IAAIhkF,EACAikF,EAAM,GAQV,IANIF,EAAOhiF,SACPgiF,EAASA,EAAOhiF,QAEhBgiF,EAAO/B,WACP5+E,KAAKU,WAAW,0DAEf9D,EAAI,EAAGA,EAAI+jF,EAAO9jF,OAAQD,IAAK,EAEzBikF,EADHC,EAAW9gF,KAAKy5B,UAAUgnD,EAAME,EAAO/jF,OAClBikF,EAAIC,GAAY,KACpCloE,KAAK+nE,EAAO/jF,IAErB,IAAKA,EAAI,EAAGA,EAAIgB,EAAOf,OAAQD,IAAK,CAChC,IAAIkkF,EAAW9gF,KAAKy5B,UAAUmnD,GAAQH,EAAM7iF,EAAOhB,IACnDgB,EAAOhB,GAAG8jF,GAAQG,EAAIC,KAU9Bhe,EAASie,aAAe,SAAUxkF,EAAK8+C,EAAQ1oC,GAI3C,QAHe3W,IAAX2W,IACAA,EAAS,SAEE3W,IAAXq/C,GAAmC,OAAXA,EACxB,OAAOr7C,KAAK+gF,aAAaxkF,EAAK,GAAIoW,GAItC,IAFA,IAAIquE,EAAUzkF,EAELyB,EAAK,EAAGC,EADNC,OAAOjB,KAAKV,GACSyB,EAAKC,EAAOpB,OAAQmB,IAAM,CACtD,IAAIoF,EAAOnF,EAAOD,GACW,kBAAlBgjF,EAAQ59E,IAAwB49E,EAAQ59E,aAAiBhF,MAIhEi9C,EAAOziC,KAAKjG,EAASvP,GAHrBpD,KAAK+gF,aAAaC,EAAQ59E,GAAOi4C,EAAQ1oC,EAASvP,EAAO,KAMjE,OAAOi4C,GAQXynB,EAASrpC,UAAY,SAAUn9B,EAAWokF,GACtC,IAAKpkF,EACD,OAAOokF,EAEX,GAAKA,EAAL,CAGA,IAAgC,IAA5BpkF,EAAU6B,QAAQ,KAClB,OAAOuiF,EAAKpkF,GAIhB,IAFA,IAAIE,EAAQkkF,EACRjkF,EAASH,EAAUK,MAAM,KACpBC,EAAI,EAAGA,EAAIH,EAAOI,QACV,MAATL,EAD2BI,IAI/BJ,EAAQA,EAAMC,EAAOG,IAEzB,OAAOJ,IAUXsmE,EAAS/lE,SAAW,SAAUT,EAAWE,EAAOD,GAC5C,IAGIK,EAEAI,EALAC,EAAOX,EAAU4P,WAAWvP,MAAM,KAClCO,EAAQX,GAAO,GACfY,EAAUD,EAEVL,EAASI,EAAKJ,OAElB,IAAKD,EAAI,EAAGA,EAAIC,EAAQD,IACpBI,EAAMC,EAAKL,GACPA,EAAI,IAAMC,EACVM,EAAQH,QAAiBhB,IAAVQ,OAAsBR,EAAYQ,EAE5CY,YAAkBD,EAAQH,MAC/BG,EAAQH,GAAO,IAEnBG,EAAUA,EAAQH,GAEtB,OAAOE,GAQX4lE,EAAS1nB,KAAO,SAAU6lC,EAAItjB,EAAOujB,GACjC,GAAID,EAAGpkF,QAAU,EACb,OAAOokF,EAEX,IAAIE,EAASjsE,UAAU+rE,EAAGpkF,OAAS,GAAGqP,WAAY,IAC9Cu1B,EAAOw/C,EAAG5/E,MAAM,EAAG8/E,GACnBz/C,EAAQu/C,EAAG5/E,MAAM8/E,GAGrB,OAFA1/C,EAAOzhC,KAAKo7C,KAAK3Z,EAAMk8B,EAAOujB,GAC9Bx/C,EAAQ1hC,KAAKo7C,KAAK1Z,EAAOi8B,EAAOujB,GACzBlhF,KAAKrC,MAAM8jC,EAAMC,EAAOi8B,EAAOujB,IAE1Cpe,EAASse,iBAAmB,SAAU5kF,GAClC,MAAqB,kBAAVA,EACAA,EAEEA,EAAMG,MAAM,IACH+G,KAAI,SAAUgN,GAAQ,OAAOA,KAAQoyD,EAASue,WAAave,EAASue,WAAW3wE,GAAQA,KAC7F9M,KAAK,KAEzBk/D,EAASnlE,MAAQ,SAAU8jC,EAAMC,EAAO4/C,EAAWJ,GAG/C,IAFA,IACIK,EADA5iF,EAAS,GAEN8iC,EAAK5kC,OAAS,GAAK6kC,EAAM7kC,OAAS,GAG7B0kF,EAFJ9/C,EAAK5kC,OAAS,GAAK6kC,EAAM7kC,OAAS,EAC9BqkF,EACUA,EAASlhF,KAAKmgF,OAAO1+C,EAAM,EAAG6/C,GAAYthF,KAAKmgF,OAAOz+C,EAAO,EAAG4/C,GAAY7/C,EAAK,GAAIC,EAAM,KAAO,EAAID,EAAOC,EAG7GD,EAAK,GAAG6/C,GAAa7/C,EAAK,GAAG6/C,GAAa7/C,EAAOC,EAIrDD,EAAK5kC,OAAS,EAAI4kC,EAAOC,EAEvC/iC,EAAOia,KAAK2oE,EAAQ74D,SAExB,OAAO/pB,GAEXmkE,EAASqd,OAAS,SAAU7c,EAAO9pD,EAAOmkD,GACtC,OAAOA,EAAQ39D,KAAKy5B,UAAUkkC,EAAO2F,EAAM9pD,IAAU8pD,EAAM9pD,IAE/DspD,EAAStsD,YAAc,SAAUtS,GAC7B,OAAOA,EAAqB,kBAARA,EAAmBA,EAAIsS,cAAgBtS,EAAIgI,WAAsB,IAARhI,IAAqB,IAARA,EAAiBA,EAAIgI,WAAa,IAUhI42D,EAAS0e,oBAAsB,SAAU9U,EAAS+U,EAAQC,EAAQC,GAC9D,GAAIF,KAAU/U,EAAS,CACnB,IAAIrpE,EAAMqpE,EAAQ+U,GAAQC,EAAQC,GAC7BvkF,YAAkBiG,KACnBq+E,EAASr+E,GAGjB,OAAOq+E,GAEX5e,EAAS8e,aAAe,SAAUC,EAAKpV,EAAIzE,GACvC,IAAI8Z,EAAM,GAOV,OANAhf,EAAS0e,oBAAoBK,EAAK,YAAa,CAC3CpV,GAAIA,EACJzE,MAAOA,EACPnsE,OAAQmsE,EAAMnsE,OACdkmF,UAAWD,IAERA,GAMXhf,EAASkf,cAAgB,SAAUzlF,GAC/B,QAAUA,GAASA,EAAIgB,cAAgBW,QAK3C4kE,EAASmf,OAAS,WACd,IAAIC,EAAM,KAEV,IACIA,EAAM,IAAIxgF,OAAM,eAEpB,MAAOb,IAGP,QAASqhF,GAAQ,oBAAqBA,GAM1Cpf,EAASqf,QAAU,SAAUxvE,GACzB,IACIyvE,EACJ,OAAQzvE,GAAU,IAAM,uCAAuCjW,QAAQ,MAAM,SAAUwH,EAAKtH,GACxF,GAAI,WAAY8E,QAAU,oBAAqBq3B,OAAQ,CACnD,IAAI3G,EAAM,IAAIiwD,WAAW,GACzB3gF,OAAOq3B,OAAOC,gBAAgB5G,GAC9BgwD,EAAOhwD,EAAI,GAAK,GAAK,OAGrBgwD,EAAuB,GAAhB57E,KAAK4lB,SAAgB,EAEhC,MAXO,mBAWW,KAANxvB,EAAkB,EAAPwlF,EAAa,EAAMA,OAQlDtf,EAASwf,OAAS,SAAUp+E,GACxB,YAAelI,IAARkI,GAA6B,OAARA,GAUhC4+D,EAASyf,oBAAsB,SAAUjf,EAAO3F,EAAOujB,GACnD,IAAIjsC,EACAssC,EACAvkF,EACAJ,EAAI,EACJ4lF,EAA2D,kBAArC1f,EAASqd,OAAO7c,EAAO,EAAG3F,GACpD,GAAI2F,EAAMzmE,OACN,KAAOO,YAAkB63C,IAAWr4C,EAAI0mE,EAAMzmE,QAC1Co4C,EAAS6tB,EAASqd,OAAO7c,EAAO1mE,EAAG+gE,GACnC3gE,EAAMsmE,EAAM1mE,KAGpB,KAAOA,EAAI0mE,EAAMzmE,OAAQD,IACrB2kF,EAAUze,EAASqd,OAAO7c,EAAO1mE,EAAG+gE,GAChCvgE,YAAkBmkF,KAGlBiB,IACAvtC,GAAUA,EACVssC,GAAWA,GAEXL,EAASjsC,EAAQssC,GAAW,IAC5BtsC,EAASssC,EACTvkF,EAAMsmE,EAAM1mE,KAGpB,OAAOI,GAWX8lE,EAAS2f,SAAW,SAAUpa,EAAMiZ,EAAWoB,GAC3CA,GAAyBtlF,YAAkBslF,IAAkCA,EAC7E,IACIx+E,EADAvF,EAAS,GAETgkF,EAAM,GAQV,OAPAta,EAAKrpE,SAAQ,SAAU6a,EAAML,IACzBtV,EAA+B,kBAAjBmkE,EAAK7uD,GAAuBspD,EAASqd,OAAO9X,EAAM7uD,EAAO8nE,GAAajZ,EAAK7uD,MAC5EmpE,IACThkF,EAAOia,KAAM8pE,EAA+Bra,EAAK7uD,GAAXtV,GACtCy+E,EAAIz+E,GAAO,MAGZvF,GAMXmkE,EAAS8f,qBAAuB,KAKhC9f,EAAS+f,kBAAmB,EAK5B/f,EAASpiE,WAAa,SAAU2iB,GAC5B,IACI,MAAM,IAAIziB,MAAMyiB,GAEpB,MAAOxiB,GACH,MAAMA,EAAEF,QAAU,KAAOE,EAAEC,QAGnCgiE,EAASwC,WAAa,CAMlBtmB,IAAK,SAAUiiC,EAAItjB,GAIf,IAHA,IACIz5D,EADAvF,EAAS,EAET6jF,EAAwD,kBAAlC1f,EAASqd,OAAOc,EAAI,EAAGtjB,GACxC/gE,EAAI,EAAGA,EAAIqkF,EAAGpkF,OAAQD,IAC3BsH,EAAM4+D,EAASqd,OAAOc,EAAIrkF,EAAG+gE,GACxBxyD,MAAMjH,IAAgB,OAARA,IACXs+E,IACAt+E,GAAOA,GAEXvF,GAAUuF,GAGlB,OAAOvF,GAOXmkF,QAAS,SAAU7B,EAAItjB,GACnB,OAAOmF,EAASwC,WAAWtmB,IAAIiiC,EAAItjB,GAASsjB,EAAGpkF,QAOnDsV,IAAK,SAAU8uE,EAAItjB,GACf,IAAIujB,EAKJ,MAJqB,oBAAVvjB,IACPujB,EAAWvjB,EACXA,EAAQ,MAELmF,EAASrpC,UAAUkkC,EAAOmF,EAASyf,oBAAoBtB,EAAItjB,EAAOujB,GAAYpe,EAASmc,eAQlG7sE,IAAK,SAAU6uE,EAAItjB,GACf,IAAIujB,EAKJ,MAJqB,oBAAVvjB,IACPujB,EAAWvjB,EACXA,EAAQ,MAELmF,EAASrpC,UAAUkkC,EAAOmF,EAASyf,oBAAoBtB,EAAItjB,EAAOujB,GAAYpe,EAASoc,gBAOlG6D,UAAW,SAAU9B,EAAItjB,GACrB,OAAO,IAAIyK,IAAY6Y,GAAItY,cAAa,IAAIV,KAAQM,MAAM5K,EAAO,SAAS,GAAM,IAAO9gE,QAO3FmmF,WAAY,SAAU/B,EAAItjB,GACtB,OAAO,IAAIyK,IAAY6Y,GAAItY,cAAa,IAAIV,KAAQM,MAAM5K,EAAO,SAAS,GAAO,IAAO9gE,QAQ5Fi9E,MAAO,SAAUmH,EAAItjB,GACjB,OAAOsjB,EAAGpkF,SAMlBimE,EAASmgB,gBAAkB,CACvB,IAAK,WACL,IAAK,cACL,KAAM,kBACN,KAAM,qBACN,KAAM,QACN,KAAM,WACN,KAAM,WACN,KAAM,WACN,KAAM,cAMVngB,EAASogB,aAAe,CACpB,IAAK,OACL,IAAK,OACL,KAAM,OACN,KAAM,OACN,KAAM,OACN,KAAM,OACN,SAAY,OACZ,gBAAmB,OACnB,YAAe,OACf,mBAAsB,OACtB,MAAS,OACT,SAAY,QAMhBpgB,EAASqgB,cAAgB,CACrB,KAAM,WACN,KAAM,aACN,KAAM,cACN,SAAY,WACZ,WAAc,aACd,SAAY,eAMhBrgB,EAASsgB,gBAAkB,CACvB,KAAM,WACN,KAAM,aACN,KAAM,WACN,SAAY,WACZ,WAAc,aACd,SAAY,YAEhBtgB,EAASue,WAAa,CAClB,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,I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UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,SAAU,SAAU,UACzC,CAAC,SAAU,SAAU,UACrB,CAAC,SAAU,SAAU,WAEzBj1L,KAAKk1L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C7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,OAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,OAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,OAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,OAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,OAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAE7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,KAAM,MAC7CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,MAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,MAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,MAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,MAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,MAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,MAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,MAC9CiD,KAAK83L,yBAAyB/6L,SAAS,KAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,OAC9CiD,KAAK83L,yBAAyB/6L,SAAS,MAAO,QAE3C66L,EA3ae,GA8atBQ,GAA+B,WAG/B,SAASA,IAKLp4L,KAAK++H,MAAQ,GAIb/+H,KAAKg5L,WAAa,EAKlBh5L,KAAKi5L,kBAAoB,IAAI76L,MAAM,OAMnC4B,KAAKk5L,EAAI,EAITl5L,KAAKm5L,IAAM,EAIXn5L,KAAKo5L,IAAM,EAIXp5L,KAAKwlG,EAAI,EAITxlG,KAAKq5L,GAAK,EAIVr5L,KAAKs5L,IAAM,EAIXt5L,KAAKu5L,IAAM,EAIXv5L,KAAKw5L,IAAM,EAIXx5L,KAAKy5L,GAAK,EAIVz5L,KAAK05L,GAAK,EAIV15L,KAAK25L,GAAK,GAIV35L,KAAK45L,GAAK,GAIV55L,KAAK65L,GAAK,GAIV75L,KAAK85L,IAAM,GAIX95L,KAAK+5L,GAAK,GAIV/5L,KAAKmlG,EAAI,GAITnlG,KAAKglG,EAAI,GAIThlG,KAAKg6L,GAAK,GAIVh6L,KAAKi6L,GAAK,GAIVj6L,KAAKk6L,UAAY,CACbl6L,KAAKk5L,EAAGl5L,KAAKy5L,GAAIz5L,KAAK+5L,GAAI/5L,KAAK05L,GAAI15L,KAAK05L,GAAI15L,KAAKglG,EAAGhlG,KAAK25L,GAAI35L,KAAK25L,GAAI35L,KAAKmlG,EAAGnlG,KAAK45L,GAAI55L,KAAK45L,GAAI55L,KAAKglG,EAAGhlG,KAAK65L,GAAI75L,KAAK65L,GACtH75L,KAAKg6L,GAAIh6L,KAAK85L,IAAK95L,KAAK85L,IAAK95L,KAAKmlG,EAAGnlG,KAAK+5L,GAAI,GAAI/5L,KAAK+5L,GAAI,GAAI,GAAI/5L,KAAKmlG,EAAG,GAAI,GAAInlG,KAAKglG,EAAG,GAAI,GAAIhlG,KAAKg6L,GAAI,GAAI,GAChHh6L,KAAKi6L,GAAI,GAAI,GAAIj6L,KAAK25L,GAAI,GAAI,GAAI35L,KAAKi6L,GAAI,GAAI,GAAIj6L,KAAK25L,GAAI,GAAI,GAAI35L,KAAK65L,GAAI,GAAI,GAAI75L,KAAK25L,GAAI,GAAI,GAAI35L,KAAK65L,GAC3G,GAAI,GAAI75L,KAAK65L,GAAI,GAAI,GAAI75L,KAAKy5L,GAAI,GAAI,GAAIz5L,KAAK65L,GAAI,GAAI,GAAI75L,KAAKi6L,GAAI,GAAI,GAAIj6L,KAAKk5L,EAAG,GAAI,GAAIl5L,KAAKi6L,GAAI,GAAI,IAAKj6L,KAAKk5L,EACnH,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAK+5L,GAAI,IAAK,IAAK/5L,KAAKmlG,EAAG,IAAK,IAAKnlG,KAAK+5L,GAAI,IAAK,IAAK/5L,KAAK65L,GAC1F,IAAK,IAAK75L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAK25L,GAAI,IAAK,IAAK35L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAC1F,IAAK,IAAKj6L,KAAK25L,GAAI,IAAK,IAAK35L,KAAKy5L,GAAI,IAAK,IAAKz5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAC1F,IAAK,IAAKj6L,KAAKy5L,GAAI,IAAK,IAAKz5L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GACzF,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EACzF,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GACzF,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAK85L,IAAK,IAAK,IAAK95L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAK85L,IAC1F,IAAK,IAAK95L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EACzF,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,IAAKj6L,KAAKk5L,EAAG,IAAK,IAAKl5L,KAAKi6L,GAAI,IAAK,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC5F,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC9E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKwlG,EAAG,KAAM,KAAMxlG,KAAK85L,IAAK,KAAM,KAAM95L,KAAKwlG,EAAG,KAAM,KAAMxlG,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKwlG,EAAG,KAAM,KAAMxlG,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKwlG,EAC/E,KAAM,KAAMxlG,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKwlG,EAAG,KAAM,KAAMxlG,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKq5L,GAC7E,KAAM,KAAMr5L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK65L,GAAI,KAAM,KAAM75L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAKi6L,GAC/E,KAAM,KAAMj6L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAKk5L,EAChF,KAAM,KAAMl5L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAKk5L,EAC/E,KAAM,KAAMl5L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK45L,GAChF,KAAM,KAAM55L,KAAK25L,GAAI,KAAM,KAAM35L,KAAK45L,GAAI,KAAM,KAAM55L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAK85L,IAChF,KAAM,KAAM95L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAK85L,IACjF,KAAM,KAAM95L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAK85L,IACjF,KAAM,KAAM95L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAKy5L,GAAI,KAAM,KAAMz5L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAKk5L,EAChF,KAAM,KAAMl5L,KAAK+5L,GAAI,KAAM,KAAM/5L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKq5L,GACjF,KAAM,KAAMr5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAKk5L,EAChF,KAAM,KAAMl5L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKq5L,GAAI,KAAM,KAAMr5L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK25L,GAAI,KAAM,KAAM35L,KAAKk5L,EAChF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK25L,GAAI,KAAM,KAAM35L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAChF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAK25L,GAAI,KAAM,KAAM35L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAChF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK25L,GAAI,KAAM,KAAM35L,KAAKk5L,EAChF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EACjF,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAChF,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKg6L,GAAI,KAAM,KAAMh6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK25L,GAC/E,KAAM,KAAM35L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC/E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKg6L,GAChF,KAAM,KAAMh6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC/E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAAK,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC/E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKg6L,GAAI,KAAM,KAAMh6L,KAAK+5L,GAAI,KAAM,KAAM/5L,KAAKk5L,EAC/E,KAAM,KAAMl5L,KAAKwlG,EAAG,KAAM,KAAMxlG,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKg6L,GAAI,KAAM,KAAMh6L,KAAKmlG,EAC/E,KAAM,KAAMnlG,KAAKm5L,IAAK,KAAM,KAAMn5L,KAAKs5L,IAAK,KAAM,KAAMt5L,KAAKw5L,IAAK,KAAM,KAAMx5L,KAAKo5L,IACnF,KAAM,KAAMp5L,KAAKu5L,IAAK,KAAM,KAAMv5L,KAAKg6L,GAAI,KAAM,KAAMh6L,KAAK25L,GAAI,KAAM,KAAM35L,KAAKi6L,GACjF,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKg6L,GAC9E,KAAM,KAAMh6L,KAAK+5L,GAAI,KAAM,KAAM/5L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK+5L,GAAI,KAAM,KAAM/5L,KAAKy5L,GAC/E,KAAM,KAAMz5L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKy5L,GAAI,KAAM,KAAMz5L,KAAK25L,GAAI,KAAM,KAAM35L,KAAKi6L,GAC/E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKy5L,GAAI,KAAM,KAAMz5L,KAAK25L,GAAI,KAAM,KAAM35L,KAAKi6L,GAC/E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK25L,GAAI,KAAM,KAAM35L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK85L,IAC9E,KAAM,KAAM95L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAK25L,GAC9E,KAAM,KAAM35L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAK25L,GAAI,KAAM,KAAM35L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC/E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAC9E,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKy5L,GAC9E,KAAM,KAAMz5L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKy5L,GAAI,KAAM,KAAMz5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAC/E,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAC/E,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAC/E,KAAM,KAAMl5L,KAAKi6L,GAAI,KAAM,KAAMj6L,KAAKk5L,EAAG,KAAM,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAClF,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EACvF,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EACvF,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EACvF,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EACvF,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EACvF,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EACvF,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EACvF,MAAO,MAAOl5L,KAAKg6L,GAAI,MAAO,MAAOh6L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACvF,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAK85L,IAAK,MAAO,MAAO95L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EACxF,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EACvF,MAAO,MAAOl5L,KAAK85L,IAAK,MAAO,MAAO95L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACxF,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACtF,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACtF,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACtF,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACtF,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACtF,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKwlG,EACtF,MAAO,MAAOxlG,KAAK85L,IAAK,MAAO,MAAO95L,KAAKwlG,EAAG,MAAO,MAAOxlG,KAAK25L,GAAI,MAAO,MAAO35L,KAAKwlG,EACxF,MAAO,MAAOxlG,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKwlG,EAAG,MAAO,MAAOxlG,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKwlG,EACrF,MAAO,MAAOxlG,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKwlG,EAAG,MAAO,MAAOxlG,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKwlG,EACrF,MAAO,MAAOxlG,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKwlG,EAAG,MAAO,MAAOxlG,KAAKq5L,GAAI,MAAO,MAAOr5L,KAAKk5L,EACtF,MAAO,MAAOl5L,KAAKq5L,GAAI,MAAO,MAAOr5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKq5L,GACvF,MAAO,MAAOr5L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKq5L,GAAI,MAAO,MAAOr5L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKq5L,GACtF,MAAO,MAAOr5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAK85L,IAAK,MAAO,MAAO95L,KAAKk5L,EACxF,MAAO,MAAOl5L,KAAK85L,IAAK,MAAO,MAAO95L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAK65L,GACxF,MAAO,MAAO75L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAK65L,GAAI,MAAO,MAAO75L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACvF,MAAO,MAAOj6L,KAAK65L,GAAI,MAAO,MAAO75L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAK25L,GAAI,MAAO,MAAO35L,KAAKi6L,GACxF,MAAO,MAAOj6L,KAAK25L,GAAI,MAAO,MAAO35L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACvF,MAAO,MAAOj6L,KAAK25L,GAAI,MAAO,MAAO35L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKq5L,GACvF,MAAO,MAAOr5L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKq5L,GAAI,MAAO,MAAOr5L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAK+5L,GACtF,MAAO,MAAO/5L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAK25L,GAAI,MAAO,MAAO35L,KAAKi6L,GACvF,MAAO,MAAOj6L,KAAK25L,GAAI,MAAO,MAAO35L,KAAK65L,GAAI,MAAO,MAAO75L,KAAK25L,GAAI,MAAO,MAAO35L,KAAK65L,GACxF,MAAO,MAAO75L,KAAK05L,GAAI,MAAO,MAAO15L,KAAKy5L,GAAI,MAAO,MAAOz5L,KAAK65L,GAAI,MAAO,MAAO75L,KAAKi6L,GACxF,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GACtF,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAK25L,GAAI,MAAO,MAAO35L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAK25L,GACvF,MAAO,MAAO35L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,EAAG,MAAO,MAAOl5L,KAAK+5L,GACtF,MAAO,MAAO/5L,KAAKi6L,GAAI,MAAO,MAAOj6L,KAAKk5L,GAE9C,IAAK,IAAIt8L,EAAI,EAAGA,EAAIoD,KAAKk6L,UAAUr9L,SAAUD,EAIzC,IAHA,IAAIM,EAAQ8C,KAAKk6L,UAAUt9L,GACvB8a,EAAM1X,KAAKk6L,YAAYt9L,GACvBgK,EAAI5G,KAAKk6L,YAAYt9L,GAClBM,GAASwa,GACZ1X,KAAKi5L,kBAAkB/7L,KAAW0J,EAkR9C,OA5QAwxL,EAAcl8L,UAAUm8L,eAAiB,SAAUJ,EAAWC,GAC1Dl4L,KAAK++H,MAAQ/+H,KAAKm6L,iBAAiBlC,GACnCj4L,KAAKg5L,UAAYd,EAAQl4L,KAAKm5L,IAAMn5L,KAAKk5L,EACzCl5L,KAAKo6L,gBAEL,IADA,IAAIz7L,EAAS,GACJ/B,EAAI,EAAGA,EAAIoD,KAAKq6L,OAAOx9L,OAAQD,IACpC+B,EAAO/B,GAAKoD,KAAKq6L,OAAOz9L,GAE5B,OAAO+B,GAEXy5L,EAAcl8L,UAAUi+L,iBAAmB,SAAU7oL,GAEjD,IADA,IAAIgpL,EAAiB,GACZ19L,EAAI,EAAGA,EAAI0U,EAAKzU,OAAQD,IAC7B09L,EAAe19L,GAAKoD,KAAKi5L,kBAAkB3nL,EAAK1U,GAAGorC,WAAW,IAElE,OAAOsyJ,GAEXlC,EAAcl8L,UAAUq+L,iBAAmB,WACvC,IAAK,IAAI39L,EAAI,EAAGA,EAAIoD,KAAKnD,OAAQD,IAC7BoD,KAAKq6L,OAAOz9L,GAAKoD,KAAKg5L,WAG9BZ,EAAcl8L,UAAUs+L,UAAY,WAChCx6L,KAAKu6L,mBACL,IAAK,IAAI9tG,EAAI,EAAGA,EAAIzsF,KAAKnD,SAAU4vF,EAAG,CAClC,IAAIlN,EAAQv/E,KAAKq6L,OAAO5tG,GACD,KAAV,IAARlN,KACDA,GAAS,IACTv/E,KAAKrB,OAAO8tF,GAAwB,KAAT,EAARlN,GAAsBv/E,KAAKk5L,EAAIl5L,KAAKwlG,GAE3DxlG,KAAKq6L,OAAO5tG,GAAKlN,IAGzB64G,EAAcl8L,UAAUu+L,aAAe,SAAUjhL,EAAO+lE,EAAO1iF,GAC3D,GAAoB,KAAP,EAAR0iF,GACD,IAAK,IAAI3iF,EAAI4c,EAAO5c,EAAIC,IAAUD,EAC1BoD,KAAKrB,OAAO/B,KAAOoD,KAAKwlG,EACxBxlG,KAAKq6L,OAAOz9L,IAAM,EAEboD,KAAKrB,OAAO/B,KAAOoD,KAAKk5L,IAC7Bl5L,KAAKq6L,OAAOz9L,IAAM,QAK1B,IAASA,EAAI4c,EAAO5c,EAAIC,IAAUD,EAC1BoD,KAAKrB,OAAO/B,KAAOoD,KAAKwlG,IACxBxlG,KAAKq6L,OAAOz9L,IAAM,IAKlCw7L,EAAcl8L,UAAUk+L,cAAgB,WACpCp6L,KAAKnD,OAASmD,KAAK++H,MAAMliI,OACzBmD,KAAKrB,OAASqB,KAAK++H,MACnB/+H,KAAKq6L,OAAS,GACdr6L,KAAKw6L,YACLx6L,KAAKnD,OAASmD,KAAK06L,8BAGnB,IAFA,IAAIC,EAAU36L,KAAKg5L,UACfp8L,EAAI,EACDA,EAAIoD,KAAKnD,QAAQ,CAIpB,IAHA,IAAI0iF,EAAQv/E,KAAKq6L,OAAOz9L,GACpBg+L,EAAgD,KAAT,EAA3Bp0L,KAAK4L,IAAIuoL,EAASp7G,IAAuBv/E,KAAKk5L,EAAIl5L,KAAKwlG,EACnE75F,EAAW/O,EAAI,EACZ+O,EAAW3L,KAAKnD,QAAUmD,KAAKq6L,OAAO1uL,KAAc4zE,KACrD5zE,EAEN,IAAI6sJ,EAAU7sJ,EAAW3L,KAAKnD,OAASmD,KAAKq6L,OAAO1uL,GAAY3L,KAAKg5L,UAChE9uL,EAA6C,KAAT,EAA3B1D,KAAK4L,IAAIomJ,EAASj5E,IAAuBv/E,KAAKk5L,EAAIl5L,KAAKwlG,EACpExlG,KAAK66L,SAASj+L,EAAG+O,EAAU4zE,EAAOq7G,EAAS1wL,GAC3ClK,KAAKy6L,aAAa79L,EAAG2iF,EAAO5zE,GAC5BgvL,EAAUp7G,EACV3iF,EAAI+O,EAER3L,KAAK86L,wBAAwB96L,KAAKnD,SAEtCu7L,EAAcl8L,UAAUw+L,4BAA8B,WAElD,IADA,IAAIlhL,EAAQ,EACH5c,EAAI,EAAGA,EAAIoD,KAAKnD,SAAUD,EACzBoD,KAAK++H,MAAMniI,KAAOoD,KAAKm5L,KAAOn5L,KAAK++H,MAAMniI,KAAOoD,KAAKs5L,KAAOt5L,KAAK++H,MAAMniI,KAAOoD,KAAKo5L,KACrFp5L,KAAK++H,MAAMniI,KAAOoD,KAAKu5L,KAAOv5L,KAAK++H,MAAMniI,KAAOoD,KAAKw5L,KAAOx5L,KAAK++H,MAAMniI,KAAOoD,KAAK+5L,KACnF/5L,KAAKrB,OAAO6a,GAASxZ,KAAKrB,OAAO/B,GACjCoD,KAAKq6L,OAAO7gL,GAASxZ,KAAKq6L,OAAOz9L,GACjC4c,KAGR,OAAOA,GAEX4+K,EAAcl8L,UAAU4+L,wBAA0B,SAAUj+L,GACxD,IAAK,IAAID,EAAIoD,KAAK++H,MAAMliI,OAAS,EAAGD,GAAK,IAAKA,EACtCoD,KAAK++H,MAAMniI,KAAOoD,KAAKm5L,KAAOn5L,KAAK++H,MAAMniI,KAAOoD,KAAKs5L,KAAOt5L,KAAK++H,MAAMniI,KAAOoD,KAAKo5L,KACnFp5L,KAAK++H,MAAMniI,KAAOoD,KAAKu5L,KAAOv5L,KAAK++H,MAAMniI,KAAOoD,KAAKw5L,KAAOx5L,KAAK++H,MAAMniI,KAAOoD,KAAK+5L,IACnF/5L,KAAKrB,OAAO/B,GAAKoD,KAAK++H,MAAMniI,GAC5BoD,KAAKq6L,OAAOz9L,IAAM,IAGlBC,GAAU,EACVmD,KAAKrB,OAAO/B,GAAKoD,KAAKrB,OAAO9B,GAC7BmD,KAAKq6L,OAAOz9L,GAAKoD,KAAKq6L,OAAOx9L,IAGrC,IAASD,EAAI,EAAGA,EAAIoD,KAAK++H,MAAMliI,OAAQD,KACX,IAApBoD,KAAKq6L,OAAOz9L,KAERoD,KAAKq6L,OAAOz9L,GADN,IAANA,EACiBoD,KAAKg5L,UAGLh5L,KAAKq6L,OAAOz9L,EAAI,KAKjDw7L,EAAcl8L,UAAU2+L,SAAW,SAAUrhL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,GAE1E,IADA,IAAIC,EAAWF,EACNn+L,EAAI4c,EAAO5c,EAAIC,IAAUD,EAC1BoD,KAAKrB,OAAO/B,KAAOoD,KAAK85L,IACxB95L,KAAKrB,OAAO/B,GAAKq+L,EAGjBA,EAAWj7L,KAAKrB,OAAO/B,GAG/BoD,KAAKk7L,oBAAoB1hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,IAE9D5C,EAAcl8L,UAAUg/L,oBAAsB,SAAU1hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,GACrF,IAAK,IAAIp+L,EAAI4c,EAAO5c,EAAIC,IAAUD,EAC9B,GAAIoD,KAAKrB,OAAO/B,KAAOoD,KAAKy5L,GACxB,IAAK,IAAItyL,EAAIvK,EAAI,EAAGuK,GAAKqS,IAASrS,EAC9B,GAAInH,KAAKrB,OAAOwI,KAAOnH,KAAKk5L,GAAKl5L,KAAKrB,OAAOwI,KAAOnH,KAAKwlG,GAAKxlG,KAAKrB,OAAOwI,KAAOnH,KAAKq5L,GAAI,CAClFr5L,KAAKrB,OAAOwI,KAAOnH,KAAKq5L,KACxBr5L,KAAKrB,OAAO/B,GAAKoD,KAAK45L,IAE1B,MAKhB55L,KAAKm7L,sBAAsB3hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,IAEhE5C,EAAcl8L,UAAUi/L,sBAAwB,SAAU3hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,GACvF,IAAK,IAAIp+L,EAAI4c,EAAO5c,EAAIC,IAAUD,EAC1BoD,KAAKrB,OAAO/B,KAAOoD,KAAKq5L,KACxBr5L,KAAKrB,OAAO/B,GAAKoD,KAAKwlG,GAG9BxlG,KAAKo7L,6BAA6B5hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,IAEvE5C,EAAcl8L,UAAUk/L,6BAA+B,SAAU5hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,GAC9F,IAAK,IAAIp+L,EAAI4c,EAAQ,EAAG5c,EAAIC,EAAS,IAAKD,EACtC,GAAIoD,KAAKrB,OAAO/B,KAAOoD,KAAK05L,IAAM15L,KAAKrB,OAAO/B,KAAOoD,KAAK65L,GAAI,CAC1D,IAAIc,EAAU36L,KAAKrB,OAAO/B,EAAI,GAC1B47J,EAAUx4J,KAAKrB,OAAO/B,EAAI,GAC1B+9L,IAAY36L,KAAKy5L,IAAMjhC,IAAYx4J,KAAKy5L,GACxCz5L,KAAKrB,OAAO/B,GAAKoD,KAAKy5L,GAEjBz5L,KAAKrB,OAAO/B,KAAOoD,KAAK65L,IAAMc,IAAY36L,KAAK45L,IAAMphC,IAAYx4J,KAAK45L,KAC3E55L,KAAKrB,OAAO/B,GAAKoD,KAAK45L,IAIlC55L,KAAKq7L,8BAA8B7hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,IAExE5C,EAAcl8L,UAAUm/L,8BAAgC,SAAU7hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,GAC/F,IAAK,IAAIp+L,EAAI4c,EAAO5c,EAAIC,IAAUD,EAC9B,GAAIoD,KAAKrB,OAAO/B,KAAOoD,KAAK25L,GAAI,CAC5B,IAAIjxL,EAAI9L,EACJgK,EAAI,GACRA,EAAEgS,KAAK5Y,KAAK25L,IACZ,IAAIv5F,EAAIpgG,KAAKs7L,UAAU5yL,EAAG7L,EAAQ+J,GAC9BiT,EAAOnR,IAAM8Q,EAAQuhL,EAAY/6L,KAAKrB,OAAO+J,EAAI,GAIrD,GAHImR,IAAS7Z,KAAKy5L,KACd5/K,EAAQumF,IAAMvjG,EAAUm+L,EAAUh7L,KAAKrB,OAAOyhG,IAE9CvmF,IAAS7Z,KAAKy5L,GACd,IAAK,IAAItyL,EAAIuB,EAAGvB,EAAIi5F,IAAKj5F,EACrBnH,KAAKrB,OAAOwI,GAAKnH,KAAKy5L,GAG9B78L,EAAIwjG,EAGZpgG,KAAKu7L,mBAAmB/hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,IAE7D5C,EAAcl8L,UAAUq/L,mBAAqB,SAAU/hL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,GACpF,IAAK,IAAIp+L,EAAI4c,EAAO5c,EAAIC,IAAUD,EAC1BoD,KAAKrB,OAAO/B,KAAOoD,KAAK05L,IAAM15L,KAAKrB,OAAO/B,KAAOoD,KAAK25L,IAAM35L,KAAKrB,OAAO/B,KAAOoD,KAAK65L,KACpF75L,KAAKrB,OAAO/B,GAAKoD,KAAKi6L,IAG9Bj6L,KAAKw7L,qBAAqBhiL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,IAE/D5C,EAAcl8L,UAAUs/L,qBAAuB,SAAUhiL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,GACtF,IAAK,IAAIp+L,EAAI4c,EAAO5c,EAAIC,IAAUD,EAC9B,GAAIoD,KAAKrB,OAAO/B,KAAOoD,KAAKy5L,GAAI,CAE5B,IADA,IAAIgC,EAAMV,EACD5zL,EAAIvK,EAAI,EAAGuK,GAAKqS,IAASrS,EAC9B,GAAInH,KAAKrB,OAAOwI,KAAOnH,KAAKk5L,GAAKl5L,KAAKrB,OAAOwI,KAAOnH,KAAKwlG,EAAG,CACxDi2F,EAAMz7L,KAAKrB,OAAOwI,GAClB,MAGJs0L,IAAQz7L,KAAKk5L,IACbl5L,KAAKrB,OAAO/B,GAAKoD,KAAKk5L,GAIlCl5L,KAAK07L,sBAAsBliL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,IAEhE5C,EAAcl8L,UAAUo/L,UAAY,SAAU9hL,EAAO3c,EAAQ8+L,GAEzD,MADEniL,IACOA,EAAQ3c,GAAQ,CAErB,IADA,IAAIsjG,EAAIngG,KAAKrB,OAAO6a,GACX5c,EAAI,EAAGA,EAAI++L,EAAS9+L,SAAUD,EAC/BujG,IAAMw7F,EAAS/+L,KACf4c,EAAQxZ,KAAKs7L,YAAY9hL,EAAO3c,EAAQ8+L,IAGhD,OAAOniL,EAEX,OAAO3c,GAEXu7L,EAAcl8L,UAAUw/L,sBAAwB,SAAUliL,EAAO3c,EAAQ0iF,EAAOw7G,EAAWC,GACvF,IAAK,IAAIp+L,EAAI4c,EAAO5c,EAAIC,IAAUD,EAC9B,GAAIoD,KAAKrB,OAAO/B,KAAOoD,KAAKg6L,IAAMh6L,KAAKrB,OAAO/B,KAAOoD,KAAKi6L,IAAMj6L,KAAKrB,OAAO/B,KAAOoD,KAAKmlG,GACpFnlG,KAAKrB,OAAO/B,KAAOoD,KAAKglG,EAAG,CAC3B,IAAIt8F,EAAI9L,EACJg/L,EAAO,CAAC57L,KAAKmlG,EAAGnlG,KAAKglG,EAAGhlG,KAAKg6L,GAAIh6L,KAAKi6L,IACtC75F,EAAIpgG,KAAKs7L,UAAU5yL,EAAG7L,EAAQ++L,GAC9B/pD,EAAK,EACLgqD,EAAK,EACLC,EAAK,EACLpzL,IAAM8Q,EACNq4H,EAAKkpD,IAGLlpD,EAAK7xI,KAAKrB,OAAO+J,EAAI,MACV1I,KAAK45L,IAGP/nD,IAAO7xI,KAAKy5L,MAFjB5nD,EAAK7xI,KAAKwlG,GAMdpF,IAAMvjG,EACNg/L,EAAKb,IAGLa,EAAK77L,KAAKrB,OAAOyhG,MACNpgG,KAAK45L,IAGPiC,IAAO77L,KAAKy5L,MAFjBoC,EAAK77L,KAAKwlG,GAOds2F,EADAjqD,IAAOgqD,EACFhqD,EAGmB,KAAT,EAARtyD,GAAsBv/E,KAAKk5L,EAAIl5L,KAAKwlG,EAE/C,IAAK,IAAIr+F,EAAIuB,EAAGvB,EAAIi5F,IAAKj5F,EACrBnH,KAAKrB,OAAOwI,GAAK20L,EAErBl/L,EAAIwjG,IAITg4F,EAxgBwB,GC9a/B2D,GAA6B,WAC7B,SAASA,IAIL/7L,KAAKg8L,YAAc,IAInBh8L,KAAKi8L,aAAe,IA8NxB,OA3MAF,EAAY7/L,UAAU26K,OAAS,SAAUlmG,EAAM10B,EAAMigJ,EAAKC,EAAWpyL,GACjE,GAAY,MAAR4mE,EACA,MAAM,IAAI/vE,MAAM,gCAEpB,GAAY,MAARq7C,EACA,MAAM,IAAIr7C,MAAM,gCAEpB,IAAIjC,EAAS,GAQb,OAPIs9C,EAAKsuI,QACL5rL,EAASqB,KAAKo8L,aAAazrH,EAAMurH,EAAKnyL,EAAQkyC,EAAMkgJ,IAGpDx9L,EAAS,IACF,GAAKgyE,EAEThyE,GAUXo9L,EAAY7/L,UAAUmgM,YAAc,SAAU1rH,EAAM10B,EAAMigJ,EAAKC,EAAWpyL,GACtE,GAAY,MAAR4mE,EACA,MAAM,IAAI/vE,MAAM,gCAEpB,GAAY,MAARq7C,EACA,MAAM,IAAIr7C,MAAM,gCAOpB,OAFYZ,KAAKs8L,kBAAkB3rH,EAAM10B,EAAMigJ,EAAKC,EAAWpyL,IAyBnEgyL,EAAY7/L,UAAUqgM,cAAgB,SAAU5rH,EAAM10B,EAAMigJ,EAAaM,EAAQrlL,GAG7E,GAAY,MAARw5D,EACA,MAAM,IAAI/vE,MAAM,gCAEpB,GAAY,MAARq7C,EACA,MAAM,IAAIr7C,MAAM,gCAGpB,GADA47L,EAAS,KACW,IAAhB7rH,EAAK9zE,OACL,MAAO,CAAE27J,SATF,EASiBgkC,OAAQA,GAEpC,IACIlrL,GADW,IAAI0jL,IACCpsI,MAAM+nB,EAAM,GAE5B8hH,EADex2I,EAAKwgJ,aACKhK,UAC7B+J,EAAS,IAAI3jK,YAAYvnB,EAAKzU,QAE9B,IADA,IAAID,EAAI,EACCyxE,EAAI,EAAGvsE,EAAMwP,EAAKzU,OAAQwxE,EAAIvsE,EAAKusE,IAAK,CAC7C,IAAI06E,EAAKz3I,EAAK+8D,GACV+7G,EAAYqI,EAAU5F,SAAS9jC,GACjB,OAAdqhC,GAA2C,qBAAdA,IAC7BoS,EAAO5/L,KAAQwtL,EAAW5wK,OAGlC,MAAO,CAAEg/I,SAzBK,EAyBagkC,OAAQA,IAGvCT,EAAY7/L,UAAUkgM,aAAe,SAAUzrH,EAAMurH,EAAKnyL,EAAQkyC,EAAMkgJ,GACpE,GAAkB,OAAdA,GAA2C,qBAAdA,EAA2B,CACxD,GAAY,MAARxrH,EACA,MAAM,IAAI/vE,MAAM,gCAEpB,IAAIjC,EAAS,KAEb,GAAe,OAAXoL,GAAqC,qBAAXA,GAA0BA,EAAO2yL,gBAAkBz3B,GAAiBmD,KAE9FzpK,GADW,IAAIi5L,IACDI,yBAAyBrnH,EAAMurH,GAEjD,OAAOv9L,EAGP,GAAY,MAARgyE,EACA,MAAM,IAAI/vE,MAAM,gCAEpB,GAAY,MAARq7C,EACA,MAAM,IAAIr7C,MAAM,gCAEpB,IAAI+7L,EAAW,KACf,GAAe,OAAX5yL,GAAqC,qBAAXA,GAA0BA,EAAO2yL,gBAAkBz3B,GAAiBmD,KAAM,CACpG,IACIzpG,GADW,IAAIq2H,IACApsI,MAAM+nB,EAAM,GAC/BgsH,EAAW38L,KAAKo8L,aAAaz9H,EAAKu9H,EAAKnyL,GAMvCpL,EAAS,GAEb,GAAIw9L,EAAW,CAGX,IAFA,IAAIS,EAAQD,EAAShgM,MAAM,IACvBm9E,EAAQ8iH,EAAM//L,OACTD,EAAI,EAAGA,EAAIk9E,EAAOl9E,IACvBggM,EAAMhgM,GAAKoD,KAAK68L,SAAS5gJ,EAAM2gJ,EAAMhgM,IAEzC+B,EAASi+L,OAGTj+L,EAAS,IACF,GAAKqB,KAAK68L,SAAS5gJ,EAAM0gJ,GAEpC,OAAOh+L,GASfo9L,EAAY7/L,UAAU2gM,SAAW,SAAU5gJ,EAAMugJ,GAC7C,IAAI7rH,EAAO6rH,EACX,GAAY,MAARvgJ,EACA,MAAM,IAAIr7C,MAAM,gCAEpB,GAAY,MAAR+vE,EACA,MAAM,IAAI/vE,MAAM,gCAEpB,IAAI0Q,EAAOq/D,EAEP8hH,EADex2I,EAAKwgJ,aACKhK,UAC7Bx2I,EAAK84I,WAAWzjL,GAEhBA,EAAOmhL,EAAU7B,cAAct/K,GAC/B,IAAIwyI,EAAQ+d,EAAUsB,eAAe7xJ,GAAM,GAE3C,OADAA,EAAOuwJ,EAAUwB,aAAavf,IAmClCi4C,EAAY7/L,UAAUogM,kBAAoB,SAAU3rH,EAAM10B,EAAMigJ,EAAKC,EAAWpyL,GAC5E,GAAY,MAAR4mE,EACA,MAAM,IAAI/vE,MAAM,gCAEpB,GAAY,MAARq7C,EACA,MAAM,IAAIr7C,MAAM,gCAIpB,OAFmBZ,KAAKo8L,aAAazrH,EAAMurH,EAAKnyL,GACvBpN,MAAM,KAG5Bo/L,EAvOsB,IjCHjC,SAAWliB,GAKPA,EAAcA,EAAa,SAAe,GAAK,WAK/CA,EAAcA,EAAa,QAAc,GAAK,UAVlD,CAWGA,KAAkBA,GAAgB,KAMrC,SAAWC,GAKPA,EAAmBA,EAAkB,QAAc,GAAK,UAKxDA,EAAmBA,EAAkB,WAAiB,GAAK,aAK3DA,EAAmBA,EAAkB,iBAAuB,GAAK,mBAfrE,CAgBGA,KAAuBA,GAAqB,KAE/C,SAAWC,GAKPA,EAAcA,EAAa,MAAY,GAAK,QAK5CA,EAAcA,EAAa,KAAW,GAAK,OAK3CA,EAAcA,EAAa,QAAc,GAAK,UAK9CA,EAAcA,EAAa,OAAa,GAAK,SAK7CA,EAAcA,EAAa,aAAmB,GAAK,eAKnDA,EAAcA,EAAa,SAAe,IAAM,WAKhDA,EAAcA,EAAa,WAAiB,IAAM,aAKlDA,EAAcA,EAAa,aAAmB,KAAO,eAxCzD,CAyCGA,KAAkBA,GAAgB,KkC7ErC,ICUW+iB,GDVPC,GAA4B,WAM5B,SAASA,EAAWvgM,GAMhBwD,KAAK41K,iBAAmB,EACxB51K,KAAKxD,MAAQA,EA8FjB,OA5FA0B,OAAOooB,eAAey2K,EAAW7gM,UAAW,SAAU,CAMlDqqB,IAAK,WACD,OAAOvmB,KAAKg9L,cAEhBv2K,IAAK,SAAUjqB,GACXwD,KAAKg9L,aAAexgM,GAExBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAey2K,EAAW7gM,UAAW,WAAY,CAKpDqqB,IAAK,WACD,OAAOvmB,KAAKi9L,QAEhBx2K,IAAK,SAAUjqB,GACXwD,KAAKi9L,OAASzgM,GAElBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAey2K,EAAW7gM,UAAW,wBAAyB,CAKjEqqB,IAAK,WACD,OAAOvmB,KAAKwZ,OAEhBiN,IAAK,SAAUjqB,GACXwD,KAAKwZ,MAAQhd,GAEjBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAey2K,EAAW7gM,UAAW,WAAY,CAKpDqqB,IAAK,WACD,OAAOvmB,KAAK41K,iBAEhBnvJ,IAAK,SAAUjqB,GACXwD,KAAK41K,gBAAkBp5K,GAE3BkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAey2K,EAAW7gM,UAAW,eAAgB,CAKxDqqB,IAAK,WAED,OADa,MAGjBG,YAAY,EACZC,cAAc,IAMlBo2K,EAAW7gM,UAAU23E,KAAO,SAAU60E,GAClCA,EAAO1mJ,MAAMhC,KAAKk9L,UAAUl9L,KAAKxD,SAMrCugM,EAAW7gM,UAAU+C,MAAQ,SAAU2pJ,GAEnC,OADgB,IAAIm0C,EAAW/8L,KAAKxD,QAQxCugM,EAAW7gM,UAAUghM,UAAY,SAAU1gM,GACvC,OAAOA,EAAQ,OAAS,SAErBugM,EA3GqB,GEJ5B//J,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GA4BzC+/J,GAAkC,SAAUr/J,GAQ5C,SAASq/J,EAAiB/sC,GACtB,IAAIrwJ,EAAQ+9B,EAAOx8B,KAAKtB,OAASA,KA2BjC,OArBAD,EAAMq9L,YAAc,IAAIhtB,GAAS,IAAK,IAAK,KAK3CrwK,EAAMs9L,YAAa,EAKnBt9L,EAAMu9L,UAAY,KAKlBv9L,EAAM0xJ,qBAAuB,IAAI9E,EACjC5sJ,EAAMw9L,mBAAqB,IAAIrsC,EAC/BnxJ,EAAMw9L,mBAAmB59G,MAAM5iF,SAASgD,EAAM0xJ,qBAAqBvnJ,KAAM,IAAIg+I,EAAQnoJ,EAAM0xJ,qBAAqBnnJ,UAChHvK,EAAMw9L,mBAAmB59G,MAAM5iF,SAASgD,EAAM0xJ,qBAAqBZ,YAAa,IAAI6C,EAAU,IAC9F3zJ,EAAMqwJ,QAAUA,EAChBrwJ,EAAMutJ,WAAauX,GAAciN,IAC1B/xK,EA+QX,OAlTAi9B,GAAUmgK,EAAkBr/J,GAqC5B5/B,OAAOooB,eAAe62K,EAAiBjhM,UAAW,aAAc,CAM5DqqB,IAAK,WACD,OAAOvmB,KAAKo9L,aAEhB32K,IAAK,SAAUjqB,GACXwD,KAAKo9L,YAAc5gM,EACnB,IAAIghM,EAAKx9L,KAAKowJ,QACV5zJ,EAAM0wB,QACNswK,EAAGn1K,OAAOroB,KAAKyxJ,qBAAqBnuD,YAGpCk6F,EAAG79G,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBnuD,WAAY9mG,EAAM+vG,QAAQvsG,KAAKstJ,cAGnF5mI,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe62K,EAAiBjhM,UAAW,YAAa,CAK3DqqB,IAAK,WAGD,OAFSvmB,KAAKowJ,QACDzwE,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBnB,WAC5C9zJ,OAEdiqB,IAAK,SAAUjqB,GACX,IAAIghM,EAAKx9L,KAAKowJ,QACVqtC,EAAMD,EAAG79G,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBnB,WAC3C,MAANmtC,GAA4B,qBAAPA,GACtBA,EAAK,IAAIV,GAAWvgM,GACpBghM,EAAG79G,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBnB,UAAWmtC,IAGvDA,EAAGjhM,MAAQA,GAGnBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe62K,EAAiBjhM,UAAW,WAAY,CAK1DqqB,IAAK,WACD,OAAOvmB,KAAKs9L,WAEhB72K,IAAK,SAAUjqB,GACXwD,KAAKs9L,UAAY9gM,EACJ,MAATA,GAAkC,qBAAVA,EACxBwD,KAAKowJ,QAAQzwE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBlB,SAAU,IAAI6Q,EAAmBphK,KAAKs9L,YAG5Ft9L,KAAKowJ,QAAQ/nI,OAAOroB,KAAKyxJ,qBAAqBlB,WAGtD7pI,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe62K,EAAiBjhM,UAAW,OAAQ,CAKtDqqB,IAAK,WAGD,OAFSvmB,KAAKowJ,QACAzwE,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBlD,OAG3D9nI,IAAK,SAAUjqB,GACX,IAAIghM,EAAKx9L,KAAKowJ,QACD,MAAT5zJ,GAAkC,qBAAVA,EACxBghM,EAAGn1K,OAAOroB,KAAKyxJ,qBAAqBlD,MAGpCivC,EAAG79G,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBlD,KAAM/xJ,IAG1DkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe62K,EAAiBjhM,UAAW,aAAc,CAK5DqqB,IAAK,WACD,OAAOvmB,KAAK09L,aAEhBj3K,IAAK,SAAUjqB,GACX,IAAI8wJ,EAAattJ,KAAKowJ,QAAQzwE,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBnE,YACvE,GAAK9wJ,IAAUwD,KAAK09L,aAA+B,MAAdpwC,EAAqB,CACtDttJ,KAAK09L,YAAclhM,EACnB,IAAImhM,EAAU39L,KAAK49L,uBAAuBphM,GAC1CwD,KAAKowJ,QAAQzwE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBnE,WAAY,IAAIpF,EAAQy1C,MAGtFj3K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe62K,EAAiBjhM,UAAW,WAAY,CAK1DqqB,IAAK,WACD,OAAOvmB,KAAKq9L,YAEhB52K,IAAK,SAAUjqB,GACXwD,KAAKq9L,WAAa7gM,GAEtBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe62K,EAAiBjhM,UAAW,oBAAqB,CAKnEqqB,IAAK,WAID,OAH+B,MAA3BvmB,KAAKu9L,qBACLv9L,KAAKu9L,mBAAqB,IAAIrsC,GAE3BlxJ,KAAKu9L,oBAEhB72K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe62K,EAAiBjhM,UAAW,UAAW,CAKzDqqB,IAAK,WACD,OAAOvmB,KAAK69L,UAEhBp3K,IAAK,SAAUjqB,GACX,GAAa,MAATA,EACA,MAAM,IAAIoE,MAAM,mCAEhBpE,IAAUwD,KAAK69L,WACf79L,KAAK69L,SAAWrhM,EAChBwD,KAAK89L,kBAAkBn+G,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBrB,QAAS,IAAIgR,EAAmBphK,KAAK69L,aAG7Gn3K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe62K,EAAiBjhM,UAAW,SAAU,CAKxDqqB,IAAK,WACD,OAAOvmB,KAAK+9L,SAEhBt3K,IAAK,SAAUjqB,GACX,GAAa,MAATA,EACA,MAAM,IAAIoE,MAAM,kCAEpB,GAAIpE,IAAUwD,KAAK+9L,QAAS,CACxB/9L,KAAK+9L,QAAUvhM,EAAMyC,QACrB,IAAIsJ,EAAI,IAAI2rJ,EAASl0J,KAAK+9L,QAAQ1tC,OAAO97H,UACzCv0B,KAAKu9L,mBAAmB59G,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBpB,OAAQ9nJ,KAGjFme,YAAY,EACZC,cAAc,IAYlBw2K,EAAiBjhM,UAAU02K,eAAiB,SAAUC,EAAOnzB,EAAcozB,EAAcr6I,EAAas6I,GAClG,IAAI/yJ,GAAO,EACX,GAAI6yJ,aAAiBsqB,EAAkB,CAC9Bn9L,KAAKstJ,aAAeylB,IACrB/yK,KAAKstJ,WAAaylB,EAClB/yK,KAAKg+L,iBAGTt+C,EAAaivB,cAAc,UAAW3uK,KAAKq9L,YAE3C,IACIY,EADYnrB,EAAaA,eACNorB,QAAQl+L,MAC/B0/I,EAAauwB,qBAAqB,KAAMguB,EAAQj+L,KAAKq9L,YACrDr9K,GAAO,EAEX,OAAOA,GAOXm9K,EAAiBjhM,UAAU82K,aAAe,SAAUtzB,KAQpDy9C,EAAiBjhM,UAAU0hM,uBAAyB,SAAUtwC,GAC1D,IAAI3uJ,EACJ,OAAQ2uJ,GACJ,KAAKuX,GAAciN,IACfnzK,EAAS,YAGjB,OAAOA,GAMXw+L,EAAiBjhM,UAAUiiM,uBAAyB,SAAUhtC,GAC1DnxJ,KAAKu9L,mBAAqBpsC,GAM9BgsC,EAAiBjhM,UAAUkiM,uBAAyB,SAAUvrB,GAC1D,GAAc,MAATA,EACD,MAAM,IAAIjyK,MAAM,iCAEpB,IACI68L,EADKz9L,KAAKowJ,QACDzwE,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBnB,WAC3C,MAANmtC,GACD5qB,EAAMziB,QAAQzwE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBnB,UAAW,IAAIysC,GAAWU,EAAGjhM,SAO5F2gM,EAAiBjhM,UAAUmiM,qBAAuB,SAAUxrB,GACxD,IAAIvvE,EAAatjG,KAAKsjG,WACjBA,EAAWp2E,UACZ2lJ,EAAMvvE,WAAaA,IAG3BplG,OAAOooB,eAAe62K,EAAiBjhM,UAAW,UAAW,CAOzDqqB,IAAK,WACD,OAAOvmB,KAAK89L,mBAEhBp3K,YAAY,EACZC,cAAc,IAEXw2K,EAnT2B,CAoTpC1qB,ICjUE6rB,GAA6B,WAC7B,SAASA,EAAYn1B,EAAMC,GAavB,GAPAppK,KAAKyxJ,qBAAuB,IAAI9E,EAMhC3sJ,KAAKu+L,qBAAsB,EACP,qBAATp1B,QAGN,GAAIA,aAAgBF,IAAyB,qBAATG,EAAsB,CAC3DppK,KAAKorD,QAAU,IAAIy0G,EACnB,IAAI2+B,EAAW,IAAIv1B,GAAME,EAAKz6H,MAAOy6H,EAAKx6H,QAC1C3uC,KAAK6sK,QAAQ2xB,GACbx+L,KAAKqqC,kBAGLrqC,KAAKorD,QAAU,IAAIy0G,EACnB7/J,KAAK6sK,QAAQ,IAAI5D,GAAME,EAAMC,IAC7BppK,KAAKqqC,aA8Ib,OA3IAnsC,OAAOooB,eAAeg4K,EAAYpiM,UAAW,OAAQ,CAKjDqqB,IAAK,WACD,OAAOvmB,KAAKy+L,cAEhB/3K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeg4K,EAAYpiM,UAAW,QAAS,CAIlDqqB,IAAK,WACD,OAAOvmB,KAAK68C,KAAKnO,OAErBhoB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeg4K,EAAYpiM,UAAW,SAAU,CAInDqqB,IAAK,WACD,OAAOvmB,KAAK68C,KAAKlO,QAErBjoB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeg4K,EAAYpiM,UAAW,WAAY,CAIrDqqB,IAAK,WACD,GAAwB,MAApBvmB,KAAK0+L,aAAmD,qBAArB1+L,KAAK0+L,YAA6B,CACrE,IAAIC,EAAK,IAAIC,GAAwB5+L,MACjC4tD,EAAI,IAAIixI,GAAY7+L,KAAK68C,KAAM8hJ,EAAI3+L,KAAKorD,SAC5CprD,KAAK0+L,YAAc9wI,EAGnB5tD,KAAK0+L,YAAYI,wBAGrB,OAAO9+L,KAAK0+L,aAEhBh4K,YAAY,EACZC,cAAc,IAMlB23K,EAAYpiM,UAAU42K,aAAe,WAKjC,OAJsB,MAAlB9yK,KAAK8sJ,YACL9sJ,KAAK8sJ,UAAY,IAAIiyC,GACrB/+L,KAAKorD,QAAQu0B,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB3E,UAAW9sJ,KAAK8sJ,YAEnE9sJ,KAAK8sJ,WAOhBwxC,EAAYpiM,UAAUmuC,WAAa,WAC/BrqC,KAAKg/L,UACLh/L,KAAKi/L,cAMTX,EAAYpiM,UAAU8iM,QAAU,WAC5B,IAAIxiM,EAAQ,IAAI0rJ,EAAQloJ,KAAKyxJ,qBAAqBjE,SAClDxtJ,KAAKorD,QAAQu0B,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBvnJ,KAAM1N,IAMhE8hM,EAAYpiM,UAAU+iM,WAAa,WAC/B,IAAIziM,EAAQ,IAAI0rJ,EAAQloJ,KAAKyxJ,qBAAqBjD,MAClDxuJ,KAAKorD,QAAQu0B,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBtE,QAAS3wJ,IAEnE8hM,EAAYpiM,UAAUm2C,MAAQ,SAAUwK,GAChB,qBAATA,GACe,MAAlB78C,KAAK8sJ,YACL9sJ,KAAK8sJ,UAAY,KACjB9sJ,KAAKorD,QAAQ/iC,OAAOroB,KAAKyxJ,qBAAqB3E,YAE7B,MAAjB9sJ,KAAKm9K,UACLn9K,KAAKm9K,SAAS9qI,MAAMryC,KAAK68C,QAI7B78C,KAAK6sK,QAAQhwH,GACb78C,KAAKqyC,UAObisJ,EAAYpiM,UAAU2wK,QAAU,SAAUhwH,GACtC,IAAI3N,EAAO,IAAIg6H,GAAW,IAAIF,GAAO,EAAG,GAAInsH,GACxC34C,EAAMgwJ,EAASe,cAAc/lH,GACjClvC,KAAKorD,QAAQu0B,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBlD,KAAMrqJ,GAC5DlE,KAAKy+L,aAAe5hJ,GAExB3+C,OAAOooB,eAAeg4K,EAAYpiM,UAAW,UAAW,CAsBpDqqB,IAAK,WACD,OAAOvmB,KAAKorD,SAEhB1kC,YAAY,EACZC,cAAc,IAEX23K,EAxKsB,IFAjC,SAAWxB,GAMPA,EAAYA,EAAW,QAAc,GAAK,UAM1CA,EAAYA,EAAW,IAAU,GAAK,MAMtCA,EAAYA,EAAW,IAAU,GAAK,MAMtCA,EAAYA,EAAW,IAAU,GAAK,MAMtCA,EAAYA,EAAW,KAAW,GAAK,OAMvCA,EAAYA,EAAW,IAAU,GAAK,MAMtCA,EAAYA,EAAW,IAAU,GAAK,MAMtCA,EAAYA,EAAW,KAAW,GAAK,OAhD3C,CAiDGA,KAAgBA,GAAc,KAKjC,IAAIoC,GAA8B,WAK9B,SAASA,EAAaz/C,GAMlBz/I,KAAKm/L,WAAa,IAClBn/L,KAAKo/L,WAAa,IAClBp/L,KAAKq/L,WAAa,IAClBr/L,KAAKs/L,WAAa,IAClBt/L,KAAKu/L,WAAa,IAClBv/L,KAAKw/L,WAAa,IAClBx/L,KAAKy/L,WAAa,IAClBz/L,KAAK0/L,YAAc,IACnB1/L,KAAK2/L,YAAc,IACnB3/L,KAAK4/L,YAAc,IACnB5/L,KAAK6/L,YAAc,IACnB7/L,KAAK8/L,YAAc,IAMnB9/L,KAAK+/L,QAAUjD,GAAYjT,QAO3B7pL,KAAKggM,kBAAoB,EAMzBhgM,KAAKyxJ,qBAAuB,IAAI9E,EAChC3sJ,KAAKigM,QAAUxgD,EACfz/I,KAAKqqC,aA+TT,OA7TAnsC,OAAOooB,eAAe44K,EAAahjM,UAAW,SAAU,CAMpDqqB,IAAK,WACD,OAAOvmB,KAAKkgM,SAEhBx5K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe44K,EAAahjM,UAAW,QAAS,CAMnDqqB,IAAK,WACD,OAAOvmB,KAAKmgM,QAEhBz5K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe44K,EAAahjM,UAAW,mBAAoB,CAM9DqqB,IAAK,WACD,OAAOvmB,KAAKggM,mBAEhBt5K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe44K,EAAahjM,UAAW,OAAQ,CAMlDqqB,IAAK,WACD,OAAOvmB,KAAKogM,WAAWtmH,OAE3BpzD,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe44K,EAAahjM,UAAW,YAAa,CAMvDqqB,IAAK,WACD,OAAOvmB,KAAKogM,YAEhB15K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe44K,EAAahjM,UAAW,yBAA0B,CAMpEqqB,IAAK,WACD,OAAOvmB,KAAKogM,WAAW1N,eAAe9yC,QAE1Cl5H,YAAY,EACZC,cAAc,IAOlBu4K,EAAahjM,UAAUmuC,WAAa,WAC5BrqC,KAAK+/L,UAAYjD,GAAYjT,SAAW7pL,KAAKqgM,gBAC7CrgM,KAAK+/L,QAAUjD,GAAYwD,KAC3BtgM,KAAKugM,kBAETvgM,KAAKqyC,QACLryC,KAAKogM,WAAa,IAAIvhB,GAAU7+K,KAAKigM,QAAQnmH,OAC7C95E,KAAKigM,QAAQ5pB,KAAKr2K,KAAKogM,WAAY,EAAGpgM,KAAKogM,WAAWtmH,QAO1DolH,EAAahjM,UAAUm2C,MAAQ,WAC3BryC,KAAKigM,QAAQlzJ,SAAW,GAO5BmyJ,EAAahjM,UAAUqkM,eAAiB,WACpCvgM,KAAKqyC,QACL,IAAImuJ,EAAU,IAAI3hB,GAAU7+K,KAAKigM,QAAQnmH,OACzC95E,KAAKigM,QAAQ5pB,KAAKmqB,EAAS,EAAGA,EAAQ1mH,OAKtC,IAJA,IAAIl9E,EAAI,EACJ6jM,GAAiB,EAEjB5jM,EAAgC,IAAvB2jM,EAAQvhB,UAAUriL,GAAW4jM,EAAQvhB,UAAUriL,EAAI,GACzDA,EAAI4jM,EAAQ1mH,OAAO,CAEtB,MADAl9E,GAAKC,GACG2jM,EAAQ1mH,OAWX,CACD2mH,GAAiB,EACjB,MAZA,GAAiC,MAA7BD,EAAQvhB,UAAUriL,EAAI,GAGtB,OAFAoD,KAAKkgM,QAAqC,IAA3BM,EAAQvhB,UAAUriL,EAAI,GAAW4jM,EAAQvhB,UAAUriL,EAAI,QACtEoD,KAAKmgM,OAAoC,IAA3BK,EAAQvhB,UAAUriL,EAAI,GAAW4jM,EAAQvhB,UAAUriL,EAAI,IAIrEA,GAAK,EACLC,EAAgC,IAAvB2jM,EAAQvhB,UAAUriL,GAAW4jM,EAAQvhB,UAAUriL,EAAI,GAQpE6jM,IACAzgM,KAAKigM,QAAQlzJ,SAAW,EACxB/sC,KAAKm8F,KAAKn8F,KAAKigM,QAAS,GACxBjgM,KAAK0gM,qBAAqB1gM,KAAKigM,WAIvC/hM,OAAOooB,eAAe44K,EAAahjM,UAAW,SAAU,CAMpDqqB,IAAK,WACD,OAAOvmB,KAAK+/L,SAEhBr5K,YAAY,EACZC,cAAc,IAOlBu4K,EAAahjM,UAAUmkM,YAAc,WACjCrgM,KAAKqyC,QACL,IAAK,IAAIz1C,EAAI,EAAGA,EAAIsiM,EAAayB,YAAY9jM,OAAQD,IAAK,CACtD,GAAIsiM,EAAayB,YAAY/jM,KAAOoD,KAAKigM,QAAQjhB,SAASpiL,GACtD,OAAO,EAEXoD,KAAKigM,QAAQlzJ,WAEjB,OAAO,GAOXmyJ,EAAahjM,UAAU0kM,mBAAqB,WACxC,GAAI5gM,KAAK+/L,UAAYjD,GAAYwD,KAAM,CACbtgM,KAAK6gM,UAAUnO,eAAe71L,OACpDmD,KAAK8gM,YAAc,IAAIjhC,EACvB7/J,KAAK8gM,YAAYz/B,SAAU,EAG3B,IAFA,IAAI/jJ,EAAa,GACbyjL,EAAgB,GACXnkM,EAAI,EAAGA,EAAIoD,KAAKghM,uBAAuBj9C,WAAYnnJ,IACxD0gB,GAAckpE,OAAO49D,aAAa,KAAMpkJ,KAAKigM,QAAQjhB,SAASpiL,IAElE,IAASA,EAAI,EAAGA,EAAI0gB,EAAWzgB,OAAQD,IAC/BA,EAAI,IAAM,IACVmkM,GAAiBzjL,EAAW1gB,IAapC,OAVAoD,KAAK8gM,YAAYjnL,KAAO,CAACknL,GACzB/gM,KAAK8gM,YAAYG,UAAW,EAC5BjhM,KAAK8gM,YAAYnhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBvnJ,KAAM,IAAIg+I,EAAQloJ,KAAKyxJ,qBAAqBjE,UACtGxtJ,KAAK8gM,YAAYnhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBtE,QAAS,IAAIjF,EAAQloJ,KAAKyxJ,qBAAqB/D,QACzG1tJ,KAAK8gM,YAAYnhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB/iH,MAAO,IAAIglH,EAAU1zJ,KAAK0uC,QACpF1uC,KAAK8gM,YAAYnhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB9iH,OAAQ,IAAI+kH,EAAU1zJ,KAAK2uC,SACrF3uC,KAAK8gM,YAAYnhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBhE,iBAAkB,IAAIiG,EAAU1zJ,KAAKytJ,mBAC/FztJ,KAAK8gM,YAAYnhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB/hI,OAAQ,IAAIw4H,EAAQloJ,KAAKyxJ,qBAAqB9D,YACxG3tJ,KAAK8gM,YAAYnhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBnE,WAAY,IAAIpF,EAAQloJ,KAAKkhM,kBACvFlhM,KAAK8gM,YAAYnhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBzE,YAAahtJ,KAAKmhM,mBACrEnhM,KAAK8gM,YAGZ,OAAO9gM,KAAK8gM,aAQpB5B,EAAahjM,UAAUglM,cAAgB,WACnC,OAAOlhM,KAAKyxJ,qBAAqB3D,WAOrCoxC,EAAahjM,UAAUilM,gBAAkB,WACrC,IAAIC,EAAe,IAAIlwC,EAMvB,OALAkwC,EAAazhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB/zF,QAAS,IAAIg2F,EAAU1zJ,KAAK0uC,QAClF0yJ,EAAazhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB7D,SAAU,IAAImvC,IAAW,IAC/EqE,EAAazhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBpjF,EAAG,IAAIqlF,GAAW,IACxE0tC,EAAazhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB5D,UAAW,IAAI6F,EAAU,KAC/E0tC,EAAazhH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBhE,iBAAkB,IAAIiG,EAAU1zJ,KAAKytJ,mBACpF2zC,GAOXlC,EAAahjM,UAAUwkM,qBAAuB,SAAUjhD,GACpDz/I,KAAKigM,QAAUxgD,EAEf,IADA,IAAI4hD,GAAoB,EACjBA,GAAmB,CAEtB,OADarhM,KAAKshM,UAAU7hD,IAExB,KAAKz/I,KAAKm/L,WACV,KAAKn/L,KAAKo/L,WACV,KAAKp/L,KAAKq/L,WACV,KAAKr/L,KAAKs/L,WACV,KAAKt/L,KAAKu/L,WACV,KAAKv/L,KAAKw/L,WACV,KAAKx/L,KAAKy/L,WACV,KAAKz/L,KAAK0/L,YACV,KAAK1/L,KAAK2/L,YACV,KAAK3/L,KAAK4/L,YACV,KAAK5/L,KAAK6/L,YACV,KAAK7/L,KAAK8/L,YACNrgD,EAAO1yG,UAAY,EACnB/sC,KAAKkgM,QAAUlgM,KAAKigM,QAAQpgB,iBAAiBpgC,GAC7Cz/I,KAAKmgM,OAASngM,KAAKigM,QAAQpgB,iBAAiBpgC,GAC5C4hD,GAAoB,EACpB,MACJ,QACIrhM,KAAKuhM,WAAW9hD,MAUhCy/C,EAAahjM,UAAUigG,KAAO,SAAUsjD,EAAQ+hD,GAC5CxhM,KAAKigM,QAAUxgD,EACf,IAAI/uI,EAAO,IAAImuK,GAAU2iB,GACzBxhM,KAAKigM,QAAQ5pB,KAAK3lK,EAAM,EAAGA,EAAKopE,QAOpColH,EAAahjM,UAAUolM,UAAY,SAAU7hD,GACzC,IACIv0F,EAAS,GAGb,IAFAA,EAASu0F,EAAOu/B,SAASh/K,KAAKigM,QAAQlzJ,UACtC0yG,EAAO1yG,WACW,MAAXme,GAEHA,EAASu0F,EAAOu/B,SAASh/K,KAAKigM,QAAQlzJ,UACtC0yG,EAAO1yG,WAEX,GACIme,EAASu0F,EAAOu/B,SAASh/K,KAAKigM,QAAQlzJ,UACtC0yG,EAAO1yG,iBACS,MAAXme,GACT,OAAOA,GAOXg0I,EAAahjM,UAAUqlM,WAAa,SAAU9hD,GAC1C,IAAIgiD,EAAezhM,KAAKigM,QAAQpgB,iBAAiBpgC,GAAU,EACvDgiD,EAAe,IACfhiD,EAAO1yG,UAAY00J,IAQ3BvC,EAAawC,WAAa,CAAC,IAAK,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAMxDxC,EAAayB,YAAc,CAAC,IAAK,KAMjCzB,EAAayC,WAAa,UAM1BzC,EAAa0C,WAAa,MACnB1C,EA1WuB,GGjE9B2C,GAAkC,WAMlC,SAASA,EAAiBC,GACtB9hM,KAAK+hM,wBAAwBD,GAuDjC,OAjDAD,EAAiB3lM,UAAU8lM,aAAe,SAAUxlM,EAAOkkF,EAAMiwB,GAC7D,OAAO3wG,KAAKiiM,kBAAkBjiM,KAAKkiM,gBAAgB1lM,EAAOkkF,GAAOiwB,IAMrEkxF,EAAiB3lM,UAAUgmM,gBAAkB,SAAU1lM,EAAOkkF,GAC1D,IAAIlnE,EAAQknE,EAEZ,OADclkF,EAAQwD,KAAKmiM,YAAY3oL,IAO3CqoL,EAAiB3lM,UAAU+lM,kBAAoB,SAAUzlM,EAAOm0G,GAC5D,IAAIn3F,EAAQm3F,EAEZ,OADcn0G,EAAQwD,KAAKmiM,YAAY3oL,IAO3CqoL,EAAiB3lM,UAAU6lM,wBAA0B,SAAUK,GAC3DpiM,KAAKmiM,YAAc,CACfC,EAAe,KACfA,EAAe,EACf,EACAA,EAAe,GACfA,EACAA,EAAe,IACfA,EAAe,OASvBP,EAAiBQ,qBAAuB,GAMxCR,EAAiBS,mBAAqB,GAC/BT,EA9D2B,GCGlCU,GAA0B,WAC1B,SAASA,KAyFT,OAvFArkM,OAAOooB,eAAei8K,EAASrmM,UAAW,QAAS,CAK/CqqB,IAAK,WACD,OAAOvmB,KAAKwiM,YAEhB/7K,IAAK,SAAUjqB,GACXwD,KAAKwiM,WAAahmM,GAEtBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAei8K,EAASrmM,UAAW,SAAU,CAKhDqqB,IAAK,WACD,OAAOvmB,KAAKyiM,aAEhBh8K,IAAK,SAAUjqB,GACXwD,KAAKyiM,YAAcjmM,GAEvBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAei8K,EAASrmM,UAAW,OAAQ,CAK9CuqB,IAAK,SAAUjqB,GACXwD,KAAK0uC,MAAQlyC,EAAMkyC,MACnB1uC,KAAK2uC,OAASnyC,EAAMmyC,QAExBjoB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAei8K,EAASrmM,UAAW,oBAAqB,CAK3DqqB,IAAK,WAED,OADAvmB,KAAK0iM,uBAAyB1iM,KAAK2iM,aAAa3iM,KAAK0uC,MAAO1uC,KAAK2uC,OAAQ3uC,KAAKqiM,qBAAsBriM,KAAKsiM,oBAClG,IAAIr5B,GAAMjpK,KAAK0uC,MAAO1uC,KAAK2uC,SAEtCjoB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAei8K,EAASrmM,UAAW,UAAW,CAajDqqB,IAAK,WACD,OAAOvmB,KAAK8gM,aAEhBp6K,YAAY,EACZC,cAAc,IAElB47K,EAASrmM,UAAUymM,aAAe,SAAUj0J,EAAOC,EAAQ0zJ,EAAsBC,GAC7E,GAAoC,qBAAzBD,EAAsC,CAC7C,IAAIO,EAAOf,GAAiBQ,qBACxBQ,EAAOhB,GAAiBS,mBAE5B,OADWtiM,KAAK2iM,aAAaj0J,EAAOC,EAAQi0J,EAAMC,GAIlD,IAAIC,EAAM,IAAIjB,GAAiBQ,GAC3BU,EAAM,IAAIlB,GAAiBS,GAC3BU,EAAUF,EAAId,aAAatzJ,EAAOq2H,GAAgBk+B,MAAOl+B,GAAgBm+B,OACzEC,EAAWJ,EAAIf,aAAarzJ,EAAQo2H,GAAgBk+B,MAAOl+B,GAAgBm+B,OAE/E,OADW,IAAIj6B,GAAM+5B,EAASG,IAI/BZ,EA1FmB,GCP1BvlK,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAuCzCgmK,GAA2B,SAAUtlK,GAwBrC,SAASslK,EAAUhkB,GACf,IAAIr/K,EAAQ+9B,EAAOx8B,KAAKtB,OAASA,KAgBjC,OARAD,EAAMsjM,aAAc,EAMpBtjM,EAAM0xJ,qBAAuB,IAAI9E,EACjC5sJ,EAAMujM,UAAUlkB,GACTr/K,EA+BX,OAvEAi9B,GAAUomK,EAAWtlK,GA+CrBslK,EAAUlnM,UAAUonM,UAAY,SAAUlkB,GAC3Bp/K,KAAKujM,gBAAgBnkB,IAMpCgkB,EAAUlnM,UAAUqnM,gBAAkB,SAAUnkB,GAC5C,IAAIte,EAAY,IAAI+d,GAAUO,EAAcviL,QAC5CikK,EAAUoe,sBAAsBE,GAChCp/K,KAAKwjM,QAAU,IAAItE,GAAap+B,GAChC9gK,KAAK2uC,OAAS3uC,KAAKwjM,QAAQ70J,OAC3B3uC,KAAK0uC,MAAQ1uC,KAAKwjM,QAAQ90J,MAE1B1uC,KAAKytJ,iBAAmBztJ,KAAKwjM,QAAQ/1C,kBAMzC21C,EAAUlnM,UAAU23E,KAAO,WACvB7zE,KAAKqjM,aAAc,EACnBrjM,KAAK8gM,YAAc9gM,KAAKwjM,QAAQ5C,sBAE7BwC,EAxEoB,CAyE7Bb,IChHEvlK,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAkCzC2hK,GAA8B,SAAUjhK,GAExC,SAASihK,EAAa0E,GAClB,IAAI1jM,EAAQ+9B,EAAOx8B,KAAKtB,KAAMyjM,IAAmBzjM,KAMjD,OADAD,EAAMsyB,WAAa,IAAI6+H,EAChBnxJ,EAsNX,OA9NAi9B,GAAU+hK,EAAcjhK,GAUxB5/B,OAAOooB,eAAey4K,EAAa7iM,UAAW,QAAS,CAMnDqqB,IAAK,WACD,OAAOvmB,KAAK0jM,YAEhBh9K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAey4K,EAAa7iM,UAAW,WAAY,CAKtDqqB,IAAK,WACD,OAAOvmB,KAAK2/I,aAEhBl5H,IAAK,SAAUjqB,GACXwD,KAAK2/I,YAAcnjJ,GAEvBkqB,YAAY,EACZC,cAAc,IAOlBo4K,EAAa7iM,UAAUgiM,QAAU,SAAU3hM,GACvC,IAAIonM,EAAYpnM,EAAIyE,QAChBoY,EAAO,KAKX,GAJIpZ,KAAKwxB,MAAMuvH,YAAY4iD,KACvBvqL,EAAOpZ,KAAKwxB,MAAMn1B,SAASsnM,IAGnB,MAARvqL,EAAc,CACd,IAAIwqL,EAAQ5jM,KAAK6jM,eACjBzqL,EAAO,IAAI8uI,EAAQ07C,GACnB5jM,KAAKwxB,MAAMz0B,SAAS4mM,EAAWvqL,IAC3B7c,aAAey9K,IAGVz9K,aAAe+hM,IAGf/hM,aAAe4gM,IAAoB5gM,aAAeunM,IAGlDvnM,aAAeqgL,IAGfrgL,aAAegmM,IAAYhmM,aAAe6mM,KAX/CpjM,KAAK2nB,IAAIprB,EAAK6c,GAetB,OAAOA,GAMX2lL,EAAa7iM,UAAUwnM,SAAW,WACT,MAAjB1jM,KAAK+jM,WACL/jM,KAAK+jM,SAAW,IAAItnB,IAExB,IAAIunB,EAAQhkM,KAAK2/E,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBx1G,MAC1D,GAAa,MAAT+nJ,EAAe,CAGF99B,GAAcyC,YAAYq7B,GAE3C,OAAOhkM,KAAK+jM,UAMhBhF,EAAa7iM,UAAU+nM,oBAAsB,SAAUC,GACnD,GAAwB,MAApBA,EACA,MAAM,IAAItjM,MAAM,0CAEpB,IAAIujM,EAAWnkM,KAAK2/E,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBpE,SAC7C,MAAZ82C,IACAA,EAAW,IAAIjwC,EACfl0J,KAAK2/E,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBpE,QAAS82C,IAE3D,IAAI/qL,EAAO,IAAI8uI,EAAQg8C,GAClBC,EAASpzK,SAAS3X,IACnB+qL,EAASx8K,IAAIvO,IAQrB2lL,EAAa7iM,UAAUkoM,WAAa,SAAUhrL,GAG1C,IAFA,IAAIpc,EAAM,KACNC,EAAO+C,KAAK+jM,SAAS9mM,OAChBuc,EAAQ,EAAGA,EAAQxZ,KAAK+jM,SAASlnJ,OAAQrjC,IAC9C,GAAIxZ,KAAK+jM,SAAS1nM,SAASY,EAAKuc,MAAY,IAAI0uI,EAAQ9uI,GAAO,CAC3Dpc,EAAMC,EAAKuc,GACX,MAGG,MAAPxc,GACAgD,KAAK+jM,SAAS17K,OAAOrrB,IAO7B+hM,EAAa7iM,UAAU2nM,aAAe,WAElC,OADWQ,GAAKC,oBAGpBvF,EAAa7iM,UAAUyrB,IAAM,SAAUwhJ,EAAMC,GACzC,GAAID,aAAgB6Q,GAAS,CACzB,IAAI7oB,EAAa,KACb6yC,EAAQhkM,KAAK2/E,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBx1G,MAC1D,GAAa,MAAT+nJ,EAAe,CACf,IAAIviM,EAAYuiM,EAChB7yC,EAAa6yC,EACb7yC,EAAa6yC,OAGb7yC,EAAa,IAAID,EACjBlxJ,KAAK2/E,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBx1G,KAAMk1G,GAExDA,EAAWxxE,MAAM5iF,SAASqsK,EAAK5sK,MAAO,IAAI4kK,EAAmB+H,EAAKnoK,eAEjE,GAAImoK,aAAgBm1B,GAAa,CAClC,IAAIiG,OAAW,EAGC,OAFhBA,EAAWvkM,KAAK2/E,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBjE,YAGrD+2C,EAAW,IAAIrzC,EACflxJ,KAAK2/E,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBjE,QAAS+2C,IAE3DA,EAAS5kH,MAAM5iF,SAASqsK,EAAK5sK,MAAO,IAAI4kK,EAAmB+H,EAAKnoK,eAE/D,GAAImoK,aAAgBsJ,GAAU,CAC/B,GAAItJ,aAAgBg0B,IAAoBh0B,aAAgB26B,GAEpD,GAAe,OADXU,EAAUr7B,EAAKnoK,SACE,CACjB,IAAIsJ,EAAUtK,KAAK2/E,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBnnJ,SAE7C,MAAXA,IACAA,EAAU,IAAI4mJ,EACdlxJ,KAAK2/E,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBnnJ,QAASA,IAE3DA,EAAQq1E,MAAM5iF,SAASqsK,EAAK5sK,MAAO,IAAI4kK,EAAmBojC,UAIjE,GAAIr7B,aAAgByT,GAAiB,CACtC,IAAI4nB,EAAUr7B,EAAKnoK,QACfyjM,EAAW,KAGC,OAFhBA,EAAWzkM,KAAK2/E,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBlE,cAGrDk3C,EAAW,IAAIvzC,EACflxJ,KAAK2/E,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBlE,UAAWk3C,IAE7DA,EAAS9kH,MAAM5iF,SAASqsK,EAAK5sK,MAAO,IAAI4kK,EAAmBojC,QAE1D,CAEGD,EAAWvkM,KAAKigJ,WAAWtgE,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBjE,SAAxE,IACIk3C,OAAiB,EACW,qBAArB1kM,KAAK2/I,cACZ+kD,EAAiB1kM,KAAK2/I,YAAYqmB,SAAShlK,QAAQ2+E,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqB3E,WAAWntE,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBjE,UAEvIxtJ,KAAKigJ,WAAWtgE,MAAM1gC,SAAnC,IACI0lJ,GAAqB,EACrBC,OAAe,EACnB,GAAgC,qBAArB5kM,KAAK2/I,kBAA0D3jJ,WAAnB0oM,GAAkD,MAAlBA,GAIlF,GAAgC,qBAArB1kM,KAAK2/I,YAEjB,IADA,IAAIzgG,EAAWwlJ,EAAe/kH,MAAM1gC,SAC3BriD,EAAI,EAAGA,EAAIsiD,EAASriD,OAAQD,IACN,qBAAhBsiD,EAAStiD,IAAqD,qBAAxBsiD,EAAStiD,GAAGoE,SACrDk+C,EAAStiD,GAAGoE,QAAQ6Y,KAAK,KAAOsvJ,EAAKnoK,QAAQ6Y,KAAK,KAClD+qL,EAAe1lJ,EAAStiD,GACxB+nM,GAAqB,QATjCD,EAAiB,IAAIxzC,EACrBlxJ,KAAK2/I,YAAYqmB,SAAShlK,QAAQ2+E,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqB3E,WAAWntE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBjE,QAASk3C,GAiB5I,GAJgB,MAAZH,IACAA,EAAW,IAAIrzC,EACflxJ,KAAKigJ,WAAWtgE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBjE,QAAS+2C,IAElEI,GAA8C,qBAAjBC,EAC7BL,EAAS5kH,MAAM5iF,SAASqsK,EAAK5sK,MAAOooM,OAEnC,CACGnjM,EAAY,IAAI2/J,EAAmB+H,EAAKnoK,SAC5CujM,EAAS5kH,MAAM5iF,SAASqsK,EAAK5sK,MAAOiF,GACJ,qBAArBzB,KAAK2/I,aACZ+kD,EAAe/kH,MAAM5iF,SAASqsK,EAAK5sK,MAAOiF,MAMnDs9L,EA/NuB,CAgOhC7tC,GAOEmzC,GAAsB,WACtB,SAASA,KAaT,OAPAA,EAAKC,iBAAmB,WACpB,MAAO,uCAAuC5nM,QAAQ,SAAS,SAAUmK,GACrE,IAAIulB,EAAyB,GAAhB5lB,KAAK4lB,SAAgB,EAElC,OADmB,MAANvlB,EAAYulB,EAAmB,EAATA,EAAe,GACpClgB,SAAS,QAGxBm4L,EAde,GCzQtBrnK,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GA0BzC0mK,GAAgC,SAAUhmK,GAM1C,SAASgmK,EAAe36B,EAAMC,GAC1B,IAAIrpK,EAAQ+9B,EAAOx8B,KAAKtB,OAASA,KAKjCD,EAAM8kM,WAAY,EAKlB9kM,EAAM+kM,UAAY,IAAI97B,GAAO,EAAG,GAKhCjpK,EAAMglM,sBAAwB,IAAIp4C,EAClC,IAAIz9G,EAAO,KAmBX,OAlBIi6H,aAAgBM,GAChBv6H,EAAOi6H,EAEFA,aAAgBF,KACrB/5H,EAAO,IAAIu6H,GAAU,EAAG,EAAGN,EAAKz6H,MAAOy6H,EAAKx6H,SAEnC,OAATy6H,GAAiBA,aAAgB47B,KACjCjlM,EAAMklM,MAAQ77B,GAElBrpK,EAAMmlM,YAAc,IAAIrlC,EACxB9/J,EAAMolM,WAAa,IAAIpG,GACvBh/L,EAAMmlM,YAAYvlH,MAAM5iF,SAASgD,EAAMglM,sBAAsBj4C,UAAW/sJ,EAAMolM,YAC9EplM,EAAMqlM,OAAOl2J,GACbnvC,EAAMslM,sBACO,OAATj8B,GAAiBA,aAAgB47B,KACjCjlM,EAAMklM,MAAQ77B,EACdrpK,EAAMo9K,SAAS7vB,WAAa8b,EAAK5oK,SAAS8sJ,YAEvCvtJ,EAqNX,OA9PAi9B,GAAU8mK,EAAgBhmK,GAmD1BgmK,EAAe5nM,UAAUmuC,WAAa,SAAUwmC,EAAWkrB,EAAMn0D,EAAUyoH,GACvErwJ,KAAKilM,MAAQlpG,EACb/7F,KAAK8kM,UAAYl9J,EACjB5nC,KAAKslM,sBAAwBj1C,EAC7BrwJ,KAAKulM,gBAAkBvlM,KAAKklM,YAC5BllM,KAAKklM,YAAc,IAAIrlC,EACvB,IAAI2lC,EAAe,IAAIzG,GAIvB,OAHA/+L,KAAKklM,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsBj4C,UAAW04C,GACtExlM,KAAKolM,OAAOv0H,GACZ7wE,KAAKqlM,sBACErlM,MAEX9B,OAAOooB,eAAew9K,EAAe5nM,UAAW,WAAY,CAMxDqqB,IAAK,WACD,OAAOvmB,KAAK8kM,WAEhBr+K,IAAK,SAAUjqB,GACXwD,KAAK8kM,UAAYtoM,GAErBkqB,YAAY,EACZC,cAAc,IAMlBm9K,EAAe5nM,UAAUmpM,oBAAsB,WAS3C,GARArlM,KAAKklM,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsBl0C,YAAa,IAAI6C,EAAU,IAEtF1zJ,KAAKklM,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsBj0C,UAAW,IAAI4C,EAAU,IAEpF1zJ,KAAKklM,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsBh0C,WAAY,IAAI2C,EAAU,IAErF1zJ,KAAKklM,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsB/zC,MAAO,IAAI0C,EAAW1zJ,KAAKylM,KAAK/jK,MAAQ1hC,KAAKylM,KAAKhkK,OAC7GzhC,KAAKklM,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsB9zC,MAAO,IAAIyC,EAAW1zJ,KAAKylM,KAAK7jK,OAAS5hC,KAAKylM,KAAK9jK,MAC3F,MAAd3hC,KAAKilM,OAAqC,MAAlBjlM,KAAK8kM,UAC9B,GAAmC,MAA9B9kM,KAAKslM,uBAAuE,qBAA/BtlM,KAAKslM,sBAAwC,CAE3F,IAAII,EAAiB1lM,KAAKilM,MAAMpoJ,KAAKlO,OAAS3uC,KAAK6wE,UAAUh0B,KAAKlO,OAAW3uC,KAAK8kM,UAAUzvL,EAE5FrV,KAAKklM,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsB10C,OAAQ,IAAI6D,EAAS,CAAC,EAAG,EAAG,EAAG,EAAGl0J,KAAK8kM,UAAU3kL,EAAGulL,SAE9G,CACGA,EAAgB,EAApB,IAEInxK,EAAWv0B,KAAKslM,sBAAsBj1C,OAAO97H,SAE7CmxK,EADC1lM,KAAKilM,MAAMpoJ,KAAKlO,OAAS3uC,KAAK6wE,UAAUh0B,KAAKlO,OAC7B3uC,KAAKslM,sBAAsBj1C,OAAOhvH,QAC5CrhC,KAAKilM,MAAMpoJ,KAAKlO,OAAS3uC,KAAK6wE,UAAUh0B,KAAKlO,OAGlC3uC,KAAKilM,MAAMpoJ,KAAKlO,OAAS3uC,KAAK6wE,UAAUh0B,KAAKlO,OAAU3uC,KAAKslM,sBAAsBj1C,OAAOhvH,QAE/GrhC,KAAKklM,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsB10C,OAAQ,IAAI6D,EAAS,CAC5E3/H,EAAS,GAAIA,EAAS,GAAIA,EAAS,GAAIA,EAAS,GAAIA,EAAS,GAAImxK,OASjF5B,EAAe5nM,UAAUkpM,OAAS,SAAUhpJ,GACxCp8C,KAAKylM,KAAOrpJ,EACZ,IAAIlN,EAAO,IAAIg6H,GAAWlpK,KAAKylM,KAAKhkK,KAAMzhC,KAAKylM,KAAK9jK,IAAK3hC,KAAKylM,KAAK/jK,MAAO1hC,KAAKylM,KAAK7jK,QACpF5hC,KAAKklM,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsBx2C,KAAM2F,EAASe,cAAc/lH,KAE5FhxC,OAAOooB,eAAew9K,EAAe5nM,UAAW,YAAa,CAMzDqqB,IAAK,WACD,OAAOvmB,KAAKylM,MAEhB/+K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAew9K,EAAe5nM,UAAW,OAAQ,CAKpDqqB,IAAK,WACD,OAAOvmB,KAAKylM,KAAK5oJ,MAErBn2B,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAew9K,EAAe5nM,UAAW,WAAY,CAIxDqqB,IAAK,WACD,GAAuB,MAAlBvmB,KAAK2lM,WAA+C,qBAAnB3lM,KAAK2lM,UAA4B,CACnE,IAAIhH,EAAK,IAAIC,GAAwB5+L,MACjC4tD,EAAI,IAAIixI,GAAY7+L,KAAK68C,KAAM8hJ,EAAI3+L,KAAKklM,aAC5CllM,KAAK2lM,UAAY/3I,EACjB5tD,KAAKmlM,WAAanlM,KAAK8yK,eACvB9yK,KAAK2lM,UAAU7G,wBAEnB,OAAO9+L,KAAK2lM,WAEhBj/K,YAAY,EACZC,cAAc,IAMlBm9K,EAAe5nM,UAAU42K,aAAe,WACpC,OAAO9yK,KAAKmlM,YAEhBjnM,OAAOooB,eAAew9K,EAAe5nM,UAAW,WAAY,CAKxDqqB,IAAK,WACD,OAAOvmB,KAAK6kM,WAEhBp+K,IAAK,SAAUjqB,GACXwD,KAAK6kM,UAAYroM,GAErBkqB,YAAY,EACZC,cAAc,IAOlBm9K,EAAe5nM,UAAU+C,MAAQ,WAC7B,IAAI4zK,EAAQ7yK,KAAKqqC,WAAWrqC,KAAK6wE,UAAW7wE,KAAKilM,MAAOjlM,KAAK4nC,SAAU5nC,KAAKslM,uBAQ5E,OAPmC,MAA9BtlM,KAAKslM,uBAAwE,MAArCtlM,KAAKslM,sBAAsBj1C,QAEpEwiB,EAAMqyB,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsB10C,OAAQ,IAAI6D,EAASl0J,KAAKslM,sBAAsBj1C,OAAO97H,WAEvHs+I,EAAMqyB,YAAYrrL,KAAO7Z,KAAKulM,gBAAgB1rL,KAC9Cg5J,EAAMsyB,WAAa,IAAIpG,GAAa/+L,KAAKmlM,YACzCtyB,EAAMqyB,YAAYvlH,MAAM5iF,SAASiD,KAAK+kM,sBAAsBj4C,UAAW+lB,EAAMsyB,YACtEtyB,GAWXixB,EAAe5nM,UAAU02K,eAAiB,SAAUC,EAAOnzB,EAAcozB,EAAcr6I,EAAas6I,GAChG,IAAI/yJ,GAAO,EACX,GAAI6yJ,IAAU7yK,KAAM,CAEhB0/I,EAAaivB,cAAc,UAAW3uK,KAAK6kM,WAE3C,IACIe,EADa9yB,EAAaA,eACPorB,QAAQl+L,MAC/B0/I,EAAauwB,qBAAqB,KAAM21B,EAAO5lM,KAAK6kM,WACpD7kL,GAAO,OAEN,GAAI6yJ,aAAiBixB,EAAgB,CAEtCpkD,EAAaivB,cAAc,UAAW3uK,KAAK6kM,WAE3C,IACI5G,EADYnrB,EAAaA,eACNorB,QAAQl+L,MAC/B0/I,EAAauwB,qBAAqB,KAAMguB,EAAQj+L,KAAK6kM,WACrD7kL,GAAO,EAEX,OAAOA,GAOX8jL,EAAe5nM,UAAU82K,aAAe,SAAUtzB,KAIlDxhJ,OAAOooB,eAAew9K,EAAe5nM,UAAW,UAAW,CAOvDqqB,IAAK,WACD,OAAOvmB,KAAKklM,aAEhBx+K,YAAY,EACZC,cAAc,IAEXm9K,EA/PyB,CAgQlCrxB,ICnOEosB,GAA6B,WAC7B,SAASA,EAAY11B,EAAMC,EAAMC,GAK7BrpK,KAAK+yK,kBAAoBlO,GAAciN,IAKvC9xK,KAAK6lM,0BAA4BrhC,GAAkBshC,KAKnD9lM,KAAK+lM,yBAA2B,EAKhC/lM,KAAKgmM,oBAAsB,EAK3BhmM,KAAKimM,oBAAsB,IAK3BjmM,KAAKkmM,cAAgB,IAAI9pB,GAMzBp8K,KAAKmmM,gBAAiB,EAMtBnmM,KAAKomM,eAAgB,EAMrBpmM,KAAK40L,UAAW,EAMhB50L,KAAKqmM,iBAAkB,EAMvBrmM,KAAKsmM,OAAQ,EAMbtmM,KAAKumM,WAAY,EAMjBvmM,KAAKwmM,kBAAmB,EAKxBxmM,KAAKymM,iBAAmB,IAAIx9B,GAAM,EAAG,GAKrCjpK,KAAK0mM,mBAAoB,EAKzB1mM,KAAKyxJ,qBAAuB,IAAI9E,EAMhC3sJ,KAAK42K,wBAAyB,EAM9B52K,KAAK2mM,iBAAkB,EAMvB3mM,KAAK4mM,mBAAqB,CAAC,MAAO,OAAQ,YAAa,WAMvD5mM,KAAK6mM,kBAAmB,EAKxB7mM,KAAK8mM,cAAgB,GAMrB9mM,KAAK+mM,mBAAoB,EAMzB/mM,KAAKgnM,wBAA0B,KAK/BhnM,KAAKinM,eAAiB,EACtBjnM,KAAK8yK,aAAe1J,EACpBppK,KAAKknM,WAAa/9B,EAEdnpK,KAAKmnM,gBADL99B,aAAgB6D,GACO7D,EAGA,IAAI6D,GAAgB7D,GAE/CrpK,KAAKqqC,aAkiDT,OAhiDAnsC,OAAOooB,eAAeu4K,EAAY3iM,UAAW,qBAAsB,CAM/DqqB,IAAK,WACD,OAAOvmB,KAAKonM,uBAEhB1gL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeu4K,EAAY3iM,UAAW,OAAQ,CAKjDqqB,IAAK,WACD,OAAOvmB,KAAKknM,YAEhBxgL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeu4K,EAAY3iM,UAAW,0BAA2B,CAKpEqqB,IAAK,WAID,MAHoD,qBAAzCvmB,KAAKqnM,kCACZrnM,KAAKqnM,gCAAkC,GAEpCrnM,KAAKqnM,iCAEhB5gL,IAAK,SAAUjqB,GACXwD,KAAKqnM,gCAAkC7qM,GAE3CkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeu4K,EAAY3iM,UAAW,aAAc,CAKvDqqB,IAAK,WACD,OAAO,IAAI0iJ,GAAMjpK,KAAK26E,WAAWjsC,MAAO1uC,KAAK26E,WAAWhsC,SAE5DjoB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeu4K,EAAY3iM,UAAW,aAAc,CAKvDqqB,IAAK,WACD,OAAOvmB,KAAK+yK,mBAEhBtsJ,IAAK,SAAUjqB,GACXwD,KAAK+yK,kBAAoBv2K,GAE7BkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeu4K,EAAY3iM,UAAW,eAAgB,CAKzDqqB,IAAK,WACD,OAAOvmB,KAAKmnM,iBAEhBzgL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeu4K,EAAY3iM,UAAW,SAAU,CAKnDqqB,IAAK,WAID,OAHiC,MAA7BvmB,KAAKy7K,uBACLz7K,KAAKy7K,qBAAuB,IAAIF,IAE7Bv7K,KAAKy7K,sBAEhB/0J,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeu4K,EAAY3iM,UAAW,QAAS,CAKlDqqB,IAAK,WACD,OAAOvmB,KAAKsnM,WAEhB5gL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeu4K,EAAY3iM,UAAW,OAAQ,CAKjDqqB,IAAK,WACD,OAAOvmB,KAAKsnM,UAAUvrG,MAE1Br1E,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeu4K,EAAY3iM,UAAW,kBAAmB,CAC5DqqB,IAAK,WAID,OAHoC,MAAhCvmB,KAAKgnM,yBAA2E,qBAAjChnM,KAAKgnM,0BACpDhnM,KAAKgnM,wBAA0B,IAAInqB,IAEhC78K,KAAKgnM,yBAEhBtgL,YAAY,EACZC,cAAc,IAOlBk4K,EAAY3iM,UAAUmuC,WAAa,WAC/BrqC,KAAKunM,aAAc,EACnBvnM,KAAKk0K,WAAa,KAClBl0K,KAAKwnM,aAAe,KACpBxnM,KAAKynM,YAAc,KACnBznM,KAAK+yK,kBAAoBlO,GAAciN,IACvC9xK,KAAK0nM,gBAAiB,EACtB1nM,KAAKy7K,qBAAuB,KAC5Bz7K,KAAK6lM,2BAA8B,EACnC7lM,KAAK+lM,0BAA4B,EACjC/lM,KAAKgmM,qBAAuB,EAC5BhmM,KAAKimM,qBAAuB,IAE5BjmM,KAAK2nM,oBAAsB,KAC3B3nM,KAAK26E,WAAa,IAAIuuF,GAAW,IAAIF,GAAO,EAAG,GAAIhpK,KAAK68C,MACxD78C,KAAK8yK,aAAaA,eAAemxB,oBAAoBjkM,KAAKkmM,cAAc7pB,MAE5EwiB,EAAY3iM,UAAU0rM,gBAAkB,SAAU19K,EAAU0d,EAAUiV,GAClE,GAAoB,qBAATA,EAAsB,CAC7B,GAAgB,MAAZ3yB,EACA,MAAMtpB,MAAM,kCAEhBZ,KAAK4nM,gBAAgB19K,EAAU0d,EAAU1d,EAAS2yB,UAEjD,CAKD,GAAgB,MAAZ3yB,EACA,MAAMtpB,MAAM,kCAEhB,IAAIk1E,EAAU5rD,EAASwkB,MAAQ,EAAKmO,EAAKnO,MAAQxkB,EAASwkB,MAAQ,EAC9DqnC,EAAU7rD,EAASykB,OAAS,EAAKkO,EAAKlO,OAASzkB,EAASykB,OAAS,EACjEk5J,IAA0B,IAAX/xH,GAA2B,IAAXC,GAE/BzJ,EAAQtsE,KAAK6zE,OAEbw8E,EAAS,IAAIkrB,GACK,MAAlBv7K,KAAKsnM,WACLtnM,KAAK8nM,sBAAsBlgK,EAASznB,EAAGynB,EAASvyB,EAAIwnC,EAAKlO,OAAQ0hH,GAEjEw3C,GACA7nM,KAAK+nM,kBAAkBjyH,EAAQC,EAAQs6E,GAE3CrwJ,KAAKmnM,gBAAgB78C,UAAU+F,GAE/B,IACI4tC,EADYj+L,KAAK8yK,aAAaA,eACXorB,QAAQh0K,GAC/BlqB,KAAKmnM,gBAAgB95B,cAAc4wB,GAEnCj+L,KAAKi0E,QAAQ3H,GAEb,IAAI1e,EAAI1jC,EAASizJ,SACjB,GAAS,MAALvvH,EACA,IAAK,IAAIp0C,EAAQ,EAAGA,EAAQo0C,EAAEovH,gBAAgBA,gBAAgBngL,OAAQ2c,IAAS,CAC3E,IAAIujK,EAAYnvH,EAAEovH,gBAAgBA,gBAAgBxjK,GAC9CwuL,EAAc,IAAIh/B,GAAO+T,EAAUn1I,SAASznB,EAAIynB,EAASznB,EAAG48J,EAAUn1I,SAASvyB,EAAIuyB,EAASvyB,GAC5F2oK,EAAkC,GAAvB9zJ,EAAS2yB,KAAKnO,MAAa,EAAImO,EAAKnO,MAAQxkB,EAAS2yB,KAAKnO,MACrEuvI,EAAmC,GAAxB/zJ,EAAS2yB,KAAKlO,OAAc,EAAIkO,EAAKlO,OAASzkB,EAAS2yB,KAAKlO,OAC3E3uC,KAAKg9K,gBAAgBr1J,IAAI,IAAI22J,GAAsBvB,EAAUp/G,MAAOqqI,EAAahqB,EAAUC,IAC3Fj+K,KAAK+7F,KAAKo1D,WAAWc,SAG7BjyJ,KAAK8yK,aAAaA,eAAemxB,oBAAoBjkM,KAAKkmM,cAAc5pB,QACxEt8K,KAAK8yK,aAAaA,eAAemxB,oBAAoBjkM,KAAKkmM,cAAc3pB,QACxEv8K,KAAK8yK,aAAaA,eAAemxB,oBAAoBjkM,KAAKkmM,cAAc1pB,QACxEx8K,KAAK8yK,aAAaA,eAAemxB,oBAAoBjkM,KAAKkmM,cAAc50L,QAOhFutL,EAAY3iM,UAAU+rM,WAAa,SAAU9+B,EAAMC,EAAMC,EAAMC,EAAMyG,EAAMC,EAAM8G,EAAMoxB,EAAMC,GACzF,GAAoB,kBAATh/B,GAAqBC,aAAgB4Q,KAAY3Q,aAAgB4J,IAAmB,OAAT5J,KAAmBC,aAAgBmJ,IAAqB,OAATnJ,IAAkC,kBAATyG,GAAqC,kBAATC,IAAsB8G,aAAgBpC,IAA4B,OAAToC,IAAkC,qBAAToxB,EACxQloM,KAAK42K,wBAAyB,EAC9B52K,KAAKioM,WAAW9+B,EAAMC,EAAMC,EAAMC,EAAMyG,EAAMC,EAAOhwK,KAAK+2K,WAAWroI,MAAQqhI,EAAO,EAAG+G,OAEtF,CACD,IAAI8D,EAAWvR,EACX++B,EAAW9+B,EACX++B,EAAWt4B,EACXu4B,EAAWt4B,EACXu4B,EAAWzxB,EACX0xB,EAAWN,EACXO,EAAWN,EAEXxpM,GADW,IAAIg4K,IACGE,OAAO1N,EAAMC,EAAMq/B,EAAU,IAAIx/B,GAAMs/B,EAAUC,GAAWxoM,KAAK42K,uBAAwB52K,KAAK+2K,YACpH,IAAKp4K,EAAOi7K,MAAO,CACf,IAAI1qI,EAAOlvC,KAAK0oM,4BAA4B/pM,EAAO26K,WAAY+uB,EAAUC,EAAUG,GAC/EF,GAAY,IACZF,EAAWn5J,EAAK/uB,EAChBooL,EAAWr5J,EAAKR,OAEhB85J,GAAY,IACZF,EAAWp5J,EAAK75B,EAChBmzL,EAAWt5J,EAAKP,QAEpB3uC,KAAK2oM,uBAAuBhqM,EAAQyqK,EAAMwR,EAAUwtB,EAAU,IAAIl/B,GAAWm/B,EAAUC,EAAUC,EAAUC,GAAWC,GACtHzoM,KAAKqmM,iBAAkB,EACvBrmM,KAAKymM,iBAAmB,IAAIx9B,GAAM,EAAG,GAEzCjpK,KAAK8yK,aAAaA,eAAemxB,oBAAoBjkM,KAAKkmM,cAAc50L,MACxEtR,KAAKmmM,gBAAiB,EACtBnmM,KAAKonM,sBAAwBzoM,EAC7BqB,KAAKomM,eAAgB,IAG7BvH,EAAY3iM,UAAUw0E,SAAW,SAAUy4F,EAAMC,EAAMC,EAAMC,EAAMyG,GAC/D,GAAI3G,aAAgBJ,GAAQ,CACxB,IAAI8F,EAAW1F,EACXwR,EAAWvR,EACfrpK,KAAK0wE,SAASy4F,EAAM2F,EAAS3uJ,EAAG2uJ,EAASz5J,EAAGulK,EAASz6J,EAAGy6J,EAASvlK,OAEhE,CACGy5J,EAAW1F,EACXwR,EAAWvR,EADf,IAEI++B,EAAW9+B,EACX++B,EAAWt4B,EACf/vK,KAAK4oM,aAAaz/B,EAAM,KAAM,MAC9B,IAAInI,EAAKhhK,KAAK0/I,aACdshB,EAAGltF,UAAUg7F,EAAU8L,GACvB5Z,EAAGnX,kBAAkBu+C,EAAUC,GAC/BrnC,EAAG2M,aACH3tK,KAAK8yK,aAAaA,eAAemxB,oBAAoBjkM,KAAKkmM,cAAc7pB,OAIhFwiB,EAAY3iM,UAAU00E,cAAgB,SAAUu4F,EAAMC,EAAMC,EAAMC,EAAMyG,EAAMC,GAC1E,GAAI7G,aAAgB8J,IAA0B,kBAAT7J,EAAmB,CACpD,IAAIwR,EAAWvR,EACfrpK,KAAK4wE,cAAcu4F,EAAM,KAAMC,EAAMwR,EAAUtR,EAAMyG,QAEpD,GAAI5G,aAAgBsJ,IAA4B,kBAATrJ,EAAmB,CACvDwR,EAAWvR,EACfrpK,KAAK4wE,cAAc,KAAMu4F,EAAMC,EAAMwR,EAAUtR,EAAMyG,OAEpD,CACG6K,EAAWvR,EAAf,IACI++B,EAAW9+B,EACX++B,EAAWt4B,EACXu4B,EAAWt4B,EACf,GAAK5G,aAAgB06B,GAAiB,CAClC9jM,KAAK0nM,gBAAiB,EACtB,IAAImB,EAAW7oM,KAAKqwJ,OAAOA,OAAOpvH,QAAU25I,EACxCkuB,OAAU,EAEVA,EADgB,MAAd9oM,KAAK+oM,OAAsC,MAAnB/oM,KAAK+oM,MAAMhtG,KACzB/7F,KAAK+oM,MAAMhtG,KAAKl/C,KAAKlO,OAAS3uC,KAAKqwJ,OAAOA,OAAOhvH,QAAW+mK,EAG5DpoM,KAAK+2K,WAAWpoI,OAAS3uC,KAAKqwJ,OAAOA,OAAOhvH,QAAW+mK,EAEtEh/B,EAAMxhI,SAAW,IAAIohI,GAAO6/B,EAASC,GACrC1/B,EAAM+T,SAAS7vB,WAAattJ,KAAKstJ,gBAE5B8b,aAAgB+zB,KACtB/zB,EAAK9b,WAAattJ,KAAKstJ,YAEvB8b,aAAgBsJ,IAAiBtJ,EAAKllH,MAAMh3B,UAC5Ck8I,EAAO,MAEX,IAAIwF,EAAWzF,EACX2F,EAAW1F,EACfppK,KAAK4oM,aAAah6B,EAAUE,EAAU,MACtC9uK,KAAK0/I,aAAawK,gBAAgB0wB,EAAUwtB,EAAUC,EAAUC,GAChEtoM,KAAKgpM,eAAep6B,EAAUE,GAAU,KAGhD+vB,EAAY3iM,UAAU8sM,eAAiB,SAAU7/B,EAAMC,EAAMC,EAAMC,GAC/D,GAAoB,mBAATD,EAAoB,CAC3B,IAAIuR,EAAWvR,EACfrpK,KAAKgpM,eAAe7/B,EAAMC,EAAMxE,GAAYqkC,QAASruB,OAEpD,CACD,IAEIsuB,EAAgB,MAAR//B,EACRggC,EAAkB,MAAR//B,EACVggC,GAJAxuB,EAAWvR,KAIezE,GAAYykC,UACtCH,GAASC,EACTnpM,KAAK0/I,aAAa6tB,eAAe67B,GAE3BF,GAAUC,EAGXD,EACLlpM,KAAK0/I,aAAaiuB,aAGlB3tK,KAAK0/I,aAAa8tB,SAAS47B,GAN3BppM,KAAK0/I,aAAan5F,YAW9Bs4I,EAAY3iM,UAAUm1E,UAAY,SAAU83F,EAAMC,EAAMC,EAAMC,EAAMyG,GAChE,GAAoB,kBAAT3G,GAAqC,kBAATC,GAAqC,qBAATC,EAAsB,CACrF,IAAIzsH,EAAOssH,EAAKmgC,kBAChBtpM,KAAKqxE,UAAU83F,EAAMC,EAAMC,EAAMxsH,EAAKnO,MAAOmO,EAAKlO,YAEjD,CACD,IAAImgI,EAAW1F,EACXwR,EAAWvR,EAEXg/B,EAAWt4B,EACf5G,EAAKt1F,OACL,IAAIw8E,EAAS,IAAIkrB,GACjBv7K,KAAK8nM,sBAAsBh5B,EAAW8L,EAAWytB,EAAWh4C,GAC5DrwJ,KAAK+nM,kBAAkBz+B,EAAMyG,EAAM1f,GACnCrwJ,KAAKmnM,gBAAgBnlM,MAAM,KAC3BhC,KAAKmnM,gBAAgB78C,UAAU+F,GAE/B,IAAIvD,EAAY9sJ,KAAK8yK,aAAaA,eACJ,qBAAnB9yK,KAAKsnM,WAA0C,MAAbtnM,KAAK+7F,OAC9C+wD,EAAUtsJ,SAAWR,KAAK+7F,KAAKv7F,UAEnC,IAAI+oM,EAASz8C,EAAUoxC,QAAQ/0B,GACD,qBAAnBnpK,KAAKsnM,WACZtnM,KAAK+7F,KAAKytG,aAAa18C,GAE3B9sJ,KAAKmnM,gBAAgB95B,cAAck8B,GACnCvpM,KAAKmnM,gBAAgBnlM,MAAMknJ,EAAUkB,cACrCpqJ,KAAKmnM,gBAAgBnlM,MAAMknJ,EAAUG,SACrC,IAAIogD,EAAWzpM,KAAK8yK,aAAaA,eACjC22B,EAASxF,oBAAoBjkM,KAAKkmM,cAAc5pB,QAChDmtB,EAASxF,oBAAoBjkM,KAAKkmM,cAAc3pB,QAChDktB,EAASxF,oBAAoBjkM,KAAKkmM,cAAc1pB,QAChDitB,EAASxF,oBAAoBjkM,KAAKkmM,cAAc50L,QASxDutL,EAAY3iM,UAAUwtM,cAAgB,SAAUC,EAAWhrM,EAAQs9C,EAAM2tJ,EAAiB7/L,GACtF,IAAIs6C,EACJ,IAAK1lD,EAAOi7K,OAAS+vB,EAAYhrM,EAAOkrM,WAAaF,GAAa,EAAG,CACjE,IAAIh5H,EAAOhyE,EAAOk9E,MAAM8tH,GAEpBt0L,EADSrV,KAAK8pM,0BAA0BnrM,EAAO26K,WAAW3qI,OAAQi7J,EAAgBj7J,OAAQ5kC,GAC7E6/L,EAAgBv0L,EAAK1W,EAAOu4E,WAAayyH,EACtDl2H,EAAY9C,EAAKjiC,MACjBq7J,EAAS/pM,KAAKgqM,wBAAwBv2H,EAAWm2H,EAAgBl7J,MAAO3kC,GACxEutK,EAAat3K,KAAKu3K,cAAc5mG,EAAM5mE,EAAQ6/L,EAAgC,IAAdD,GACpEI,GAAY/pM,KAAKsa,YAAYvQ,GAAwB,EAAbutK,EACxC,IAAIn3J,EAAIypL,EAAgBzpL,EAAI4pL,EAExBr7J,EAAU1uC,KAAKiqM,cAAct5H,EAAMi5H,EAAgBl7J,MAAO3kC,GAAoC6/L,EAAgBl7J,MAAQ4oI,EAAjD7jG,EAAY6jG,EACjF3oI,EAAShwC,EAAOu4E,WACpB7yB,EAAS,IAAI6kH,GAAW/oJ,EAAG9K,EAAGq5B,EAAOC,QAGrC0V,EAAS,IAAI6kH,GAAW,EAAG,EAAG,EAAG,GAErC,OAAO7kH,GAMXw6I,EAAY3iM,UAAUwsM,4BAA8B,SAAUtyE,EAAUj2G,EAAG9K,EAAGtL,GAC1E,IAAImgM,EAAoB,IAAIhhC,GAAW/oJ,EAAG9K,EAAG+gH,EAAS1nF,MAAO0nF,EAAS1nF,OACtE,GAAc,MAAV3kC,EAAgB,CAChB,OAAQA,EAAO4qH,WACX,KAAK4vC,EAAiB4lC,OAClBD,EAAkB/pL,GAAK+pL,EAAkBx7J,MAAQ,EACjD,MACJ,KAAK61H,EAAiB6lC,MAClBF,EAAkB/pL,GAAK+pL,EAAkBx7J,MAGjD,OAAQ3kC,EAAOsgM,eACX,KAAK/lC,EAAqBgmC,OACtBJ,EAAkB70L,GAAK60L,EAAkBv7J,OAAS,EAClD,MACJ,KAAK21H,EAAqBimC,OACtBL,EAAkB70L,GAAK60L,EAAkBv7J,QAIrD,OAAOu7J,GAMXrL,EAAY3iM,UAAUsuM,SAAW,SAAUzB,GACvC/oM,KAAKsnM,UAAYyB,EACjB,IAAIhtG,EAAOgtG,EAAMhtG,KACL,MAARA,GAAgC,qBAATA,IACvBA,EAAKu2D,UAAYtyJ,KAAKyqM,WAQ9B5L,EAAY3iM,UAAUuuM,SAAW,SAAU1uG,GACvC,GAAqC,MAAjCA,EAAKohF,SAASH,gBACd,IAAK,IAAIpgL,EAAI,EAAGA,EAAIm/F,EAAKohF,SAASH,gBAAgBA,gBAAgBngL,OAAQD,IAAK,CAC3E,IAAImgL,EAAYhhF,EAAKohF,SAASH,gBAAgBA,gBAAgBpgL,GAC9DmgL,EAAUp/G,MAAM+sI,YAAY3uG,EAAKohF,SAAUJ,EAAUn1I,SAAUm1I,EAAUiB,SAAUjB,EAAUkB,YAQzG4gB,EAAY3iM,UAAUysM,uBAAyB,SAAUhqM,EAAQs9C,EAAMq4H,EAAKzB,EAAO+2B,EAAiB7/L,GAChG,GAAKpL,EAAOi7K,MAsCR,MAAM,IAAIh5K,MAAM,gCArChBZ,KAAK2qM,oBAAoB1uJ,EAAMq4H,EAAKzB,EAAO9oK,EAAQ6/L,GAEnD,IAAIl8B,EAAyB,MAAV3jK,EAAkBA,EAAO6gM,wBAA0B,IAClEl9B,IAAgB1tK,KAAKimM,qBAAwBjmM,KAAKqmM,kBAClDrmM,KAAKmnM,gBAAgB77C,eAAeoiB,GACpC1tK,KAAKimM,oBAAsBv4B,GAE/B,IAEIhlJ,EAFAimB,EAAoB,MAAV5kC,GAAyC,IAAvBA,EAAOkuK,YAAqBh8H,EAAKtN,OAAS5kC,EAAOkuK,YAAch8H,EAAKtN,OAGpGjmB,EAF2B,MAAV3e,GAAkBA,EAAOunL,iBAAmBhsB,GAAkBisB,UAEzD5iJ,GAAUsN,EAAKtN,OAASsN,EAAKi+H,QAAQgX,WAAWnnL,IAAY4kC,EAASsN,EAAKi+H,QAAQ+W,UAAUlnL,GAClH/J,KAAK0oB,MAAQA,EACb1oB,KAAKmnM,gBAAgBr5B,cAAc87B,EAAgBzpL,EAAGypL,EAAgBv0L,EAAIqT,GAC1E1oB,KAAKmnM,gBAAgBh5B,YAAYx/H,GAGjC,IAFA,IAAIk8J,EAAe,EACfC,EAAkB,GACbluM,EAAI,EAAGA,EAAI+B,EAAOk9E,MAAMh/E,OAAQD,IAErC,GADAiuM,GAAgBlsM,EAAOu4E,WAClB0yH,EAAgBv0L,EAAIw1L,EAAgB7qM,KAAK+2K,WAAWpoI,OAAQ,CAC7D3uC,KAAKinM,cAAgBrqM,EACrB,MAGR,IAAK,IAAIuK,EAAInH,KAAKinM,cAAgB9/L,EAAIxI,EAAOk9E,MAAMh/E,QAAUsK,GAAK,EAAIA,IAClE2jM,GAAmBnsM,EAAOk9E,MAAM10E,GAAGmK,KAEvC,IAAI+yC,EAAS,IAAI6kH,GAAW0gC,EAAgBzpL,EAAGypL,EAAgBv0L,EAAGu0L,EAAgBl7J,MAAOk7J,EAAgBj7J,QACzG3uC,KAAK+qM,iBAAiBpsM,EAAQs9C,EAAMlyC,EAAQ6/L,GAC5C5pM,KAAKgrM,uBAAuB12B,EAAKzB,EAAOl0K,EAAQs9C,EAAMoI,EAAQt6C,GAC9D/J,KAAKumM,WAAY,EACjBvmM,KAAKomM,eAAgB,GACO,IAAxBpmM,KAAKinM,eACMjnM,KAAKirM,cACX9tB,SAAS8qB,WAAW6C,EAAiB7uJ,EAAMq4H,EAAKzB,EAAO+2B,EAAgBzpL,EAAG,EAAGypL,EAAgBl7J,MAAO,EAAG3kC,IAWxH80L,EAAY3iM,UAAU+uM,YAAc,WAChC,IAAIC,EAAUlrM,KAAKsrE,YAAY4/H,QAE3B1xL,EAAQ0xL,EAAQ/sM,QAAQ6B,KAAKsrE,aAOjC,OANI9xD,IAAU0xL,EAAQpxH,MAAQ,EACfoxH,EAAQvjL,MAGRujL,EAAQC,WAAW3xL,EAAQ,IAI9CqlL,EAAY3iM,UAAUkvM,QAAU,SAAUv6H,EAAW9zD,GAC7B,qBAATA,EACP/c,KAAKorM,QAAQv6H,EAAW+zF,GAAYqkC,UAGpCjpM,KAAKmnM,gBAAgBj9C,gBAAgBr5E,GACrC7wE,KAAKmnM,gBAAgBzgJ,SAAU3pC,IAAS6nJ,GAAYykC,aAO5DxK,EAAY3iM,UAAUyuM,oBAAsB,SAAU1uJ,EAAMq4H,EAAKzB,EAAO9oK,EAAQs6C,GACxEwuH,aAAiBixB,IACjB9jM,KAAK0nM,gBAAiB,EACtB70B,EAAMsK,SAAS7vB,WAAattJ,KAAKstJ,YAE3BulB,aAAiBsqB,KACvBn9L,KAAK0nM,gBAAiB,EACtB70B,EAAMvlB,WAAattJ,KAAKstJ,YAE5B,IACI+9C,EAAKrrM,KAAKsrM,qBAAqBh3B,EAAKzB,EAAO9oK,GAC/C/J,KAAK4oM,aAAat0B,EAAKzB,EAAO52H,EAAMlyC,GACpC/J,KAAKmnM,gBAAgBx9C,YAChB0hD,IAAQrrM,KAAK6lM,4BACd7lM,KAAKmnM,gBAAgB/4B,qBAAqBi9B,GAC1CrrM,KAAK6lM,0BAA4BwF,GAGrC,IAAIE,EAAgB,MAAVxhM,EAAkBA,EAAOqxK,iBAAmB,EAClDmwB,IAAOvrM,KAAK+lM,0BAA6B/lM,KAAKqmM,kBAC9CrmM,KAAKmnM,gBAAgB74B,oBAAoBi9B,GACzCvrM,KAAK+lM,yBAA2BwF,GAIpC,IAAIC,EAAgB,MAAVzhM,EAAkBA,EAAO0kK,YAAc,EAC7C+8B,IAAOxrM,KAAKgmM,sBACZhmM,KAAKmnM,gBAAgB34B,eAAeg9B,GACpCxrM,KAAKgmM,oBAAsBwF,IAOnC3M,EAAY3iM,UAAU4tM,0BAA4B,SAAU2B,EAAYC,EAAc3hM,GAClF,IAAI2e,EAAQ,EACZ,GAAIgjL,GAAgB,GAAe,MAAV3hM,GAAkBA,EAAOsgM,gBAAkB/lC,EAAqB0Q,IACrF,OAAQjrK,EAAOsgM,eACX,KAAK/lC,EAAqBgmC,OACtB5hL,GAASgjL,EAAeD,GAAc,EACtC,MACJ,KAAKnnC,EAAqBimC,OACtB7hL,EAAQgjL,EAAeD,EAInC,OAAO/iL,GAOXm2K,EAAY3iM,UAAU6uM,iBAAmB,SAAUpsM,EAAQs9C,EAAMlyC,EAAQ6/L,GACrE,IAAI+B,EAAc3rM,KAAK8pM,0BAA0BnrM,EAAO26K,WAAW3qI,OAAQi7J,EAAgBj7J,OAAQ5kC,GAC/E,IAAhB4hM,GACA3rM,KAAKmnM,gBAAgBr5B,cAAc,EAAG69B,GAM1C,IAJA,IAAIC,EAAU3vJ,EACVuoI,EAAsB,MAAXonB,GAAmBA,EAAQ9a,UAEtCj1G,GADoB,MAAX+vH,GAAmBA,EAAQ3Z,YAC5BtzL,EAAOk9E,OACVj/E,EAAI,EAAGkF,EAAM+5E,EAAMh/E,OAASD,EAAIkF,GAAOlF,IAAMoD,KAAKinM,cAAgBrqM,IAAK,CAC5E,IAAIivM,EAAWhwH,EAAMj/E,GAEjB62E,GADOo4H,EAASv6L,KACJu6L,EAASn9J,OACrBo9J,EAAc9rM,KAAKgqM,wBAAwBv2H,EAAWm2H,EAAgBl7J,MAAO3kC,GAC7EutK,EAAat3K,KAAKu3K,cAAcs0B,EAAU9hM,EAAQ6/L,EAAwB,IAANhtM,GAEpD,KADpBkvM,GAAiB9rM,KAAKsa,YAAYvQ,GAAwB,EAAbutK,IACnBt3K,KAAKqmM,iBAC3BrmM,KAAKmnM,gBAAgBr5B,cAAcg+B,EAAa,GAEhDtnB,EACAxkL,KAAK+rM,gBAAgBF,EAAUjC,EAAiB3tJ,EAAMlyC,GAGtD/J,KAAKgsM,cAAcH,EAAUjC,EAAiB3tJ,EAAMlyC,GAEpC,IAAhB+hM,GAAsB9rM,KAAKqmM,iBAC3BrmM,KAAKmnM,gBAAgBr5B,eAAeg+B,EAAa,GAEjD9rM,KAAK42K,wBAA0B/6F,EAAMh/E,OAAS,IAC9CmD,KAAKmnM,gBAAgBr5B,eAAgB87B,EAAgBzpL,EAAI,GACzDypL,EAAgBzpL,EAAI,EACpBypL,EAAgBl7J,MAAQ1uC,KAAK+2K,WAAWroI,MACxC1uC,KAAK42K,wBAAyB,EAC9B52K,KAAK2mM,iBAAkB,GAG/B3mM,KAAK8yK,aAAaA,eAAemxB,oBAAoBjkM,KAAKkmM,cAAc50L,MACpD,IAAhBq6L,GACA3rM,KAAKmnM,gBAAgBr5B,cAAc,IAAK69B,EAAchtM,EAAOu4E,aAEjEl3E,KAAKmnM,gBAAgBv9C,WAMzBi1C,EAAY3iM,UAAU8vM,cAAgB,SAAUH,EAAUjC,EAAiB3tJ,EAAMlyC,GAC7E/J,KAAKisM,YAAYJ,EAAUjC,EAAgBl7J,MAAO3kC,GAClD,IAAIvN,EAAQ,GACZ,IAAoC,IAAhCqvM,EAASv6L,KAAKnT,QAAQ,OAA+C,IAAhC0tM,EAASv6L,KAAKnT,QAAQ,KAC3D,IAAK,IAAIvB,EAAI,EAAGA,EAAIivM,EAASv6L,KAAKzU,OAAQD,IACb,MAArBivM,EAASv6L,KAAK1U,GACdJ,GAAS,MAEiB,MAArBqvM,EAASv6L,KAAK1U,GACnBJ,GAAS,MAGTA,GAASqvM,EAASv6L,KAAK1U,GAIrB,KAAVJ,IACAA,EAAQqvM,EAASv6L,MAErB,IAAIq/D,EAAO,IAAMn0E,EAAQ,IACzBwD,KAAKmnM,gBAAgBz4B,iBAAiB,IAAI7M,EAAUlxF,KAMxDkuH,EAAY3iM,UAAU6vM,gBAAkB,SAAUF,EAAUjC,EAAiB3tJ,EAAMlyC,GAC/E,IAAI4mE,EAAOk7H,EAASv6L,KAEhB4qL,GADY2P,EAASn9J,MACH,OAAX3kC,GAAqC,qBAAXA,GAA0BA,EAAOuQ,aAElE4xL,EAA2B,OAAXniM,GAAqC,qBAAXA,IAAkD,IAAvBA,EAAO0kK,aAAqB1kK,EAAO4qH,YAAc4vC,EAAiB4nC,SACvIP,EAAU3vJ,EACVwyH,EAAczuK,KAAKisM,YAAYJ,EAAUjC,EAAgBl7J,MAAO3kC,GAChEqiM,EAAY,IAAIrQ,GACpB,GAAIG,GAAmB,OAAXnyL,GAAqC,qBAAXA,GAA0BA,EAAO2yL,gBAAkBz3B,GAAiBmD,KAAO,CAC7G,IAAIikC,EAAS,KAETC,EAAyB,OAAXviM,GAAqC,qBAAXA,GAA0BA,EAAO4qH,YAAc4vC,EAAiB6lC,MAQxGxN,EAAQ,KAIJA,GATJyP,EAFW,OAAXtiM,GAAqC,qBAAXA,GAA0BA,EAAO2yL,gBAAkBz3B,GAAiBmD,KAErFgkC,EAAUv1B,OAAOlmG,EAAMi7H,EAAU7hM,EAAO2yL,gBAAkBz3B,GAAiBsnC,YAA6BL,EAAcniM,GAGtHqiM,EAAUv1B,OAAOlmG,EAAMi7H,EAASU,EAAYJ,EAAcniM,IAG5DlN,OAAS,EACD,OAAXkN,GAAqC,qBAAXA,GAA0BA,EAAO2yL,gBAAkBz3B,GAAiBmD,KAEtFgkC,EAAU/P,YAAY1rH,EAAMi7H,EAAU7hM,EAAO2yL,gBAAkBz3B,GAAiBsnC,YAA6BL,EAAcniM,GAG3HqiM,EAAU/P,YAAY1rH,EAAMi7H,EAASU,EAAYJ,EAAcniM,GAInE,CAAC4mE,GAEb3wE,KAAKwsM,kBAAkBH,EAAQzP,EAAOgP,EAAS7hM,EAAQ0kK,QAGvD,GAAIy9B,EAAc,CACd,IAAIvtM,EAASqB,KAAKysM,iBAAiB97H,EAAMi7H,EAAS,MAC9CS,EAAS1tM,EAAO+tM,OAChB9P,EAAQj+L,EAAOi+L,MACnB58L,KAAKwsM,kBAAkBH,EAAQzP,EAAOgP,EAAS7hM,EAAQ0kK,OAEtD,CACD,IAAIk+B,EAAQ3sM,KAAK4sM,iBAAiBj8H,EAAMi7H,GACpCpvM,EAAQwD,KAAK6sM,iBAAiBF,GAClC3sM,KAAK0/I,aAAagvB,iBAAiBlyK,KAQ/CqiM,EAAY3iM,UAAUswM,kBAAoB,SAAUH,EAAQzP,EAAO3gJ,EAAMlyC,EAAQ0kK,GAE7E,GAAc,MAAV49B,EACA,MAAM,IAAIzrM,MAAM,oCAEpB,GAAa,MAATg8L,EACA,MAAM,IAAIh8L,MAAM,mCAEpB,GAAY,MAARq7C,EACA,MAAM,IAAIr7C,MAAM,kCAEpBZ,KAAK0/I,aAAaouB,gBAClB,IAAI3tJ,EAAI,EACJ2sL,EAAS,EACTx3B,EAAkB,EAClByC,EAAkB,EACtB,IACmB,OAAXhuK,GAAqC,qBAAXA,IAC1BurK,EAAkBvrK,EAAOurK,gBACzByC,EAAkBhuK,EAAOguK,gBACzBhuK,EAAOurK,gBAAkB,EACzBvrK,EAAOguK,gBAAkB,GAE7B,IAAIg1B,EAAa9wJ,EAAK40I,aAAanb,GAAgBz+F,WAAYltE,GAAU0kK,EACrE2M,EAA8B,MAAVrxK,EAAkBA,EAAOqxK,iBAAmB,EAEpE2xB,GAAc3xB,GADc,OAAXrxK,GAAqC,qBAAXA,GAA0C,IAAhB0kK,EAAqB1kK,EAAO0kK,YAAc,GAE/G,IAAK,IAAI7xK,EAAI,EAAGA,EAAIyvM,EAAOxvM,OAAQD,IAAK,CACpC,IAAI+vM,EAAQN,EAAOzvM,GACfw5K,EAAOwmB,EAAMhgM,GACbowM,EAAa,EAIjB,GAHU,IAAN7sL,GACAngB,KAAK0/I,aAAaouB,cAAc3tJ,EAAG,GAEnCi2J,EAAKv5K,OAAS,EAAG,CACjBmwM,GAA+B/wJ,EAAKy+H,cAActE,EAAMrsK,GAAQ2kC,MAChEs+J,GAAc5xB,EACd,IAAIl3K,EAAMlE,KAAK6sM,iBAAiBF,GAChC3sM,KAAK0/I,aAAasuB,SAAS9pK,GAE3BtH,IAAMyvM,EAAOxvM,OAAS,IAEtBiwM,GADA3sL,EAAI6sL,EAAaD,GAKrBD,EAAS,GACT9sM,KAAK0/I,aAAaouB,eAAeg/B,EAAQ,GA/BjD,QAmCmB,OAAX/iM,GAAqC,qBAAXA,IAC1BA,EAAOurK,gBAAkBA,EACzBvrK,EAAOguK,gBAAkBA,KAOrC8mB,EAAY3iM,UAAUuwM,iBAAmB,SAAU97H,EAAMi7H,EAAShP,GAC9D,GAAa,OAATjsH,EACA,MAAM,IAAI/vE,MAAM,kCAEpBg8L,EAAQjsH,EAAKh0E,MAAM,MAEnB,IADA,IAAI+vM,EAAS,GACJ9vM,EAAI,EAAGA,EAAIggM,EAAM//L,OAAQD,IAAK,CAEnC,IAAIw5K,EAAOwmB,EAAMhgM,GACb+vM,EAAQ3sM,KAAK4sM,iBAAiBx2B,EAAMw1B,GACxCc,EAAO9vM,GAAK+vM,EAEhB,MAAO,CAAED,OAAQA,EAAQ9P,MAAOA,IAKpCiC,EAAY3iM,UAAU2wM,iBAAmB,SAAUF,GAC/C,GAAc,OAAVA,EACA,MAAM,IAAI/rM,MAAM,mCAEpB,IAAIsD,EAAM,IAAI29J,EAAU8qC,GAGxB,OAFAzoM,EAAI+oM,WAAY,EAChB/oM,EAAIuxI,OAASkP,EAAagd,cAAciB,MACjC1+J,GAKX26L,EAAY3iM,UAAU0wM,iBAAmB,SAAUt7L,EAAMs6L,GACrD,IAAIe,EAAQ,KACZ,GAAY,MAARr7L,EACA,MAAM,IAAI1Q,MAAM,kCAEpB,GAAe,MAAXgrM,EACA,MAAM,IAAIhrM,MAAM,qCAEpB,GAAIgrM,EAAQnP,wBAAwB5K,GAAqB,CACrD,IAAIY,EAAYmZ,EAAQnP,aAAahK,UACrCmZ,EAAQ7W,WAAWzjL,GACnBq7L,EAAQla,EAAU7B,cAAct/K,GAChC,IAAIwyI,EAAQ+d,EAAUsB,eAAewpC,GAAO,GAC5CA,EAAQ9qC,EAAUwB,aAAavf,GAEnC,OAAO6oD,GAMX9N,EAAY3iM,UAAU+vM,YAAc,SAAUJ,EAAUqB,EAAanjM,GACjE,IAAI4mE,EAAOk7H,EAASv6L,KAChBmiE,EAAYo4H,EAASn9J,MACrBu7J,EAAgBjqM,KAAKiqM,cAAc4B,EAAUqB,EAAanjM,GAC1DojM,EAA4B,MAAVpjM,GAAyC,IAAvBA,EAAO0kK,YAC3CjgK,EAAUknK,GAAgBe,OAC1B22B,EAAmB13B,GAAgBG,cAAcllG,EAAMniE,GACvD2tL,EAAY,EACZ8N,GAEIkD,IACA15H,GAAc25H,EAAmBrjM,EAAO0kK,aAG5C0tB,GADiB+Q,EAAcz5H,GACN25H,EACzBptM,KAAKmnM,gBAAgB34B,eAAe2tB,IAIhCgR,EACAntM,KAAKmnM,gBAAgB34B,eAAezkK,EAAO0kK,aAG3CzuK,KAAKmnM,gBAAgB34B,eAAe,GAG5C,OAAO2tB,GAMX0C,EAAY3iM,UAAUm2C,MAAQ,SAAUwK,GACpC78C,KAAKknM,WAAarqJ,EAClB78C,KAAK0/I,aAAa7Y,QAClB7mI,KAAKqqC,aACLrqC,KAAK8+L,yBAMTD,EAAY3iM,UAAU+tM,cAAgB,SAAU4B,EAAUqB,EAAanjM,GACnE,IAAI4mE,EAAOk7H,EAASv6L,KAChBmiE,EAAYo4H,EAASn9J,MACrB2+J,EAA0B,MAAVtjM,GAAkBA,EAAO4qH,YAAc4vC,EAAiB4nC,QACxEmB,EAAaJ,GAAe,GAAKz5H,EAAYy5H,EAC7C1+L,EAAUknK,GAAgBe,OAE1B82B,EADmB73B,GAAgBG,cAAcllG,EAAMniE,GACvB,GAAKmiE,EAAK,KAAO+kG,GAAgBz+F,WACjEu2H,GAAuB3B,EAASzzB,SAAWnL,GAASgM,aAAe,EAGvE,OADqBo0B,GAAgBC,GAAaC,IAAcC,GAAsBzjM,EAAO4qH,YAAc4vC,EAAiB4nC,UAQhItN,EAAY3iM,UAAU8uM,uBAAyB,SAAU12B,EAAKzB,EAAOl0K,EAAQs9C,EAAM2tJ,EAAiB7/L,GAChG,GAAIkyC,EAAKwxJ,WAAaxxJ,EAAKyxJ,UAAW,CAElC,IAAIC,EAAU3tM,KAAK4tM,2BAA2Bt5B,EAAKzB,EAAO52H,EAAMlyC,GAChE,GAAe,MAAX4jM,EAAiB,CAEjB,IAAIE,EAAS7tM,KAAK8pM,0BAA0BnrM,EAAO26K,WAAW3qI,OAAQi7J,EAAgBj7J,OAAQ5kC,GAC1F+jM,EAAmB,EACvBA,EAAmBlE,EAAgBv0L,EAAIw4L,EAAS5xJ,EAAKi+H,QAAQ+W,UAAUlnL,GAAU,IAAM4jM,EAAQj/J,MAI/F,IAHA,IAAIq/J,EAAmBnE,EAAgBv0L,EAAIw4L,EAAS5xJ,EAAKi+H,QAAQC,UAAUpwK,GAAU,EAAI,IAAM4jM,EAAQj/J,MACnGmtC,EAAQl9E,EAAOk9E,MAEVj/E,EAAI,EAAGkF,EAAMnD,EAAOkrM,UAAWjtM,EAAIkF,EAAKlF,IAAK,CAClD,IAAIivM,EAAWhwH,EAAMj/E,GAEjB62E,GADOo4H,EAASv6L,KACJu6L,EAASn9J,OACrBq7J,EAAS/pM,KAAKgqM,wBAAwBv2H,EAAWm2H,EAAgBl7J,MAAO3kC,GACxEutK,EAAat3K,KAAKu3K,cAAcs0B,EAAU9hM,EAAQ6/L,EAAwB,IAANhtM,GACxEmtM,GAAY/pM,KAAKsa,YAAYvQ,GAAwB,EAAbutK,EACxC,IAAI5kG,EAAKk3H,EAAgBzpL,EAAI4pL,EAEzBn3H,EAAO5yE,KAAKiqM,cAAc4B,EAAUjC,EAAgBl7J,MAAO3kC,GAAyC2oE,EAAKk3H,EAAgBl7J,MAAQ4oI,EAA3D5kG,EAAKe,EAAY6jG,EAE3F,GAAIr7H,EAAKwxJ,UAAW,CAChB,IAAIp4L,EAAIy4L,EACR9tM,KAAK0wE,SAASi9H,EAASj7H,EAAIr9D,EAAGu9D,EAAIv9D,GAClCy4L,GAAoBnvM,EAAOu4E,WAE/B,GAAIj7B,EAAKyxJ,UAAW,CACZr4L,EAAI04L,EACR/tM,KAAK0wE,SAASi9H,EAASj7H,EAAIr9D,EAAGu9D,EAAIv9D,GAClC04L,GAAoBpvM,EAAOu4E,WAE3Bl3E,KAAK2mM,iBAAmB9qH,EAAMh/E,OAAS,IACvC+sM,EAAgBzpL,EAAI,EACpBypL,EAAgBl7J,MAAQ1uC,KAAK+2K,WAAWroI,OAGhD1uC,KAAK2mM,iBAAkB,KAQnC9H,EAAY3iM,UAAU0xM,2BAA6B,SAAUt5B,EAAKzB,EAAO52H,EAAMlyC,GAE3E,IAAI0pE,EAAYx3B,EAAKi+H,QAAQqE,QAAQx0K,GAAU,GAC3C4jM,EAAU,KAQd,OANW,MAAPr5B,EACAq5B,EAAU,IAAI16B,GAAOqB,EAAIpwH,MAAOuvB,GAElB,MAATo/F,IACL86B,EAAU,IAAI16B,GAAOJ,EAAOp/F,IAEzBk6H,GAMX9O,EAAY3iM,UAAUovM,qBAAuB,SAAUh3B,EAAKzB,EAAO9oK,GAC/D,IAAIshM,EAAK7mC,GAAkB4D,KAa3B,OAXIijC,EADO,MAAP/2B,GAAwB,MAATzB,EACVrO,GAAkBwpC,WAEX,MAAP15B,EACA9P,GAAkBypC,OAGlBzpC,GAAkBshC,KAEb,MAAV/7L,GAAkBA,EAAO28C,WACzB2kJ,GAAM7mC,GAAkB0pC,UAErB7C,GAMXxM,EAAY3iM,UAAUq7K,cAAgB,SAAUs0B,EAAU9hM,EAAQokM,EAAcr2B,GAC5E,IAAIR,EAAa,EACb82B,GAAuBvC,EAASzzB,SAAWnL,GAASoL,oBAAsB,EAK9E,OAJc,MAAVtuK,GAAkBqkM,IAClB92B,EAAcQ,EAAa/tK,EAAOurK,gBAAkBvrK,EAAOguK,gBAC3DT,EAAc62B,EAAaz/J,MAAQ,EAAKloC,KAAK2L,IAAIg8L,EAAaz/J,MAAO4oI,GAAcA,GAEhFA,GAMXunB,EAAY3iM,UAAU8tM,wBAA0B,SAAUv2H,EAAWy5H,EAAanjM,GAC9E,IAAI2e,EAAQ,EACZ,GAAIwkL,GAAe,GAAe,MAAVnjM,GAAkBA,EAAO4qH,YAAc4vC,EAAiB8pC,KAC5E,OAAQtkM,EAAO4qH,WACX,KAAK4vC,EAAiB4lC,OAClBzhL,GAASwkL,EAAcz5H,GAAa,EACpC,MACJ,KAAK8wF,EAAiB6lC,MAClB1hL,EAAQwkL,EAAcz5H,EAIlC,OAAO/qD,GAMXm2K,EAAY3iM,UAAUoe,YAAc,SAAUvQ,GAC1C,IAAImyL,EAAkB,OAAXnyL,GAAqC,qBAAXA,GAA0BA,EAAOuQ,YAMtE,OALe,OAAXvQ,GAAqC,qBAAXA,GACtBA,EAAO2yL,gBAAkBz3B,GAAiBmD,MAAwC,qBAAzBr+J,EAAO2yL,gBAChER,GAAM,GAGPA,GAEX2C,EAAY3iM,UAAU0sM,aAAe,SAAUt0B,EAAKzB,EAAO52H,EAAMlyC,GAC7D,GAAsB,qBAAXA,EACP/J,KAAK4oM,aAAat0B,EAAKzB,EAAO52H,EAAM,UAEnC,CACG42H,aAAiBsqB,KACjBn9L,KAAK0nM,gBAAiB,EACtB70B,EAAMvlB,WAAattJ,KAAKstJ,YAExBulB,aAAiBixB,KACjB9jM,KAAK0nM,gBAAiB,EACtB70B,EAAMsK,SAAS7vB,WAAattJ,KAAKstJ,YAGrC,GAAc,OAAVulB,EAAgB,CAEc,qBAAnB7yK,KAAKsnM,WAA+C,MAAlBtnM,KAAKsnM,YACf,IAA3BtnM,KAAK0mM,oBACL1mM,KAAKsuM,eAAiBtuM,KAAKsnM,UAAUvrG,KAAKv7F,SAAS8sJ,WACnDttJ,KAAKuuM,eAAiBvuM,KAAKsnM,UAAUvrG,KAAKohF,SAAS7vB,WACnDttJ,KAAKstJ,WAAattJ,KAAKsnM,UAAUvrG,KAAKv7F,SAAS8sJ,WAC/CttJ,KAAK+yK,kBAAoB/yK,KAAKsnM,UAAUvrG,KAAKv7F,SAAS8sJ,WACtDttJ,KAAK0mM,mBAAoB,GAGjC1mM,KAAKwuM,sBAAsBxuM,KAAK+yK,wBAE/B,GAAW,MAAPuB,EAAa,CAEY,qBAAnBt0K,KAAKsnM,WAA+C,MAAlBtnM,KAAKsnM,YAE9CtnM,KAAKstJ,WAAattJ,KAAKsnM,UAAUvrG,KAAKv7F,SAAS8sJ,WAC/CttJ,KAAK+yK,kBAAoB/yK,KAAKsnM,UAAUvrG,KAAKv7F,SAAS8sJ,YAE1DttJ,KAAKwuM,sBAAsBxuM,KAAK+yK,mBAEpC/yK,KAAKyuM,WAAWn6B,GAvBA,GAwBhBt0K,KAAK0uM,aAAa77B,GAxBF,GAyBhB7yK,KAAK2uM,YAAY1yJ,EAAMlyC,GAzBP,KAgCxB80L,EAAY3iM,UAAUsyM,sBAAwB,SAAUI,GAC3C5uM,KAAK8yK,aAAaA,eACtB9yK,KAAK0nM,iBACF1nM,KAAK+yK,mBAAqBlO,GAAcmN,WACxChyK,KAAKmnM,gBAAgBx4B,cAAc,SAAW3uK,KAAK4mM,mBAAmB5mM,KAAK+yK,oBAAoB,GAC/F/yK,KAAKmnM,gBAAgBx4B,cAAc,SAAW3uK,KAAK4mM,mBAAmB5mM,KAAK+yK,oBAAoB,GAC/F/yK,KAAK0nM,gBAAiB,IAGtB1nM,KAAKmnM,gBAAgBx4B,cAAc,cAAc,GACjD3uK,KAAKmnM,gBAAgBx4B,cAAc,cAAc,GACjD3uK,KAAK0nM,gBAAiB,KAQlC7I,EAAY3iM,UAAUuyM,WAAa,SAAUn6B,EAAKnqB,GACnC,MAAPmqB,IACAt0K,KAAKk0K,WAAaI,EAElBA,EAAI1B,eAAe5yK,KAAKk0K,WAAYl0K,KAAKmnM,gBAAiBnnM,KAAK8yK,aAAc3oB,EAAWnqJ,KAAKstJ,WAAYttJ,KAAKqwJ,OAAOpxJ,SAErHe,KAAKk0K,WAAaI,EAAIr1K,UAO9B4/L,EAAY3iM,UAAUwyM,aAAe,SAAU77B,EAAO1oB,GAClD,GAAa,MAAT0oB,GAAkC,qBAAVA,EAAuB,CAC/C,IAAIjsK,EAAIisK,EAAM5zK,QACV4vM,EAAMjoM,EACV,GAAY,OAARioM,GAA+B,qBAARA,KAAyBh8B,aAAiBH,OAAoBG,aAAiBixB,IAAiB,CACvH,IAAIv7L,EAAIsmM,EAAIx+C,OACRA,EAASrwJ,KAAKqwJ,OAAOpxJ,QACf,MAALsJ,IACDA,EAAEozK,SAAStrB,GACXA,EAAS9nJ,GAEbsmM,EAAIx+C,OAASA,EAEjBrwJ,KAAKwnM,aAAeqH,EAGpBjoM,EAAEgsK,eAAe5yK,KAAKwnM,aAAcxnM,KAAKmnM,gBAAiBnnM,KAAK8yK,aAAc3oB,EAAWnqJ,KAAKstJ,YAE7FttJ,KAAKwnM,aAAe30B,EACpBA,EAAQ,OAOhBgsB,EAAY3iM,UAAUyyM,YAAc,SAAU1yJ,EAAMlyC,EAAQogJ,GACxD,GAAY,MAARluG,EAAc,CACd,IAAI6yJ,EAAyB,MAAV/kM,EAAkBA,EAAOunL,eAAiBhsB,GAAkB8C,KAE3E2mC,EAA4C,MAA5B/uM,KAAK2nM,oBAA+B3nM,KAAK2nM,oBAAoBrW,eAAiBhsB,GAAkB8C,KACpH,GAAIje,GAAaluG,IAASj8C,KAAKynM,aAAeqH,IAAgBC,EAAc,CACxE,IAAIjiD,EAAY9sJ,KAAK8yK,aAAaA,eAClC9yK,KAAKynM,YAAcxrJ,EACnBj8C,KAAK2nM,oBAAsB59L,EAC3B,IAAI8yC,EAAOZ,EAAKi+H,QAAQqE,QAAQx0K,GAEhC/J,KAAKqmM,iBAAkB,EACvB,IAAIt3C,EAAWjC,EAAUoxC,QAAQjiJ,GACjCj8C,KAAKmnM,gBAAgBh8C,QAAQlvG,EAAM8yG,EAAUlyG,MAIzDgiJ,EAAY3iM,UAAU8yM,gBAAkB,SAAU7lC,EAAMC,EAAMC,GAC1D,GAAoB,qBAATD,EACPppK,KAAK+mM,mBAAoB,EACzB/mM,KAAKgvM,gBAAgB7lC,EAAMA,EAAMrE,GAAaiE,aAE7C,GAAoB,kBAATK,GAAqC,qBAATC,EACxCrpK,KAAKgvM,gBAAgB7lC,EAAMC,EAAMtE,GAAaiE,YAE7C,CACyB,MAAtB/oK,KAAKivM,gBACLjvM,KAAKivM,cAAgB,IAAIxyB,IAE7B,IAAIyyB,EAAS,KACTC,EAAK,IAAIC,GAAiBjmC,EAAMC,EAAMC,GACtCrpK,KAAKivM,cAAcluD,YAAYouD,KAC/BD,EAASlvM,KAAKivM,cAAc5yM,SAAS8yM,IAE3B,MAAVD,IACAA,EAAS,IAAItyB,GAAgBzT,EAAMC,EAAMC,GACzCrpK,KAAKivM,cAAclyM,SAASoyM,EAAID,IAEpC,IACIG,EADYrvM,KAAK8yK,aAAaA,eACXorB,QAAQgR,GACtBlvM,KAAK0/I,aACX2M,iBAAiBgjD,KAG5BxQ,EAAY3iM,UAAUozM,qBAAuB,SAAUnvL,EAAG9K,EAAGosB,EAAME,EAAKD,EAAOE,GAC3E,GAAIzhB,aAAa+oJ,IAA2B,qBAAN7zJ,EAClCrV,KAAK26E,WAAax6D,EAClBngB,KAAKmnM,gBAAgBj4B,aAAa,iBAClClvK,KAAKmnM,gBAAgBj9C,gBAAgB/pI,GACrCngB,KAAKmnM,gBAAgBzyH,YACrB10E,KAAKmnM,gBAAgBzgJ,UAAS,GAC9B1mD,KAAKmnM,gBAAgBj4B,aAAa,iCAClClvK,KAAKs9K,mBAAmBn9J,EAAEA,EAAGA,EAAE9K,QAE9B,GAAiB,kBAAN8K,EAAgB,CAC5B,IAAIovL,EAAW,IAAIrmC,GAAWznI,EAAME,EAAK3hC,KAAK68C,KAAKnO,MAAQjN,EAAOC,EAAO1hC,KAAK68C,KAAKlO,OAAShN,EAAMC,GAClG5hC,KAAK26E,WAAa40H,EAClBvvM,KAAKmnM,gBAAgBj4B,aAAa,iBAClClvK,KAAKmnM,gBAAgBj9C,gBAAgBqlD,GACrCvvM,KAAKmnM,gBAAgBzyH,YACrB10E,KAAKmnM,gBAAgBzgJ,UAAS,GAC9B1mD,KAAKmnM,gBAAgBj4B,aAAa,iCAClClvK,KAAKs9K,mBAAmBn9J,EAAG9K,KAOnCwpL,EAAY3iM,UAAU8yK,QAAU,SAAU35J,GACtC,OAAQA,GAyBZwpL,EAAY3iM,UAAUohL,mBAAqB,SAAUr8I,EAASI,GAC1D,IAAIgvH,EAAS,IAAIkrB,GACjBv7K,KAAK8nM,sBAAsB7mK,EAASI,EAASgvH,GAC7CrwJ,KAAKmnM,gBAAgB78C,UAAU+F,GAC/BrwJ,KAAKqwJ,OAAOsrB,SAAStrB,IAMzBwuC,EAAY3iM,UAAU4rM,sBAAwB,SAAU3nL,EAAG9K,EAAG+xD,GAE1D,OADAA,EAAMgN,UAAUj0D,EAAGngB,KAAKgvK,QAAQ35J,IACzB+xD,GA2BXy3H,EAAY3iM,UAAUszM,eAAiB,SAAU15H,EAAQC,GACrD,IAAIs6E,EAAS,IAAIkrB,GACjBv7K,KAAK+nM,kBAAkBjyH,EAAQC,EAAQs6E,GACvCrwJ,KAAKmnM,gBAAgB78C,UAAU+F,GAC/BrwJ,KAAKqwJ,OAAOsrB,SAAStrB,IAMzBwuC,EAAY3iM,UAAU6rM,kBAAoB,SAAU5nL,EAAG9K,EAAG+xD,GAKtD,OAJa,MAATA,IACAA,EAAQ,IAAIm0G,IAEhBn0G,EAAM4O,MAAM71D,EAAG9K,GACR+xD,GAwBXy3H,EAAY3iM,UAAUuzM,gBAAkB,SAAUvzJ,GAC9C,IAAIm0G,EAAS,IAAIkrB,GACjBv7K,KAAK0vM,mBAAmBxzJ,EAAOm0G,GAC/BrwJ,KAAKmnM,gBAAgB78C,UAAU+F,GAC/BrwJ,KAAKqwJ,OAAOsrB,SAAStrB,IAMzBwuC,EAAY3iM,UAAU4iM,sBAAwB,WAE1C9+L,KAAKmnM,gBAAgBj4B,aAAa,0CAE9BlvK,KAAK2vM,2BAA8B3vM,KAAK68C,KAAKlO,QACzB,MAAhB3uC,KAAK4vM,UACD5vM,KAAK2vM,0BAA4B3vM,KAAK68C,KAAKlO,QAA2C,IAAjC3uC,KAAK2vM,wBAC1D3vM,KAAKs9K,mBAAmB,EAAGt9K,KAAKgvK,QAAQhvK,KAAK68C,KAAKlO,SAGlD3uC,KAAKs9K,mBAAmB,EAAGt9K,KAAKgvK,QAAQhvK,KAAK2vM,4BAS7D9Q,EAAY3iM,UAAUwzM,mBAAqB,SAAUxzJ,EAAOkrB,GAKxD,OAJa,MAATA,GAAkC,qBAAVA,IACxBA,EAAQ,IAAIm0G,IAEhBn0G,EAAMuO,OAAO31E,KAAKgvK,QAAQ9yH,IACnBkrB,GA0BXy3H,EAAY3iM,UAAU23E,KAAO,WACzB,IAAIvH,EAAQ,IAAIujI,GAAiB7vM,KAAMA,KAAKqwJ,OAAOpxJ,SAWnD,OAVAqtE,EAAMumG,MAAQ7yK,KAAKwnM,aACnBl7H,EAAMgoG,IAAMt0K,KAAKk0K,WACjB5nG,EAAMrwB,KAAOj8C,KAAKynM,YAClBn7H,EAAMghF,WAAattJ,KAAK+yK,kBACxBzmG,EAAM8uG,iBAAmBp7K,KAAK+lM,yBAC9Bz5H,EAAMmiG,YAAczuK,KAAKgmM,oBACzB15H,EAAMohG,YAAc1tK,KAAKimM,oBACzB35H,EAAMwjI,kBAAoB9vM,KAAK6lM,0BAC/B7lM,KAAK8mM,cAAcluL,KAAK0zD,GACxBtsE,KAAKmnM,gBAAgBt5B,oBACdvhG,GAEXuyH,EAAY3iM,UAAU+3E,QAAU,SAAU3H,GACtC,GAAqB,qBAAVA,EACHtsE,KAAK8mM,cAAcjqM,OAAS,GAC5BmD,KAAK+vM,sBAIT,IAA2C,IAAvC/vM,KAAK8mM,cAAc3oM,QAAQmuE,GAC3B,KACsC,IAA9BtsE,KAAK8mM,cAAcjqM,QADlB,CAKL,GADemD,KAAK+vM,mBACHzjI,EACb,QAUpBuyH,EAAY3iM,UAAU6zM,eAAiB,WACnC,IAAIzjI,EAAQtsE,KAAK8mM,cAAc51G,MAW/B,OAVAlxF,KAAKy7K,qBAAuBnvG,EAAM+jF,OAClCrwJ,KAAKwnM,aAAel7H,EAAMumG,MAC1B7yK,KAAKk0K,WAAa5nG,EAAMgoG,IACxBt0K,KAAKynM,YAAcn7H,EAAMrwB,KACzBj8C,KAAK+yK,kBAAoBzmG,EAAMghF,WAC/BttJ,KAAK+lM,yBAA2Bz5H,EAAM8uG,iBACtCp7K,KAAKgmM,oBAAsB15H,EAAMmiG,YACjCzuK,KAAKimM,oBAAsB35H,EAAMohG,YACjC1tK,KAAK6lM,0BAA4Bv5H,EAAMwjI,kBACvC9vM,KAAKmnM,gBAAgBv5B,uBACdthG,GAgCXuyH,EAAY3iM,UAAU0nD,SAAW,SAAU0wH,EAAKzB,EAAOpiG,GAC/CoiG,aAAiBixB,IACjB9jM,KAAK0nM,gBAAiB,EACtB70B,EAAMsK,SAAS7vB,WAAattJ,KAAKstJ,YAE5BulB,aAAiBsqB,KACtBn9L,KAAK0nM,gBAAiB,EACtB70B,EAAMvlB,WAAattJ,KAAKstJ,YAE5BttJ,KAAK4oM,aAAat0B,EAAKzB,EAAO,MAC9B7yK,KAAKgwM,YAAYv/H,EAAKw/H,WAAYx/H,EAAKy/H,WACvClwM,KAAKgpM,eAAe10B,EAAKzB,EAAOpiG,EAAK0/H,UAAU,IAGnDtR,EAAY3iM,UAAUk0M,QAAU,SAAUjnC,EAAMC,EAAMC,EAAMC,EAAMyG,EAAMC,EAAM8G,GACtE1N,aAAgBF,GAChBlpK,KAAKowM,QAAQjnC,EAAMC,EAAKjpJ,EAAGipJ,EAAK/zJ,EAAG+zJ,EAAK16H,MAAO06H,EAAKz6H,OAAQ06H,EAAMC,GAGpD,IAATwN,IACD92K,KAAK4oM,aAAaz/B,EAAM,KAAM,MAC9BnpK,KAAKqwM,iBAAiBjnC,EAAMC,EAAOD,EAAOE,EAAQD,EAAO0G,EAAOC,EAAM8G,GACtE92K,KAAKgpM,eAAe7/B,EAAM,MAAM,KAQ5C01B,EAAY3iM,UAAU8zM,YAAc,SAAU7mC,EAAMC,GAEhD,IADA,IAAI3+I,EAAM0+I,EAAKtsK,OACND,EAAI,EAAGA,EAAI6tB,IAAO7tB,EAAG,CAC1B,IAAI0zM,EACAp6J,EAAQizH,EAAKvsK,GACjB,OAAUwsK,EAAKxsK,GAAMiiM,EAAY0R,qBAC7B,KAAKx2B,GAAcy2B,MACfxwM,KAAKmnM,gBAAgBrzH,UAAU59B,EAAM/1B,EAAG+1B,EAAM7gC,GAC9C,MACJ,KAAK0kK,GAAc02B,QACf,IAAItvJ,EAAK,IAAI6nH,GAAO,EAAG,GACnB0nC,EAAK,IAAI1nC,GAAO,EAAG,GACnBzjD,EAAUvlH,KAAK2wM,gBAAgBxnC,EAAMC,EAAMxsK,EAAGukD,EAAIuvJ,GACtD1wM,KAAKmnM,gBAAgBr3B,oBAAoB55H,EAAOqvE,EAAQpkE,GAAIokE,EAAQmrF,IACpE9zM,EAAI2oH,EAAQ3oH,EACZ,MACJ,KAAKm9K,GAAc62B,KACf5wM,KAAKmnM,gBAAgBt9C,kBAAkB3zG,GACvC,MACJ,QACI,MAAM,IAAIt1C,MAAM,mDAExB0vM,EAAYlnC,EAAKxsK,GACjBoD,KAAK6wM,WAAWP,KAQxBzR,EAAY3iM,UAAUy0M,gBAAkB,SAAU90J,EAAQkjF,EAAOniI,EAAGukD,EAAIuvJ,GAGpE,IAAO3xE,IADLniI,GACgBiiM,EAAY0R,uBAA0Bx2B,GAAc02B,QAWlE,MAAM,IAAI7vM,MAAM,gCARhB,GAFAugD,EAAKtF,EAAOj/C,IAELmiI,IADLniI,GACgBiiM,EAAY0R,uBAA0Bx2B,GAAc02B,QAIlE,MAAM,IAAI7vM,MAAM,gCAMxB,MAAO,CAAEhE,EAAGA,EAAGukD,GAAIA,EAAIuvJ,GATV70J,EAAOj/C,KAexBiiM,EAAY3iM,UAAU20M,WAAa,SAAU3mM,IAClCA,EAAQ6vK,GAAc+2B,gBAAoB/2B,GAAc+2B,cAC3D9wM,KAAKmnM,gBAAgBzyH,aAO7BmqH,EAAY3iM,UAAUm0M,iBAAmB,SAAU39H,EAAIC,EAAIC,EAAIC,EAAIk+H,EAAUC,GACzE,IAAIn1J,EAAS77C,KAAKixM,aAAav+H,EAAIC,EAAIC,EAAIC,EAAIk+H,EAAUC,GACzD,GAAuB,IAAlBn1J,EAAOh/C,OAAZ,CAGA,IAAIq0M,EAAK,CAACr1J,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAC9F77C,KAAKmnM,gBAAgBrzH,UAAUo9H,EAAG,GAAIA,EAAG,IACzC,IAAIt0M,EAAI,EACR,IAAKA,EAAI,EAAGA,EAAIi/C,EAAOh/C,OAAQD,GAAQ,EACnCs0M,EAAK,CAACr1J,EAAOj/C,GAAIi/C,EAAOj/C,EAAI,GAAIi/C,EAAOj/C,EAAI,GAAIi/C,EAAOj/C,EAAI,GAAIi/C,EAAOj/C,EAAI,GAAIi/C,EAAOj/C,EAAI,GAAIi/C,EAAOj/C,EAAI,GAAIi/C,EAAOj/C,EAAI,IACtHoD,KAAKmnM,gBAAgBr3B,oBAAoBohC,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,MAOvFrS,EAAY3iM,UAAU+0M,aAAe,SAAUE,EAAOC,EAAOC,EAAOC,EAAO/xC,EAAIgyC,GAC3E,GAAKJ,EAAQE,EAAQ,CACjB,IAAI1uH,OAAM,EACVA,EAAMwuH,EACNA,EAAQE,EACRA,EAAQ1uH,EAEZ,GAAK2uH,EAAQF,EAAQ,CACbzuH,OAAM,EACVA,EAAMyuH,EACNA,EAAQE,EACRA,EAAQ3uH,EAEZ,IAAI6uH,EACAC,EACCjrM,KAAK8G,IAAIikM,IAAO,IACjBC,EAAaD,EACbE,EAAe,GAIfD,EAAcD,GADdE,EAAgBjrM,KAAKu4C,KAAMv4C,KAAK8G,IAAIikM,GAAM,KAU9C,IAPA,IAAIG,GAASP,EAAQE,GAAS,EAC1BM,GAASP,EAAQE,GAAS,EAC1BjgJ,GAAOggJ,EAAQF,GAAS,EACxB7/I,GAAOggJ,EAAQF,GAAS,EACxBQ,EAAYJ,GAAchrM,KAAKk5C,GAAK,KACpCmyJ,EAASrrM,KAAK8G,IAAI,EAAM,GAAO,EAAM9G,KAAKo5C,IAAIgyJ,IAAYprM,KAAKq5C,IAAI+xJ,IACnEE,EAAa,GACRl1M,EAAI,EAAIA,EAAI60M,EAAe70M,IAAK,CACrC,IAAIm1M,GAAiBxyC,EAAM3iK,EAAI40M,IAAgBhrM,KAAKk5C,GAAK,KACrDsyJ,GAAiBzyC,GAAO3iK,EAAI,GAAK40M,IAAgBhrM,KAAKk5C,GAAK,KAC3DuyJ,EAAQzrM,KAAKo5C,IAAImyJ,GACjBG,EAAQ1rM,KAAKo5C,IAAIoyJ,GACjBG,EAAQ3rM,KAAKq5C,IAAIkyJ,GACjBK,EAAQ5rM,KAAKq5C,IAAImyJ,GAChBR,EAAa,EAEdM,EAAWl5L,KAAM84L,EAAQrgJ,EAAK4gJ,EAASN,EAAQrgJ,EAAK6gJ,EAAST,EAAQrgJ,GAAM4gJ,EAAQJ,EAAQM,GAAWR,EAAQrgJ,GAAM6gJ,EAAQN,EAAQI,GAAWP,EAAQrgJ,GAAM6gJ,EAAQL,EAAQO,GAAWT,EAAQrgJ,GAAM8gJ,EAAQP,EAAQK,GAAWR,EAAQrgJ,EAAK6gJ,EAASP,EAAQrgJ,EAAK8gJ,GAIpQN,EAAWl5L,KAAM84L,EAAQrgJ,EAAK4gJ,EAASN,EAAQrgJ,EAAK6gJ,EAAST,EAAQrgJ,GAAM4gJ,EAAQJ,EAAQM,GAAWR,EAAQrgJ,GAAM6gJ,EAAQN,EAAQI,GAAWP,EAAQrgJ,GAAM6gJ,EAAQL,EAAQO,GAAWT,EAAQrgJ,GAAM8gJ,EAAQP,EAAQK,GAAWR,EAAQrgJ,EAAK6gJ,EAASP,EAAQrgJ,EAAK8gJ,GAG5Q,OAAON,GAOXjT,EAAY0R,oBAAsB,GAMlC1R,EAAYwT,oBAAqB,EAC1BxT,EAjrDsB,GAyrD7BD,GAAyC,WAMzC,SAASA,EAAwBxsJ,GAC7BpyC,KAAKoyC,OAASA,EASlB,OAHAwsJ,EAAwB1iM,UAAU42K,aAAe,WAC7C,OAAO9yK,KAAKoyC,OAAO0gI,gBAEhB8rB,EAhBkC,GAmBzCiR,GAAkC,WAClC,SAASA,EAAiB1yB,EAAU9sB,GAMhCrwJ,KAAKsyM,0BAA4B9tC,GAAkBshC,KAMnD9lM,KAAKk1K,yBAA2B,EAMhCl1K,KAAKm1K,oBAAsB,EAM3Bn1K,KAAKuyM,oBAAsB,IAM3BvyM,KAAKwyM,cAAgB3tC,GAAciN,IACX,qBAAbqL,IACPn9K,KAAK0+L,YAAcvhB,EACnBn9K,KAAKy7K,qBAAuBprB,GA0IpC,OAvIAnyJ,OAAOooB,eAAeupL,EAAiB3zM,UAAW,WAAY,CAM1DqqB,IAAK,WACD,OAAOvmB,KAAK0+L,aAEhBh4K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeupL,EAAiB3zM,UAAW,SAAU,CAKxDqqB,IAAK,WACD,OAAOvmB,KAAKy7K,sBAEhB/0J,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeupL,EAAiB3zM,UAAW,mBAAoB,CAKlEqqB,IAAK,WACD,OAAOvmB,KAAKk1K,0BAEhBzuJ,IAAK,SAAUjqB,GACXwD,KAAKk1K,yBAA2B14K,GAEpCkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeupL,EAAiB3zM,UAAW,cAAe,CAK7DqqB,IAAK,WACD,OAAOvmB,KAAKm1K,qBAEhB1uJ,IAAK,SAAUjqB,GACXwD,KAAKm1K,oBAAsB34K,GAE/BkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeupL,EAAiB3zM,UAAW,cAAe,CAK7DqqB,IAAK,WACD,OAAOvmB,KAAKuyM,qBAEhB9rL,IAAK,SAAUjqB,GACXwD,KAAKuyM,oBAAsB/1M,GAE/BkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeupL,EAAiB3zM,UAAW,MAAO,CAKrDqqB,IAAK,WACD,OAAOvmB,KAAKyyM,QAEhBhsL,IAAK,SAAUjqB,GACXwD,KAAKyyM,OAASj2M,GAElBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeupL,EAAiB3zM,UAAW,QAAS,CAKvDqqB,IAAK,WACD,OAAOvmB,KAAKi0K,UAEhBxtJ,IAAK,SAAUjqB,GACXwD,KAAKi0K,SAAWz3K,GAEpBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeupL,EAAiB3zM,UAAW,OAAQ,CAKtDqqB,IAAK,WACD,OAAOvmB,KAAK0yM,SAEhBjsL,IAAK,SAAUjqB,GACXwD,KAAK0yM,QAAUl2M,GAEnBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeupL,EAAiB3zM,UAAW,aAAc,CAK5DqqB,IAAK,WACD,OAAOvmB,KAAKwyM,eAEhB/rL,IAAK,SAAUjqB,GACXwD,KAAKwyM,cAAgBh2M,GAEzBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeupL,EAAiB3zM,UAAW,oBAAqB,CAKnEqqB,IAAK,WACD,OAAOvmB,KAAKsyM,2BAEhB7rL,IAAK,SAAUjqB,GACXwD,KAAKsyM,0BAA4B91M,GAErCkqB,YAAY,EACZC,cAAc,IAEXkpL,EA5K2B,GA+KlCT,GAMA,SAA0BuD,EAAUC,EAAYC,GAC5C7yM,KAAK2yM,SAAWA,EAChB3yM,KAAK4yM,WAAaA,EAClB5yM,KAAK6yM,UAAYA,GCl7DrBC,GAA8B,WAC9B,SAASA,EAAa/2G,EAAMg3G,GA8BxB,GAxBA/yM,KAAKwyM,cAAgB3tC,GAAciN,IAMnC9xK,KAAKg1B,WAAY,EAMjBh1B,KAAKgzM,UAAW,EAMhBhzM,KAAKizM,cAAgB,EAKrBjzM,KAAKyxJ,qBAAuB,IAAI9E,EACnB,OAAT5wD,EACA,MAAM,IAAIn7F,MAAM,8BAIpB,GAFAZ,KAAKkzM,QAAUn3G,EACf/7F,KAAKmzM,mBAAoB,EACc,qBAA5BJ,EACP/yM,KAAKorD,QAAU,IAAIy0G,OAElB,GAAIkzC,aAAmClzC,GAAyC,OAA5BkzC,EAAkC,CACvF,GAAgC,OAA5BA,EACA,MAAM,IAAInyM,MAAM,gCAEpBZ,KAAKorD,QAAU2nJ,OAGf/yM,KAAKorD,QAAU,IAAIy0G,EACnB7/J,KAAKmzM,kBAAoBJ,EAmLjC,OAhLA70M,OAAOooB,eAAewsL,EAAa52M,UAAW,aAAc,CAMxDqqB,IAAK,WACD,OAAOvmB,KAAKwyM,eAEhB/rL,IAAK,SAAUjqB,GACXwD,KAAKwyM,cAAgBh2M,GAEzBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAewsL,EAAa52M,UAAW,OAAQ,CAKlDqqB,IAAK,WACD,OAAOvmB,KAAKkzM,SAEhBxsL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAewsL,EAAa52M,UAAW,UAAW,CAKrDqqB,IAAK,WACD,OAAOvmB,KAAKozM,SAEhB3sL,IAAK,SAAUjqB,GACXwD,KAAKozM,QAAU52M,GAEnBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAewsL,EAAa52M,UAAW,OAAQ,CAKlDqqB,IAAK,WACD,OAAOvmB,KAAKqzM,WAEhB5sL,IAAK,SAAUjqB,GACXwD,KAAKqzM,UAAY72M,GAErBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAewsL,EAAa52M,UAAW,UAAW,CAKrDqqB,IAAK,WACD,OAAOvmB,KAAKg1B,WAEhBvO,IAAK,SAAUjqB,GACXwD,KAAKg1B,UAAYx4B,GAErBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAewsL,EAAa52M,UAAW,WAAY,CAKtDqqB,IAAK,WAID,OAHyB,MAApBvmB,KAAK0+L,aACN1+L,KAAKszM,mBAAmBtzM,KAAK+7F,MAE1B/7F,KAAK0+L,aAEhBh4K,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAewsL,EAAa52M,UAAW,SAAU,CAKpDqqB,IAAK,WACD,OAAkB,MAAdvmB,KAAK+oM,OACL/oM,KAAK+oM,MAAQ,IAAIwK,GAAuBvzM,KAAK+7F,MAC7C/7F,KAAK+oM,MAAMiK,UAAW,EACfhzM,KAAK+oM,OAGL/oM,KAAK+oM,OAGpBriL,YAAY,EACZC,cAAc,IAOlBmsL,EAAa52M,UAAUyrB,IAAM,WACzB,IAAIohL,EAAQ,IAAI+J,EAAa9yM,KAAKkzM,SAElC,OADAnK,EAAM3vL,KAAO,GACN2vL,GAMX+J,EAAa52M,UAAUs3M,KAAO,SAAU/rH,GACpC,OAAe,IAAXA,EACO,EAEFA,EAAS,EACP,GAGC,GAOhBqrH,EAAa52M,UAAUo3M,mBAAqB,SAAUv3G,GAClD,IAAI03G,EAAQ13G,EACR4iG,EAAK,IAAIC,GAAwB5+L,KAAK+7F,MAI1C,GAFA/7F,KAAK0+L,YAAc,IAAIG,GAAY9iG,EAAKl/C,KAAM8hJ,EAAI3+L,KAAKorD,SACvDprD,KAAK0+L,YAAYiR,wBAA0B,EAC9B,MAAT8D,EAAe,CACf,IAAIC,EAAKD,EAAMvI,QAAQ3qM,OACb,MAANmzM,IACA1zM,KAAK0+L,YAAYpxC,WAAaomD,EAAGlzM,SAAS8sJ,WAC1CttJ,KAAKstJ,WAAaomD,EAAGlzM,SAAS8sJ,YAItC,IAAIqmD,EAAU3zM,KAAKwzM,KAAKz3G,EAAK63G,OAAOv+L,KAAOrV,KAAKwzM,KAAKz3G,EAAK63G,OAAOzzL,IAE7D47E,EAAK63G,OAAOzzL,GAAK,GAAK47E,EAAK63G,OAAOv+L,GAAK,IAAOs+L,IAC9C3zM,KAAK0+L,YAAYI,wBAKrB,IAAI18I,EAAWqxJ,EAAMvI,QAAQ2I,gBAAgBJ,GAAO,GAChDpnC,EAAUonC,EAAMvI,QAAQ7/H,aAAaghG,QACrCrsK,KAAKmzM,kBACDp3G,EAAK63G,OAAOzzL,GAAK,GAAK47E,EAAK63G,OAAOv+L,GAAK,GACvCrV,KAAK0+L,YAAY4Q,qBAAqBltJ,GAI1CpiD,KAAKm9K,SAASmyB,qBAAqBltJ,EAASjiC,EAAGiiC,EAAS/sC,EAAGg3J,EAAQ5qI,KAAM4qI,EAAQ1qI,IAAK0qI,EAAQ3qI,MAAO2qI,EAAQzqI,QAEjH5hC,KAAK0+L,YAAY8L,SAASxqM,OAG9B9B,OAAOooB,eAAewsL,EAAa52M,UAAW,UAAW,CAMrDqqB,IAAK,WACD,OAAOvmB,KAAKorD,SAEhB1kC,YAAY,EACZC,cAAc,IAEXmsL,EAlOuB,GCL9BgB,GAA+B,WAM/B,SAASA,KAgCT,OA7BA51M,OAAOooB,eAAewtL,EAAc53M,UAAW,QAAS,CAMpDqqB,IAAK,WAID,MAH+B,qBAApBvmB,KAAKkjE,aACZljE,KAAKkjE,WAAa,IAEfljE,KAAKkjE,WAAWrmE,QAE3B6pB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAewtL,EAAc53M,UAAW,OAAQ,CAKnDqqB,IAAK,WAID,MAH+B,qBAApBvmB,KAAKkjE,aACZljE,KAAKkjE,WAAa,IAEfljE,KAAKkjE,YAEhBx8C,YAAY,EACZC,cAAc,IAEXmtL,EAtCwB,GCJ/B92K,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAyBzCm2K,GAAwC,SAAUz1K,GAElD,SAASy1K,EAAuBx3G,GAC5B,IAAIh8F,EAAQ+9B,EAAOx8B,KAAKtB,OAASA,KAkBjC,GAZAD,EAAMg0M,iBAAmB,EAMzBh0M,EAAMizM,UAAW,EAKjBjzM,EAAMi0M,gBAAkB,IAAI9iD,EACxBn1D,aAAgBk4G,GAAa,CAI7Bl0M,EAAMg8F,KAAOA,EACb,IAAIm4G,EAAQn4G,EAEZh8F,EAAMo0M,YAAYD,GAGtB,OAAOn0M,EAuPX,OArRAi9B,GAAUu2K,EAAwBz1K,GAgClCy1K,EAAuBr3M,UAAUyjF,MAAQ,SAAUnmE,EAAOhd,GACtD,GAAqB,kBAAVgd,GAAuC,qBAAVhd,EAEpC,OADUwD,KAAKm2B,KAAK3c,GAIpB,GAAa,MAAThd,EACA,MAAM,IAAIoE,MAAM,gCAEpB,GAAIpE,EAAMu/F,OAAS/7F,KAAK+7F,KACpB,MAAM,IAAIn7F,MAAM,yDAW5B2yM,EAAuBr3M,UAAUyrB,IAAM,SAAUysL,EAAeC,GAC5D,GAA6B,qBAAlBD,EAA+B,CACtC,IAAIrL,EAAQ,IAAI+J,GAAa9yM,KAAK+7F,MAGlC,OAFAgtG,EAAM3vL,KAAO,GACbpZ,KAAK2nB,IAAIohL,GACFA,EAEN,GAAIqL,aAAyBtB,GAAc,CAK5C,IAAIt5L,EAAQxZ,KAAKm2B,KAAKvd,KAAKw7L,GAG3B,OADAp0M,KAAKs0M,SAAS96L,EAAO46L,GACd56L,EAGP,OAAO,GAOf+5L,EAAuBr3M,UAAUo4M,SAAW,SAAU96L,EAAOuvL,GACzD,IAAItnM,EAAY,IAAI2/J,EAAmB2nC,GACvC/oM,KAAK+7F,KAAKqxD,SAASzlI,IAAIlmB,IAe3B8xM,EAAuBr3M,UAAUwrH,OAAS,SAAUluG,EAAOuvL,GASvD,IAFA,IAAI5yK,EAAO,GACPt5B,EAASmD,KAAKm2B,KAAKt5B,OACdD,EAAI4c,EAAO5c,EAAIC,EAAQD,IAC5Bu5B,EAAKvd,KAAK5Y,KAAKm2B,KAAK+6D,OAExBlxF,KAAKm2B,KAAKvd,KAAKmwL,GACf,IAASnsM,EAAI,EAAGA,EAAIu5B,EAAKt5B,OAAQD,IAC7BoD,KAAKm2B,KAAKvd,KAAKud,EAAKv5B,IAGxBoD,KAAKu0M,YAAY/6L,EAAOuvL,IAM5BwK,EAAuBr3M,UAAUq4M,YAAc,SAAU/6L,EAAOuvL,GAC5D,GAAa,MAATA,EACA,MAAM,IAAInoM,MAAM,+BAEpB,IAAIa,EAAY,IAAI2/J,EAAmB2nC,GACvC/oM,KAAK+7F,KAAKqxD,SAAS1lC,OAAOluG,EAAO/X,IAOrC8xM,EAAuBr3M,UAAUi4M,YAAc,SAAUK,GAIrD,IAAIpnD,EAAWptJ,KAAK+7F,KAAKqxD,SACVptJ,KAAK+7F,KAAK+2E,eAMZ0hC,EAAW5rD,WAOxB,IAAI6rD,EAAa,IAAI50C,EACjB60C,EAAgB,IAAI70C,EA4GpB80C,EAAW,GACfA,EAAS/7L,KA5GO,KA6GhB67L,EAAW56L,KAAO86L,EAClBvnD,EAAS1lC,OAAO,EAAG,IAAI05C,EAAmBqzC,KAC1CE,EAAW,IACF/7L,KA9GU,KA+GnB87L,EAAc76L,KAAO86L,EACrBvnD,EAAS1lC,OAAO0lC,EAAStzE,MAAO,IAAIsnF,EAAmBszC,KAM3DnB,EAAuBr3M,UAAUiC,QAAU,SAAU4qM,GACjD,GAAa,MAATA,EACA,MAAM,IAAInoM,MAAM,gCAGpB,OADYZ,KAAKm2B,KAAKh4B,QAAQ4qM,IAG3BwK,EAtRiC,CAuR1CO,ICvSEG,GAA6B,WAM7B,SAASA,EAAY9iD,GAMjBnxJ,KAAK40M,eAAiB,EAMtB50M,KAAKglL,UAAW,EAMhBhlL,KAAKyxJ,qBAAuB,IAAI9E,EAChC3sJ,KAAK60M,eAAiB1jD,EAwI1B,OAtIAjzJ,OAAOooB,eAAe2tL,EAAY/3M,UAAW,UAAW,CAMpDqqB,IAAK,WAID,OAAOvmB,KAAK80M,YAEhBruL,IAAK,SAAUjqB,GACXwD,KAAK80M,WAAat4M,GAEtBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe2tL,EAAY/3M,UAAW,aAAc,CAKvDqqB,IAAK,WACD,OAAOvmB,KAAK60M,gBAEhBnuL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe2tL,EAAY/3M,UAAW,UAAW,CAKpDqqB,IAAK,WACD,OAAOvmB,KAAK60M,gBAEhBnuL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe2tL,EAAY/3M,UAAW,eAAgB,CAKzDqqB,IAAK,WACD,IAAIwiL,EAAQ/oM,KAAK+0M,OACbv7L,EAAQxZ,KAAKg1M,kBAEjB,OADkBjM,EAAMppH,MAAMnmE,IAGlCkN,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe2tL,EAAY/3M,UAAW,oBAAqB,CAK9DqqB,IAAK,WACD,GAAmC,IAA/BvmB,KAAKi1M,gBAAgBn7H,QAAuC,IAAxB95E,KAAK40M,cAAsB,CAC/D,IAAI7L,EAAQ/oM,KAAKi1M,gBAAgBttL,MACjC3nB,KAAK40M,cAAgB50M,KAAKi1M,gBAAgB92M,QAAQ4qM,GAEtD,OAAO/oM,KAAK40M,eAMhBnuL,IAAK,SAAUjqB,GACX,GAAIA,EAAQ,GAAKA,EAAQwD,KAAK+0M,OAAOj7H,MAAQ,EACzC,MAAM,IAAIl5E,MAAM,6FAGhBZ,KAAK40M,cAAgBp4M,EACrBwD,KAAKglL,UAAW,GAGxBt+J,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe2tL,EAAY/3M,UAAW,SAAU,CAKnDqqB,IAAK,WAID,OAH4B,MAAxBvmB,KAAKi1M,iBAA2D,qBAAzBj1M,KAAKi1M,kBAC5Cj1M,KAAKi1M,gBAAkB,IAAI1B,GAAuBvzM,OAE/CA,KAAKi1M,iBAEhBvuL,YAAY,EACZC,cAAc,IAMlBstL,EAAY/3M,UAAU42K,aAAe,WAKjC,OAJsB,MAAlB9yK,KAAK8sJ,YACL9sJ,KAAK8sJ,UAAY,IAAIiyC,GACrB/+L,KAAKmxJ,WAAWxxE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB3E,UAAW9sJ,KAAK8sJ,YAEtE9sJ,KAAK8sJ,WAEhB5uJ,OAAOooB,eAAe2tL,EAAY/3M,UAAW,WAAY,CAKrDqqB,IAAK,WACD,IAAIhqB,EAAMyD,KAAK60M,eAAel1H,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBrE,UACnEA,EAAW7wJ,EAMf,OAJgB,MAAZ6wJ,IACAA,EAAW,IAAI8G,EACfl0J,KAAK60M,eAAel1H,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBrE,SAAUA,IAEpEA,GAEX1mI,YAAY,EACZC,cAAc,IAMlBstL,EAAY/3M,UAAUstM,aAAe,SAAUnmM,GAC3CrD,KAAK8sJ,UAAYzpJ,EACjBrD,KAAKmxJ,WAAWxxE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB3E,UAAW9sJ,KAAK8sJ,WACzE9sJ,KAAKglL,UAAW,GAEbivB,EAjKsB,GCC7BiB,GAAyC,WACzC,SAASA,EAAwBn5G,GAM7B/7F,KAAKm1M,6BAA+B,mDAKpCn1M,KAAKo1M,2BAA6B,6CAKlCp1M,KAAKyxJ,qBAAuB,IAAI9E,EAKhC3sJ,KAAKq1M,oBAAsB,IAAInhD,EAK/Bl0J,KAAKs1M,MAAQ,GACO,qBAATv5G,IACP/7F,KAAK+7F,KAAOA,GA6GpB,OA1GA79F,OAAOooB,eAAe4uL,EAAwBh5M,UAAW,cAAe,CAKpEqqB,IAAK,WACD,OAAOvmB,KAAKq1M,qBAEhB5uL,IAAK,SAAUjqB,GACXwD,KAAKq1M,oBAAsB74M,GAE/BkqB,YAAY,EACZC,cAAc,IAOlBuuL,EAAwBh5M,UAAUyrB,IAAM,SAAU4tL,GAE9Cv1M,KAAKw1M,MAAMD,IAOfL,EAAwBh5M,UAAUs5M,MAAQ,SAAUD,GAChD,GAAsC,qBAA3BA,EAAW13M,YAoDlB,OAFA03M,EAAWE,QAAQz1M,KAAK+7F,MACxB/7F,KAAKq1M,oBAAoB1tL,IAAI,IAAIy5I,EAAmBm0C,IAC7Cv1M,KAAKs1M,MAAM18L,KAAK28L,GAnDvB,IACIG,GADS,IAAI/+B,IACSE,OAAO0+B,EAAWjkM,KAAMikM,EAAWt5J,KAAMs5J,EAAWp3B,aAAc,IAAIlV,GAAOssC,EAAWlxJ,OAAO3V,MAAQ,IAAI,EAAO,IAAIu6H,GAAM,EAAG,IACrJ0sC,EAAeJ,EAAWlxJ,OAAOhvC,EACrC,GAAkC,IAA9BqgM,EAAa75H,MAAMh/E,OAAc,CACjC,IAAIggD,EAAO04J,EAAWt5J,KAAKy+H,cAAcg7B,EAAa75H,MAAM,GAAGvqE,MAC/DikM,EAAWlxJ,OAAS,IAAI6kH,GAAW,IAAIF,GAAOusC,EAAWlxJ,OAAOlkC,EAAGw1L,GAAe94J,GAClF04J,EAAWjkM,KAAOokM,EAAa75H,MAAM,GAAGvqE,KAExCtR,KAAK+7F,KAAKohF,SAAS8qB,WAAWsN,EAAWjkM,KAAMikM,EAAWt5J,KAAM,KAAMs5J,EAAW1iC,MAAO0iC,EAAWlxJ,OAAOlkC,EAAGo1L,EAAWlxJ,OAAOhvC,EAAGkgM,EAAWlxJ,OAAO3V,MAAO6mK,EAAWlxJ,OAAO1V,OAAQ,MAErL4mK,EAAWE,QAAQz1M,KAAK+7F,MACxB/7F,KAAK41M,SAASL,GACdv1M,KAAKq1M,oBAAoB1tL,IAAI,IAAIy5I,EAAmBm0C,IACpDv1M,KAAKs1M,MAAM18L,KAAK28L,QAGhB,IAAK,IAAI34M,EAAI,EAAGA,EAAI84M,EAAa75H,MAAMh/E,OAAQD,IAAK,CAC5CigD,EAAO04J,EAAWt5J,KAAKy+H,cAAcg7B,EAAa75H,MAAMj/E,GAAG0U,MAC/D,GAAU,IAAN1U,EACA24M,EAAWlxJ,OAAS,IAAI6kH,GAAWqsC,EAAWlxJ,OAAOlkC,EAAGw1L,EAAc94J,EAAKnO,MAAOmO,EAAKlO,QACvF4mK,EAAWjkM,KAAOokM,EAAa75H,MAAMj/E,GAAG0U,KAExCtR,KAAK+7F,KAAKohF,SAAS8qB,WAAWsN,EAAWjkM,KAAMikM,EAAWt5J,KAAM,KAAMs5J,EAAW1iC,MAAO0iC,EAAWlxJ,OAAOlkC,EAAGw1L,EAAc94J,EAAKnO,MAAOmO,EAAKlO,OAAQ,MAEpJ4mK,EAAWE,QAAQz1M,KAAK+7F,MACxB/7F,KAAK41M,SAASL,GACdv1M,KAAKq1M,oBAAoB1tL,IAAI,IAAIy5I,EAAmBm0C,IACpDv1M,KAAKs1M,MAAM18L,KAAK28L,GAEhBI,GAAgBJ,EAAWlxJ,OAAO1V,WAEjC,CACD,IAAIq/G,EAAQunD,EAAWt2M,QACvB+uJ,EAAM3pG,OAAS,IAAI6kH,GAAW,IAAIF,GAAOusC,EAAWlxJ,OAAOlkC,EAAGw1L,GAAe94J,GAC7EmxG,EAAM18I,KAAOokM,EAAa75H,MAAMj/E,GAAG0U,KAEnCtR,KAAK+7F,KAAKohF,SAAS8qB,WAAWj6C,EAAM18I,KAAM08I,EAAM/xG,KAAM,KAAM+xG,EAAM6kB,MAAO7kB,EAAM3pG,OAAOlkC,EAAG6tI,EAAM3pG,OAAOhvC,EAAG24I,EAAM3pG,OAAO3V,MAAOs/G,EAAM3pG,OAAO1V,OAAQ,MAElJq/G,EAAMynD,QAAQz1M,KAAK+7F,MACnB/7F,KAAK41M,SAAS5nD,GACdhuJ,KAAKq1M,oBAAoB1tL,IAAI,IAAIy5I,EAAmBpT,IACpDhuJ,KAAKs1M,MAAM18L,KAAKo1I,GAEhB2nD,GAAgB3nD,EAAM3pG,OAAO1V,UAgBjDumK,EAAwBh5M,UAAU05M,SAAW,SAAUL,GACnD,IAAIhK,EAAK1mC,GAAciN,IACnB5B,EAAUqlC,EAAWrxJ,MAAMqoD,QAAQg/F,GACvCgK,EAAWpkD,WAAWxxE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB5qJ,EAAGqpK,IAEtEhyK,OAAOooB,eAAe4uL,EAAwBh5M,UAAW,UAAW,CAMhEqqB,IAAK,WACD,OAAOvmB,KAAKq1M,qBAEhB3uL,YAAY,EACZC,cAAc,IAEXuuL,EA1IkC,GCVzCl4K,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GA0CzC4nK,GAAyB,SAAUlnK,GAOnC,SAASknK,IACL,IAAIjlM,EAAQ+9B,EAAOx8B,KAAKtB,KAAM,IAAIkxJ,IAAoBlxJ,KAetD,OARAD,EAAM81M,qBAAuB,KAM7B91M,EAAMuyJ,UAAY,KAClBvyJ,EAAMsqC,aACCtqC,EAmMX,OAzNAi9B,GAAUgoK,EAASlnK,GAwBnB5/B,OAAOooB,eAAe0+K,EAAQ9oM,UAAW,WAAY,CAMjDqqB,IAAK,WACD,OAAqB,OAAjBvmB,KAAKkrM,SAA4C,OAAxBlrM,KAAKkrM,QAAQ3qM,OAC/BP,KAAKkrM,QAAQ3qM,OAAOC,SAGpB,MAGfkmB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe0+K,EAAQ9oM,UAAW,WAAY,CAwBjDqqB,IAAK,WACD,IAAI5nB,EAASqB,KAAK81M,aAAa34B,SAE/B,OADAx+K,EAAO2sE,YAActrE,KACdrB,GAEX+nB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe0+K,EAAQ9oM,UAAW,aAAc,CAKnDqqB,IAAK,WACD,GAAqB,OAAjBvmB,KAAKkrM,QACL,MAAM,IAAItqM,MAAM,8CAEpB,OAA+B,OAAxBZ,KAAKkrM,QAAQ3qM,OAAkBP,KAAKkrM,QAAQ98F,eAAew6C,WAAa5oJ,KAAKkrM,QAAQ3qM,OAAOC,SAASooJ,YAEhHliI,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe0+K,EAAQ9oM,UAAW,OAAQ,CAK7CqqB,IAAK,WACD,OAAOvmB,KAAKkrM,QAAQ7/H,aAAaxuB,MAErCn2B,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe0+K,EAAQ9oM,UAAW,SAAU,CAK/CqqB,IAAK,WACD,OAAOvmB,KAAKkrM,QAAQ7/H,aAAauoI,QAErCltL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe0+K,EAAQ9oM,UAAW,cAAe,CAKpDqqB,IAAK,WAQD,OAPiC,MAA7BvmB,KAAK61M,uBACL71M,KAAK61M,qBAAuB,IAAIX,GAAwBl1M,MAExDA,KAAKmxJ,WAAWxxE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBxD,OAAQjuJ,KAAK61M,qBAAqB70M,SAE3FhB,KAAK61M,qBAAqB9kJ,YAAc/wD,KAAKmxJ,WAAWxxE,MAAMtjF,SAAS2D,KAAKyxJ,qBAAqBxD,SAE9FjuJ,KAAK61M,sBAEhBnvL,YAAY,EACZC,cAAc,IAOlBq+K,EAAQ9oM,UAAUmuC,WAAa,WAC3BrqC,KAAKmxJ,WAAWxxE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBvnJ,KAAM,IAAIg+I,EAAQ,SAC3EloJ,KAAKmxJ,WAAWyB,sBAAwB,IAAIa,EAAyBzzJ,OAMzEglM,EAAQ9oM,UAAU65M,WAAa,SAAU7K,GACrClrM,KAAKkrM,QAAUA,EACflrM,KAAKmxJ,WAAWxxE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBlxJ,OAAQ,IAAI6gK,EAAmB8pC,KAM5FlG,EAAQ9oM,UAAU85M,cAAgB,WAC9Bh2M,KAAKi2M,cAAe,GAyBxBjR,EAAQ9oM,UAAUg6M,cAAgB,WAC9B,IAAI9qF,EAAcprH,KAAKkrM,QAAQ2I,gBAAgB7zM,MAAM,GACrD,OAAO,IAAIipK,GAAM79C,EAAY18E,MAAO08E,EAAYz8E,SAMpDq2J,EAAQ9oM,UAAU22J,cAAgB,WAC9B,IAAIsjD,EAAMn2M,KAAKQ,cACIxE,WAARm6M,GAA4B,MAAPA,GAC5Bn2M,KAAKo2M,kBAAkBD,GAEL,MAAlBn2M,KAAKsyJ,WAA+C,qBAAnBtyJ,KAAKsyJ,WACtCtyJ,KAAKsyJ,UAAUtyJ,OAOvBglM,EAAQ9oM,UAAUk6M,kBAAoB,SAAU51M,GAG5C,GADuBR,KAAKkrM,QAAQmL,kBAAkB71M,EAAUR,MAAM,GAChD,CAClB,IAAIs2M,EAAY,IAAIxD,GAAa9yM,MAAM,GAGvC,GAFAA,KAAK+0M,OAAOrtF,OAAO,EAAG4uF,GACtBt2M,KAAKkrM,QAAQqL,cAAcv2M,KAAMs2M,EAAW91M,GAAU,GAC3B,OAAvB81M,EAAUn5B,UAAmD,qBAAvBm5B,EAAUn5B,SAChD,IAAK,IAAIvgL,EAAI,EAAGA,EAAI05M,EAAUn5B,SAASH,gBAAgBA,gBAAgBngL,OAAQD,IAAK,CAChF,IAAImgL,EAAYu5B,EAAUn5B,SAASH,gBAAgBA,gBAAgBpgL,GACnEmgL,EAAUp/G,MAAM+sI,YAAY4L,EAAUn5B,SAAUJ,EAAUn1I,SAAUm1I,EAAUiB,SAAUjB,EAAUkB,WAM9G,GADwBj+K,KAAKkrM,QAAQmL,kBAAkB71M,EAAUR,MAAM,GAChD,CACnB,IAAIw2M,EAAa,IAAI1D,GAAa9yM,MAAM,GACxCA,KAAK+0M,OAAOptL,IAAI6uL,GAChBx2M,KAAKkrM,QAAQqL,cAAcv2M,KAAMw2M,EAAYh2M,GAAU,KAGxDwkM,EA1NkB,CA2N3BiP,ICjQEwC,GAAoC,WACpC,SAASA,EAAmB16G,GAEpB/7F,KAAKkzM,QADW,qBAATn3G,EACQA,EAGA,KAcvB,OAXA79F,OAAOooB,eAAemwL,EAAmBv6M,UAAW,OAAQ,CAKxDqqB,IAAK,WACD,OAAOvmB,KAAKkzM,SAEhBxsL,YAAY,EACZC,cAAc,IAEX8vL,EApB6B,GCApCC,GAA0C,WAM1C,SAASA,EAAyBxL,GAO9B,GADAlrM,KAAK80M,WAAa,KACH,MAAX5J,EACA,MAAMtqM,MAAM,oCAEhBZ,KAAKkrM,QAAUA,EAuCnB,OArCAhtM,OAAOooB,eAAeowL,EAAyBx6M,UAAW,UAAW,CAMjEqqB,IAAK,WACD,OAAOvmB,KAAK80M,YAEhBruL,IAAK,SAAUjqB,GACXwD,KAAK80M,WAAat4M,GAEtBkqB,YAAY,EACZC,cAAc,IAOlB+vL,EAAyBx6M,UAAU60B,SAAW,SAAUgrE,GACpD,OAAO/7F,KAAKkrM,QAAQn6K,SAASgrE,IAMjC26G,EAAyBx6M,UAAUmsB,OAAS,SAAU0zE,GAClD/7F,KAAKkrM,QAAQ7iL,OAAO0zE,IAMxB26G,EAAyBx6M,UAAUyrB,IAAM,WACrC,OAAO3nB,KAAKkrM,QAAQvjL,OAEjB+uL,EAvDmC,GCE1CC,GAAqC,WAMrC,SAASA,KA2RT,OAxRAz4M,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,OAAQ,CAOzDqqB,IAAK,WACD,OAAOvmB,KAAK42M,cAEhBnwL,IAAK,SAAUjqB,GACXwD,KAAK42M,aAAe52M,KAAK62M,aAAar6M,EAAO+iJ,EAAa8uD,OAE9D3nL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,MAAO,CAKxDqqB,IAAK,WACD,OAAOvmB,KAAK82M,aAEhBrwL,IAAK,SAAUjqB,GACXwD,KAAK82M,YAAc92M,KAAK62M,aAAar6M,EAAO+iJ,EAAay1B,MAE7DtuJ,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,QAAS,CAK1DqqB,IAAK,WACD,OAAOvmB,KAAK+2M,eAEhBtwL,IAAK,SAAUjqB,GACXwD,KAAK+2M,cAAgB/2M,KAAK62M,aAAar6M,EAAO+iJ,EAAa6qD,QAE/D1jL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,SAAU,CAK3DqqB,IAAK,WACD,OAAOvmB,KAAKg3M,gBAEhBvwL,IAAK,SAAUjqB,GACXwD,KAAKg3M,eAAiBh3M,KAAK62M,aAAar6M,EAAO+iJ,EAAagrD,SAEhE7jL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,WAAY,CAK7DqqB,IAAK,WACD,OAAOvmB,KAAKi3M,UAEhBxwL,IAAK,SAAUjqB,GACXwD,KAAKi3M,SAAWj3M,KAAK62M,aAAar6M,EAAO+iJ,EAAa8uD,OAE1D3nL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,UAAW,CAK5DqqB,IAAK,WACD,OAAOvmB,KAAKk3M,SAEhBzwL,IAAK,SAAUjqB,GACXwD,KAAKk3M,QAAUl3M,KAAK62M,aAAar6M,EAAO+iJ,EAAay1B,MAEzDtuJ,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,YAAa,CAK9DqqB,IAAK,WACD,OAAOvmB,KAAKm3M,WAEhB1wL,IAAK,SAAUjqB,GACXwD,KAAKm3M,UAAYn3M,KAAK62M,aAAar6M,EAAO+iJ,EAAa6qD,QAE3D1jL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,aAAc,CAK/DqqB,IAAK,WACD,OAAOvmB,KAAKo3M,YAEhB3wL,IAAK,SAAUjqB,GACXwD,KAAKo3M,WAAap3M,KAAK62M,aAAar6M,EAAO+iJ,EAAagrD,SAE5D7jL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,UAAW,CAK5DqqB,IAAK,WACD,OAAOvmB,KAAKq3M,SAEhB5wL,IAAK,SAAUjqB,GACXwD,KAAKq3M,QAAUr3M,KAAK62M,aAAar6M,EAAO+iJ,EAAa8uD,OAEzD3nL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,SAAU,CAK3DqqB,IAAK,WACD,OAAOvmB,KAAKs3M,QAEhB7wL,IAAK,SAAUjqB,GACXwD,KAAKs3M,OAASt3M,KAAK62M,aAAar6M,EAAO+iJ,EAAay1B,MAExDtuJ,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,WAAY,CAK7DqqB,IAAK,WACD,OAAOvmB,KAAKu3M,UAEhB9wL,IAAK,SAAUjqB,GACXwD,KAAKu3M,SAAWv3M,KAAK62M,aAAar6M,EAAO+iJ,EAAa6qD,QAE1D1jL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeqwL,EAAoBz6M,UAAW,YAAa,CAK9DqqB,IAAK,WACD,OAAOvmB,KAAKw3M,WAEhB/wL,IAAK,SAAUjqB,GACXwD,KAAKw3M,UAAYx3M,KAAK62M,aAAar6M,EAAO+iJ,EAAagrD,SAE3D7jL,YAAY,EACZC,cAAc,IAOlBgwL,EAAoBz6M,UAAUu7M,QAAU,SAAU17G,GAC9C,GAAY,MAARA,EACA,MAAM,IAAIn7F,MAAM,8BAYpB,OARWZ,KAAK03M,OAAO37G,GAEU,MAAjB/7F,KAAK23M,SAAoB33M,KAAK23M,SAAW33M,KAAKyhC,KAG9B,MAAhBzhC,KAAK43M,QAAmB53M,KAAK43M,QAAU53M,KAAKyhC,MAShEk1K,EAAoBz6M,UAAU27M,OAAS,SAAU97G,GAC7C,GAAY,MAARA,EACA,MAAM,IAAIn7F,MAAM,8BAYpB,OARWZ,KAAK03M,OAAO37G,GAES,MAAhB/7F,KAAK83M,QAAmB93M,KAAK83M,QAAU93M,KAAK2hC,IAG7B,MAAf3hC,KAAK+3M,OAAkB/3M,KAAK+3M,OAAS/3M,KAAK2hC,KAS9Dg1K,EAAoBz6M,UAAU87M,SAAW,SAAUj8G,GAC/C,GAAY,MAARA,EACA,MAAM,IAAIn7F,MAAM,8BAYpB,OARWZ,KAAK03M,OAAO37G,GAEW,MAAlB/7F,KAAKi4M,UAAqBj4M,KAAKi4M,UAAYj4M,KAAK0hC,MAG/B,MAAjB1hC,KAAKk4M,SAAoBl4M,KAAKk4M,SAAWl4M,KAAK0hC,OASlEi1K,EAAoBz6M,UAAUi8M,UAAY,SAAUp8G,GAChD,GAAY,MAARA,EACA,MAAM,IAAIn7F,MAAM,8BAYpB,OARWZ,KAAK03M,OAAO37G,GAEY,MAAnB/7F,KAAKo4M,WAAsBp4M,KAAKo4M,WAAap4M,KAAK4hC,OAGhC,MAAlB5hC,KAAKq4M,UAAqBr4M,KAAKq4M,UAAYr4M,KAAK4hC,QASpE+0K,EAAoBz6M,UAAUw7M,OAAS,SAAU37G,GAC7C,IAAI6wD,EAAQ7wD,EAAKmvG,QAAQ1qM,SAASosJ,MASlC,OAPIA,EAAM0rD,oBAAoBv3D,YAAYhlD,GAC9B6wD,EAAM0rD,oBAAoBj8M,SAAS0/F,GAAQ,EAG3C6wD,EAAMzuJ,QAAQ49F,GAAQ,GAEb,IAAO,GAOhC46G,EAAoBz6M,UAAU26M,aAAe,SAAUtrJ,EAAiBrhD,GACpE,GAAuB,MAAnBqhD,EAAyB,CACzB,GAAqC,qBAAzBA,EAAgBrhD,MAA0BqhD,EAAgBrhD,OAASq1I,EAAa6oB,KACxF,MAAM,IAAIxnK,MAAM,wFAEpB2qD,EAAgBrhD,KAAOA,EAE3B,OAAOqhD,GAEJorJ,EAjS8B,GCNrC35K,GAAyC,WACzC,IAAIC,EAAgB,SAAUn2B,EAAGF,GAI7B,OAHAq2B,EAAgB/+B,OAAOg/B,gBAClB,CAAEC,UAAW,cAAgB/+B,OAAS,SAAU0I,EAAGF,GAAKE,EAAEq2B,UAAYv2B,IACvE,SAAUE,EAAGF,GAAK,IAAK,IAAI4J,KAAK5J,EAAOA,EAAEpH,eAAegR,KAAI1J,EAAE0J,GAAK5J,EAAE4J,MACpD1J,EAAGF,IAE5B,OAAO,SAAUE,EAAGF,GAEhB,SAASw2B,IAAOp9B,KAAKzC,YAAcuJ,EADnCm2B,EAAcn2B,EAAGF,GAEjBE,EAAE5K,UAAkB,OAAN0K,EAAa1I,OAAOm/B,OAAOz2B,IAAMw2B,EAAGlhC,UAAY0K,EAAE1K,UAAW,IAAIkhC,IAV1C,GAoBzCm7K,GAAoC,SAAUz6K,GAO9C,SAASy6K,IACL,IAAIx4M,EAAQ+9B,EAAOx8B,KAAKtB,OAASA,KAEjC,OADAD,EAAMy4M,UAAYz4M,EAAM04M,SAAW14M,EAAM24M,WAAa34M,EAAM44M,YAAc54M,EAAM64M,YAAa,EACtF74M,EAyEX,OAlFAi9B,GAAUu7K,EAAoBz6K,GAW9B5/B,OAAOooB,eAAeiyL,EAAmBr8M,UAAW,4BAA6B,CAM7EqqB,IAAK,WACD,OAAOvmB,KAAKw4M,WAEhB/xL,IAAK,SAAUjqB,GACXwD,KAAKw4M,UAAYh8M,GAErBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeiyL,EAAmBr8M,UAAW,2BAA4B,CAK5EqqB,IAAK,WACD,OAAOvmB,KAAKy4M,UAEhBhyL,IAAK,SAAUjqB,GACXwD,KAAKy4M,SAAWj8M,GAEpBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeiyL,EAAmBr8M,UAAW,6BAA8B,CAK9EqqB,IAAK,WACD,OAAOvmB,KAAK04M,YAEhBjyL,IAAK,SAAUjqB,GACXwD,KAAK04M,WAAal8M,GAEtBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeiyL,EAAmBr8M,UAAW,8BAA+B,CAK/EqqB,IAAK,WACD,OAAOvmB,KAAK24M,aAEhBlyL,IAAK,SAAUjqB,GACXwD,KAAK24M,YAAcn8M,GAEvBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeiyL,EAAmBr8M,UAAW,sBAAuB,CAKvEqqB,IAAK,WACD,OAAOvmB,KAAK44M,YAEhBnyL,IAAK,SAAUjqB,GACXwD,KAAK44M,WAAap8M,GAEtBkqB,YAAY,EACZC,cAAc,IAEX4xL,EAnF6B,CAoFtC5B,ICxFEkC,GAA4B,WAC5B,SAASA,EAAWr4M,EAAU6qE,GAO1BrrE,KAAK84M,UAAY,IAAIrC,GAKrBz2M,KAAK+4M,SAAW,GAKhB/4M,KAAKyxJ,qBAAuB,IAAI9E,EAChC3sJ,KAAK2/I,YAAcn/I,EACS,qBAAjB6qE,GACPrrE,KAAK6rH,SAAWrrH,EAAS6qE,aAAapsE,QACtCe,KAAKg5M,gBAAkBh5M,KAAK6rH,SAAS5sH,UAGrCe,KAAK6rH,SAAWxgD,EAAapsE,QAC7Be,KAAKg5M,gBAAkBh5M,KAAK6rH,SAAS5sH,SAEzCe,KAAKqqC,aAsdT,OApdAnsC,OAAOooB,eAAeuyL,EAAW38M,UAAW,SAAU,CAMlDqqB,IAAK,WACD,OAAOvmB,KAAKi5M,mBAEhBxyL,IAAK,SAAUjqB,GACXwD,KAAKi5M,kBAAoBz8M,EACzBwD,KAAKkrM,QAAQvrH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBlxJ,OAAQ,IAAI6gK,EAAmB5kK,KAEzFkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeuyL,EAAW38M,UAAW,iBAAkB,CAK1DqqB,IAAK,WACD,OAAOvmB,KAAK2/I,aAEhBj5H,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeuyL,EAAW38M,UAAW,eAAgB,CAKxDqqB,IAAK,WACD,OAAOvmB,KAAK6rH,UAEhBplG,IAAK,SAAUjqB,GACX,GAAa,MAATA,EAIA,MAAMoE,MAAM,0BAHZZ,KAAK6rH,SAAWrvH,GAMxBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeuyL,EAAW38M,UAAW,UAAW,CAKnDqqB,IAAK,WACD,OAAOvmB,KAAKkrM,SAEhBxkL,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeuyL,EAAW38M,UAAW,QAAS,CAKjDqqB,IAAK,WACD,OAAOvmB,KAAKk5M,gBAAgBp/H,OAEhCpzD,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeuyL,EAAW38M,UAAW,WAAY,CAKpDqqB,IAAK,WAID,OAHyB,MAArBvmB,KAAKm5M,eACLn5M,KAAKm5M,aAAe,IAAIZ,IAErBv4M,KAAKm5M,cAEhB1yL,IAAK,SAAUjqB,GACXwD,KAAKm5M,aAAe38M,GAExBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeuyL,EAAW38M,UAAW,WAAY,CAKpDqqB,IAAK,WACD,OAAOvmB,KAAKi5M,kBAAkBz4M,UAElCkmB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeuyL,EAAW38M,UAAW,QAAS,CAKjDqqB,IAAK,WAID,OAH4B,MAAxBvmB,KAAKo5M,iBAA2D,qBAAzBp5M,KAAKo5M,kBAC5Cp5M,KAAKo5M,gBAAkB,IAAI1C,GAAyB12M,OAEjDA,KAAKo5M,iBAEhB1yL,YAAY,EACZC,cAAc,IAOlBkyL,EAAW38M,UAAUivM,SAAW,WAC5B,OAAOnrM,KAAK+4M,UAMhBF,EAAW38M,UAAUm9M,iBAAmB,SAAUt9G,EAAM7lD,GACpD,IAAImO,EAASrkD,KAAK6zM,gBAAgB93G,GAAM,GAGxC,OAFA7lD,EAAM/1B,GAAKkkC,EAAOlkC,EAClB+1B,EAAM7gC,EAAIrV,KAAKqrE,aAAa18B,OAAUuH,EAAM7gC,EACrC6gC,GAOX2iK,EAAW38M,UAAUo9M,gBAAkB,SAAUztF,GAC7C7rH,KAAK6rH,SAAWA,EAChB7rH,KAAKssE,MAAMjkB,YAAcwjE,EAASxjE,YAClCroD,KAAKssE,MAAMqJ,OAASk2C,EAASl2C,OAC7B31E,KAAKssE,MAAMzvB,KAAOgvE,EAAShvE,KAC3B78C,KAAKssE,MAAMsnI,OAAS/nF,EAAS+nF,QAMjCiF,EAAW38M,UAAUmuC,WAAa,WAC9BrqC,KAAKk5M,gBAAkB,IAAIhlD,EAC3Bl0J,KAAKkrM,QAAU,IAAIh6C,EACnBlxJ,KAAKssE,MAAQ,IAAIitI,GAAkBv5M,KAAK2/I,aACxC3/I,KAAKkrM,QAAQh4C,iBAAmB,IAAIM,EAAwBxzJ,KAAMA,KAAKssE,OACvEtsE,KAAKw5M,UAAY,IAAI9lD,EAAU,GAC/B1zJ,KAAKkrM,QAAQvrH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB33E,MAAO95E,KAAKw5M,WAClEx5M,KAAKkrM,QAAQvrH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBvnJ,KAAM,IAAIg+I,EAAQloJ,KAAKyxJ,qBAAqB7E,QAClG5sJ,KAAKkrM,QAAQvrH,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB5E,KAAM7sJ,KAAKk5M,kBAUrEL,EAAW38M,UAAUm6M,kBAAoB,SAAU71M,EAAUu7F,EAAM09G,GAC/D,IAAIC,EAAkB15M,KAAK25M,qBAAqBn5M,EAAUu7F,EAAM09G,GAC5DG,EAAmB55M,KAAK65M,oBAAoB99G,EAAM09G,GACtD,OAAQC,EAAgB78M,OAAS,GAAK+8M,EAAiB/8M,OAAS,GAWpEg8M,EAAW38M,UAAUy9M,qBAAuB,SAAUn5M,EAAUu7F,EAAM09G,GAClE,IAAIK,EAAY,GAqBhB,OApBI95M,KAAKkqB,SAAS6vL,0BAA8D,MAAlCv5M,EAAS0pB,SAAS2tL,OAAO97G,MAC5Dv7F,EAAS0pB,SAAS2tL,OAAO97G,GAAM09G,aAAcA,GAAiBj5M,EAAS0pB,SAAS2tL,OAAO97G,GAAM09G,YAAcA,IAC9GK,EAAUlhM,KAAKpY,EAAS0pB,SAAS2tL,OAAO97G,IAG5C/7F,KAAKkqB,SAAS8vL,6BAAoE,MAArCx5M,EAAS0pB,SAASiuL,UAAUp8G,MAClEv7F,EAAS0pB,SAASiuL,UAAUp8G,GAAM09G,aAAcA,GAAiBj5M,EAAS0pB,SAASiuL,UAAUp8G,GAAM09G,YAAcA,IACpHK,EAAUlhM,KAAKpY,EAAS0pB,SAASiuL,UAAUp8G,IAG/C/7F,KAAKkqB,SAAS+vL,2BAAgE,MAAnCz5M,EAAS0pB,SAASutL,QAAQ17G,MAC9Dv7F,EAAS0pB,SAASutL,QAAQ17G,GAAM09G,aAAcA,GAAiBj5M,EAAS0pB,SAASutL,QAAQ17G,GAAM09G,YAAcA,IAChHK,EAAUlhM,KAAKpY,EAAS0pB,SAASutL,QAAQ17G,IAG7C/7F,KAAKkqB,SAASgwL,4BAAkE,MAApC15M,EAAS0pB,SAAS8tL,SAASj8G,MAChEv7F,EAAS0pB,SAAS8tL,SAASj8G,GAAM09G,aAAcA,GAAiBj5M,EAAS0pB,SAAS8tL,SAASj8G,GAAM09G,YAAcA,IAClHK,EAAUlhM,KAAKpY,EAAS0pB,SAAS8tL,SAASj8G,IAG3C+9G,GAUXjB,EAAW38M,UAAU29M,oBAAsB,SAAU99G,EAAM09G,GACvD,IAoBQN,EApBJW,EAAY,GACkB,MAA9B95M,KAAKkqB,SAAS2tL,OAAO97G,QACjBo9G,EAAen5M,KAAKkqB,SAAS2tL,OAAO97G,IACpB09G,aAAcA,GAAiBN,EAAaM,YAAcA,IAC1EK,EAAUlhM,KAAKugM,IAGc,MAAjCn5M,KAAKkqB,SAASiuL,UAAUp8G,QACpBo9G,EAAen5M,KAAKkqB,SAASiuL,UAAUp8G,IACvB09G,aAAcA,GAAiBN,EAAaM,YAAcA,IAC1EK,EAAUlhM,KAAKugM,IAGY,MAA/Bn5M,KAAKkqB,SAASutL,QAAQ17G,QAClBo9G,EAAen5M,KAAKkqB,SAASutL,QAAQ17G,IACrB09G,aAAcA,GAAiBN,EAAaM,YAAcA,IAC1EK,EAAUlhM,KAAKugM,IAGa,MAAhCn5M,KAAKkqB,SAAS8tL,SAASj8G,QACnBo9G,EAAen5M,KAAKkqB,SAAS8tL,SAASj8G,IACtB09G,aAAcA,GAAiBN,EAAaM,YAAcA,IAC1EK,EAAUlhM,KAAKugM,IAGvB,OAAOW,GAOXjB,EAAW38M,UAAUyrB,IAAM,SAAUo0E,GACjC,GAAoB,qBAATA,EAAsB,CAC7B,IAAIo+G,EAAS,IAAInV,GAEjB,OADAhlM,KAAK2nB,IAAIwyL,GACFA,EAGP,IAAI18K,EAAIz9B,KAAKo6M,cAAcr+G,GAC3B/7F,KAAK+4M,SAASngM,KAAKmjF,GACnB/7F,KAAKk5M,gBAAgBvxL,IAAI8V,GACzBs+D,EAAKg6G,WAAW/1M,MAChB+7F,EAAKi6G,gBACLh2M,KAAKq6M,gBAAgBt+G,IAO7B88G,EAAW38M,UAAUk+M,cAAgB,SAAUr+G,GAI3C,IAHA,IAAIu+G,EAAK,IAAIl5C,EAAmBrlE,GAC5BhrE,GAAW,EACX2iL,EAAK1zM,KAAKO,OACLiZ,EAAQ,EAAGA,EAAQk6L,EAAGxI,QAAQruM,OAAQ2c,IAAS,CACpD,IAAI0xL,EAAUwI,EAAGxI,QAAQ1xL,GACzBuX,EAAWA,GAAYm6K,EAAQn6K,SAASgrE,GAE5C,OAAOu+G,GAMXzB,EAAW38M,UAAU60B,SAAW,SAAUgrE,GAEtC,OAAQ,GADI/7F,KAAK7B,QAAQ49F,IAO7B88G,EAAW38M,UAAUiC,QAAU,SAAU49F,GACrC,IAAK,IAAIviF,EAAQ,EAAGA,EAAQxZ,KAAK+4M,SAASl8M,OAAQ2c,IAC9C,GAAIxZ,KAAK+4M,SAASv/L,KAAWuiF,EACzB,OAAO/7F,KAAK+4M,SAAS56M,QAAQ49F,GAGrC,IAAIt+D,EAAI,IAAI2jI,EAAmBrlE,GAC/B,OAAO/7F,KAAKk5M,gBAAgB/6M,QAAQs/B,IAOxCo7K,EAAW38M,UAAUm+M,gBAAkB,SAAUt+G,GAE7C,IAAI97F,EAAO,IAAIw2M,GAAmB16G,GAClC/7F,KAAKu6M,YAAYt6M,GACJD,KAAKO,OACXC,SAASosJ,MAAM2tD,YAAYt6M,GAClCD,KAAKw5M,UAAUzlD,SAAW/zJ,KAAK85E,OAOnC++H,EAAW38M,UAAUq+M,YAAc,SAAUt6M,KAG7C44M,EAAW38M,UAAU23M,gBAAkB,SAAU1qC,EAAMC,EAAMC,GACzD,GAAIF,aAAgB67B,IAA2B,mBAAT57B,EAAoB,CACtD,IACIoxC,EAAax6M,KAAKO,OAAOC,SAE7B,OADSR,KAAK6zM,gBAAgB2G,EAAYrxC,EAAMC,GAIhDD,EAAOA,EACPC,EAAOA,EACPC,EAAOA,EACP,IAAIhlH,EAAS,IAAI6kH,GAAW,EAAG,EAAG,EAAG,GACrC7kH,EAAO1V,OAAU06H,EAAQrpK,KAAKqrE,aAAaxuB,KAAKlO,OAAS3uC,KAAKqrE,aAAa2hG,gBAAgBr+H,OAC3F0V,EAAO3V,MAAS26H,EAAQrpK,KAAKqrE,aAAaxuB,KAAKnO,MAAQ1uC,KAAKqrE,aAAa2hG,gBAAgBt+H,MACzF,IAAIjN,EAAOzhC,KAAKy6M,mBAAmBtxC,EAAMC,EAAMC,GAC3CjpG,EAAQpgE,KAAK06M,mBAAmBvxC,EAAMC,EAAMC,GAC5C3nI,EAAQ1hC,KAAK26M,oBAAoBxxC,EAAMC,EAAMC,GAC7CznI,EAAS5hC,KAAK46M,sBAAsBzxC,EAAMC,EAAMC,GAKpD,OAJAhlH,EAAOlkC,GAAKshB,EACZ4iB,EAAOhvC,GAAK+qD,EACZ/b,EAAO3V,OAAUjN,EAAOC,EACxB2iB,EAAO1V,QAAWyxB,EAAQx+B,EACnByiB,GAOfw0J,EAAW38M,UAAUu+M,mBAAqB,SAAUj6M,EAAUu7F,EAAM8+G,GAChE,GAAgB,MAAZr6M,EACA,MAAM,IAAII,MAAM,kCAEpB,GAAY,MAARm7F,EACA,MAAM,IAAIn7F,MAAM,8BAEpB,IAAIpE,EAASq+M,EAAkB76M,KAAKqrE,aAAaghG,QAAQ5qI,KAAO,EAC5Dq5K,EAAgD,MAA/B96M,KAAKkqB,SAASutL,QAAQ17G,GAAiB/7F,KAAKkqB,SAASutL,QAAQ17G,GAAMrtD,MAAQ,EAC5FqsK,EAAuD,MAAnCv6M,EAAS0pB,SAASutL,QAAQ17G,GAAiBv7F,EAAS0pB,SAASutL,QAAQ17G,GAAMrtD,MAAQ,EAE3G,OADAlyC,GAAUwD,KAAKkqB,SAAS+vL,0BAA6BzzM,KAAK4L,IAAI0oM,EAAeC,GAAoBD,GAOrGjC,EAAW38M,UAAUw+M,mBAAqB,SAAUl6M,EAAUu7F,EAAM8+G,GAChE,GAAgB,MAAZr6M,EACA,MAAM,IAAII,MAAM,kCAEpB,GAAY,MAARm7F,EACA,MAAM,IAAIn7F,MAAM,8BAEpB,IAAIpE,EAASq+M,EAAkB76M,KAAKqrE,aAAaghG,QAAQ1qI,IAAM,EAC3Dq5K,EAAgD,MAA9Bh7M,KAAKkqB,SAAS2tL,OAAO97G,GAAiB/7F,KAAKkqB,SAAS2tL,OAAO97G,GAAMptD,OAAS,EAC5FssK,EAAuD,MAAlCz6M,EAAS0pB,SAAS2tL,OAAO97G,GAAiBv7F,EAAS0pB,SAAS2tL,OAAO97G,GAAMptD,OAAS,EAE3G,OADAnyC,GAAUwD,KAAKkqB,SAAS6vL,yBAA4BvzM,KAAK4L,IAAI4oM,EAAgBC,GAAqBD,GAOtGnC,EAAW38M,UAAUy+M,oBAAsB,SAAUn6M,EAAUu7F,EAAM8+G,GACjE,GAAgB,MAAZr6M,EACA,MAAM,IAAII,MAAM,kCAEpB,GAAY,MAARm7F,EACA,MAAM,IAAIn7F,MAAM,8BAEpB,IAAIpE,EAASq+M,EAAkB76M,KAAKqrE,aAAaghG,QAAQ3qI,MAAQ,EAC7Do5K,EAAiD,MAAhC96M,KAAKkqB,SAAS8tL,SAASj8G,GAAiB/7F,KAAKkqB,SAAS8tL,SAASj8G,GAAMrtD,MAAQ,EAC9FqsK,EAAwD,MAApCv6M,EAAS0pB,SAAS8tL,SAASj8G,GAAiBv7F,EAAS0pB,SAAS8tL,SAASj8G,GAAMrtD,MAAQ,EAE7G,OADAlyC,GAAUwD,KAAKkqB,SAASgwL,2BAA8B1zM,KAAK4L,IAAI0oM,EAAeC,GAAoBD,GAOtGjC,EAAW38M,UAAU0+M,sBAAwB,SAAUp6M,EAAUu7F,EAAM8+G,GACnE,GAAgB,MAAZr6M,EACA,MAAM,IAAII,MAAM,kCAEpB,GAAY,MAARm7F,EACA,MAAM,IAAIn7F,MAAM,8BAEpB,IAAIpE,EAASq+M,EAAkB76M,KAAKqrE,aAAaghG,QAAQzqI,OAAS,EAC9Do5K,EAAmD,MAAjCh7M,KAAKkqB,SAASiuL,UAAUp8G,GAAiB/7F,KAAKkqB,SAASiuL,UAAUp8G,GAAMptD,OAAS,EAClGssK,EAA0D,MAArCz6M,EAAS0pB,SAASiuL,UAAUp8G,GAAiBv7F,EAAS0pB,SAASiuL,UAAUp8G,GAAMptD,OAAS,EAEjH,OADAnyC,GAAUwD,KAAKkqB,SAAS8vL,4BAA+BxzM,KAAK4L,IAAI4oM,EAAgBC,GAAqBD,GAOzGnC,EAAW38M,UAAUmsB,OAAS,SAAU0zE,GACpC,GAAY,MAARA,EACA,MAAMn7F,MAAM,iCAEhB,IAAI4Y,EAAQxZ,KAAK+4M,SAAS56M,QAAQ49F,GAClC/7F,KAAKk5M,gBAAgB9jD,SAAS57I,GAE9B,IADA,IAAI0hM,EAAiB,GACZ/zM,EAAI,EAAGA,EAAIqS,EAAOrS,IACvB+zM,EAAetiM,KAAK5Y,KAAK+4M,SAAS5xM,IAEtC,IAASA,EAAIqS,EAAQ,EAAGrS,EAAInH,KAAK+4M,SAASl8M,OAAQsK,IAC9C+zM,EAAetiM,KAAK5Y,KAAK+4M,SAAS5xM,IAEtCnH,KAAK+4M,SAAWmC,GAMpBrC,EAAW38M,UAAUi/M,kBAAoB,SAAUC,EAAWC,EAAgB/uI,GAC1E,IAAIjoB,EAAS,IAAI6kH,GAAW58F,EAAMsnI,OAAQtnI,EAAMzvB,MAChDu+J,EAAUz7H,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB1E,SAAUmH,EAASe,cAAc5wG,IACpF,IAAIsxB,EACJA,EAAS2lI,GAAqBC,aAAejvI,EAAMqJ,OACnD,IAAIz5B,EAAQ,IAAIw3G,EAAU/9E,GAC1BylI,EAAUz7H,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB97E,OAAQz5B,IAO/D28J,EAAW38M,UAAUo2J,UAAY,SAAUhmF,EAAOo8E,GAC9C,IAAIytD,EAAMztD,EAAOloJ,SACjBR,KAAKm7M,kBAAkBn7M,KAAKkrM,QAASiL,EAAI9qI,aAAciB,IAM3DusI,EAAW38M,UAAUq6M,cAAgB,SAAUx6G,EAAMgtG,EAAOvoM,EAAUi5M,GAClE,IAAIC,EAAkB15M,KAAK25M,qBAAqBn5M,EAAUu7F,EAAM09G,GAC5D+B,EAAiBx7M,KAAK65M,oBAAoB99G,EAAM09G,GACpDz5M,KAAKy7M,oBAAoB1S,EAAOvoM,EAAUk5M,GAC1C15M,KAAKy7M,oBAAoB1S,EAAOvoM,EAAUg7M,IAM9C3C,EAAW38M,UAAUu/M,oBAAsB,SAAU1S,EAAOvoM,EAAUs5M,GAClE,GAAiB,MAAbA,GAAqBA,EAAUj9M,OAAS,EAExC,IADA,IAAIiF,EAAMg4M,EAAUj9M,OACXD,EAAI,EAAGA,EAAIkF,EAAKlF,IAAK,CACXk9M,EAAUl9M,GAChBwhL,KAAK2qB,EAAOvoM,KAI1Bq4M,EAlfqB,GAqf5BU,GAAmC,WAMnC,SAASA,EAAkB/4M,GACvBR,KAAKysK,gBAAkBjsK,EAAS6qE,aAAahjB,YAC7CroD,KAAK07M,WAAal7M,EAAS6qE,aAAasK,OACxC31E,KAAKurE,SAAW/qE,EAAS6qE,aAAaxuB,KACtC78C,KAAK2sK,WAAansK,EAAS6qE,aAAauoI,OA2D5C,OAzDA11M,OAAOooB,eAAeizL,EAAkBr9M,UAAW,cAAe,CAM9DqqB,IAAK,WACD,OAAOvmB,KAAKysK,iBAEhBhmJ,IAAK,SAAUjqB,GACXwD,KAAKysK,gBAAkBjwK,GAE3BkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeizL,EAAkBr9M,UAAW,SAAU,CAKzDqqB,IAAK,WACD,OAAOvmB,KAAK07M,YAEhBj1L,IAAK,SAAUjqB,GACXwD,KAAK07M,WAAal/M,GAEtBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeizL,EAAkBr9M,UAAW,OAAQ,CAKvDqqB,IAAK,WACD,OAAOvmB,KAAKurE,UAEhB9kD,IAAK,SAAUjqB,GACXwD,KAAKurE,SAAW/uE,GAEpBkqB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeizL,EAAkBr9M,UAAW,SAAU,CAKzDqqB,IAAK,WACD,OAAOvmB,KAAK2sK,YAEhBlmJ,IAAK,SAAUjqB,GACXwD,KAAK2sK,WAAanwK,GAEtBkqB,YAAY,EACZC,cAAc,IAEX4yL,EArE4B,GCzfnC+B,GAAsC,WAMtC,SAASA,EAAqB96M,GAK1BR,KAAKgmK,SAAW,GAKhBhmK,KAAKyxJ,qBAAuB,IAAI9E,EAIhC3sJ,KAAK2/I,YAAcn/I,EAASvB,QAC5Be,KAAKqqC,aA+IT,OA7IAnsC,OAAOooB,eAAeg1L,EAAqBp/M,UAAW,UAAW,CAK7DqqB,IAAK,WACD,OAAOvmB,KAAKgmK,UAEhBt/I,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeg1L,EAAqBp/M,UAAW,WAAY,CAK9DqqB,IAAK,WACD,OAAOvmB,KAAK2/I,aAEhBj5H,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeg1L,EAAqBp/M,UAAW,QAAS,CAK3DqqB,IAAK,WACD,OAAOvmB,KAAKgmK,SAASnpK,QAEzB6pB,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAeg1L,EAAqBp/M,UAAW,UAAW,CAK7DqqB,IAAK,WACD,OAAOvmB,KAAK4sJ,OAEhBlmI,YAAY,EACZC,cAAc,IAOlB20L,EAAqBp/M,UAAUmuC,WAAa,WACxCrqC,KAAK27M,aAAe,IAAIjoD,EAAU,GAClC1zJ,KAAKi5M,kBAAoB,IAAI/kD,EAC7Bl0J,KAAK4sJ,MAAQ,IAAIsE,EACjBlxJ,KAAK4sJ,MAAM0F,UAAY,IAAIe,EAAkCrzJ,MAC7DA,KAAK4sJ,MAAMjtE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqBvnJ,KAAM,IAAIg+I,EAAQ,UACtEloJ,KAAK4sJ,MAAMjtE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB5E,KAAM7sJ,KAAKi5M,mBAC/Dj5M,KAAK4sJ,MAAMjtE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB33E,MAAO95E,KAAK27M,cAChE37M,KAAK4sJ,MAAMjtE,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB3E,UAAW,IAAIoE,GACnElxJ,KAAKs5M,gBAAgBt5M,KAAK4sJ,MAAO5sJ,KAAK2/I,YAAYt0E,eAMtDiwI,EAAqBp/M,UAAU0/M,qBAAuB,SAAUpiM,GAC5D,GAAIA,EAAQ,GAAKA,GAASxZ,KAAK85E,MAC3B,MAAM,IAAIl5E,MAAM,8BAEpB,OAAOZ,KAAKgmK,SAASxsJ,IAMzB8hM,EAAqBp/M,UAAUo9M,gBAAkB,SAAU8B,EAAW/vI,GAOlE,IAAIhnB,EAAS,IAAI6kH,GAAW,IAAIF,GAAU39F,EAAaxuB,MACvDu+J,EAAUz7H,MAAM5iF,SAASiD,KAAKyxJ,qBAAqB1E,SAAUmH,EAASe,cAAc5wG,KAMxFi3J,EAAqBp/M,UAAUyrB,IAAM,SAAUujL,GAC3C,GAAuB,qBAAZA,EAAyB,CAChC,IAAI2Q,EAAY,IAAIhD,GAAW74M,KAAK2/I,aAEpC,OADA3/I,KAAK2nB,IAAIk0L,GACFA,EAMP,IAAIp+K,EAAIz9B,KAAK87M,aAAa5Q,GAI1B,OAHAlrM,KAAKgmK,SAASptJ,KAAKsyL,GACnBA,EAAQ3qM,OAASP,KACjBA,KAAKi5M,kBAAkBtxL,IAAI8V,GACpBz9B,KAAKgmK,SAAS7nK,QAAQ+sM,IAOrCoQ,EAAqBp/M,UAAU4/M,aAAe,SAAU5Q,GACpD,IAAIztK,EAAI,IAAI2jI,EAAmB8pC,GAChBlrM,KAAKi5M,kBAAkBloL,SAAS0M,GAI/C,OAAOA,GAMX69K,EAAqBp/M,UAAU6/M,WAAa,WACxC,IAAIjiI,EAAQ,EAEZ,OADA95E,KAAKgmK,SAAShnK,SAAQ,SAAUytF,GAAK,OAAQ3S,GAAS2S,EAAE3S,SACjDA,GAOXwhI,EAAqBp/M,UAAUo2J,UAAY,WACvCtyJ,KAAK27M,aAAa5nD,SAAW/zJ,KAAK+7M,cAQtCT,EAAqBC,aAAe,GAC7BD,EApK+B,GCNtCU,GAA2C,WAM3C,SAASA,EAA0Bx7M,GAK/BR,KAAKi8M,uBAAyB,IAAIh8D,EAClCjgJ,KAAKQ,SAAWA,EAoJpB,OAlJAtC,OAAOooB,eAAe01L,EAA0B9/M,UAAW,QAAS,CAMhEqqB,IAAK,WACD,OAAOvmB,KAAK+7M,cAEhBr1L,YAAY,EACZC,cAAc,IAElBzoB,OAAOooB,eAAe01L,EAA0B9/M,UAAW,sBAAuB,CAK9EqqB,IAAK,WACD,OAAOvmB,KAAKi8M,wBAEhBv1L,YAAY,EACZC,cAAc,IAElBq1L,EAA0B9/M,UAAUyrB,IAAM,SAAUo0E,GAChD,GAAoB,qBAATA,EAAsB,CAC7B,IAAIo+G,EAAS,IAAInV,GAEjB,OADAhlM,KAAK2nB,IAAIwyL,GACFA,EAGOn6M,KAAKk8M,iBACXv0L,IAAIo0E,IAOpBigH,EAA0B9/M,UAAUggN,eAAiB,WACjD,IAAIxI,EAAK1zM,KAAKQ,SAASwlK,SAKvB,OAJ0B,IAAtB0tC,EAAGxI,QAAQruM,QACX62M,EAAG/rL,MAEO+rL,EAAGxI,QAAQwI,EAAGxI,QAAQruM,OAAS,IAOjDm/M,EAA0B9/M,UAAUq+M,YAAc,SAAUt6M,KAU5D+7M,EAA0B9/M,UAAU6/M,WAAa,WAG7C,IAFA,IAAIrI,EAAK1zM,KAAKQ,SAASwlK,SACnBlsF,EAAQ,EACHtgE,EAAQ,EAAGA,EAAQk6L,EAAGxI,QAAQruM,OAAQ2c,IAC3CsgE,GAAS45H,EAAGxI,QAAQ1xL,GAAOsgE,MAE/B,OAAOA,GAMXkiI,EAA0B9/M,UAAUigN,eAAiB,SAAU3iM,GAC3D,OAAOxZ,KAAKo8M,QAAQ5iM,IAMxBwiM,EAA0B9/M,UAAUkgN,QAAU,SAAU5iM,GACpD,GAAKA,EAAQ,GAAOA,GAASxZ,KAAK85E,MAC9B,MAAMl5E,MAAM,mEAOhB,IALA,IAAIm7F,EAAO,KACPsgH,EAAoB,EACpBV,EAAe,EACf3/G,EAAY,EACZn/F,EAASmD,KAAKQ,SAASwlK,SAASlsF,MAC3Bl9E,EAAI,EAAGA,EAAIC,EAAQD,IAAK,CAC7B,IAAIsuM,EAAUlrM,KAAKQ,SAASwlK,SAASklC,QAAQtuM,GAI7C,GAHA++M,EAAezQ,EAAQpxH,MACvBkiB,EAAYxiF,EAAQ6iM,EAEf7iM,GAAS6iM,GAAqBrgH,EAAY2/G,EAAe,CAC1D5/G,EAAOmvG,EAAQC,WAAWnvG,GAC1B,MAEJqgH,GAAqBV,EAEzB,OAAO5/G,GAMXigH,EAA0B9/M,UAAUiC,QAAU,SAAU49F,GACpD,IAAIviF,GAAS,EACb,GAAY,MAARuiF,EACA,MAAM,IAAIn7F,MAAM,+BAIhB,IADA,IAAI07M,EAAW,EACN1/M,EAAI,EAAGkF,EAAM9B,KAAKQ,SAASwlK,SAASlsF,MAAOl9E,EAAIkF,EAAKlF,IAAK,CAC9D,IAAIsuM,EAAUlrM,KAAKQ,SAASwlK,SAAS41C,qBAAqBh/M,GAE1D,IADA4c,EAAQ0xL,EAAQ/sM,QAAQ49F,KACX,EAAG,CACZviF,GAAS8iM,EACT,MAGA9iM,GAAS,EAEb8iM,GAAYpR,EAAQpxH,MAG5B,OAAOtgE,GAMXwiM,EAA0B9/M,UAAUmsB,OAAS,SAAU0zE,GACnD,GAAY,MAARA,EACA,MAAMn7F,MAAM,iCAIhB,IAFA,IAAIsqM,EAAU,KAELtuM,EAAI,EAAGsgF,EAAQl9E,KAAKQ,SAASwlK,SAASlsF,MAAOl9E,EAAIsgF,EAAOtgF,IAE7D,IADAsuM,EAAUlrM,KAAKQ,SAASwlK,SAAS41C,qBAAqBh/M,IAC1CgwJ,MAAM77H,SAASgrE,GAAO,CAC9BmvG,EAAQt+C,MAAMvkI,OAAO0zE,GACrB,MAGR,OAAOmvG,GAEJ8Q,EAhKoC,GCE3CO,GAAoC,WAMpC,SAASA,IACLv8M,KAAKw8M,iBAAmB,GACxBx8M,KAAKy8M,kBAAoB,IAAIx8D,EAqEjC,OA9DAs8D,EAAmBrgN,UAAUo/F,OAAS,SAAU/+F,GAC5C,IAAIoC,EAAS,KACTozE,EAAQ/xE,KAAK08M,SAASngN,GAQ1B,OAPa,MAATw1E,EACAA,EAAQ/xE,KAAK28M,iBAER5qI,EAAMl1E,OAAS,IACpB8B,EAASozE,EAAM,IAEnBA,EAAMn5D,KAAKrc,GACJoC,GAOX49M,EAAmBrgN,UAAUygN,eAAiB,WAC1C,IAAI5qI,EAAQ,GAEZ,OADA/xE,KAAKw8M,iBAAiB5jM,KAAKm5D,GACpBA,GAMXwqI,EAAmBrgN,UAAUwgN,SAAW,SAAU/9M,GAC9C,IAAIozE,EAAQ,KACZ,GAAe,OAAXpzE,EAEA,IADA,IAAImD,EAAM9B,KAAKw8M,iBAAiB3/M,OACvBD,EAAI,EAAGA,EAAIkF,EAAKlF,IAAK,CAC1B,GAAIoD,KAAKw8M,iBAAiB3/M,OAAS,EAAG,CAClC,IAAI+/M,EAAS58M,KAAKw8M,iBAAiB5/M,GACnC,GAAIggN,EAAO//M,OAAS,EAAG,CACnB,IAAIggN,EAAiBD,EAAO,GAC5B,GAAIj+M,EAAOk8K,SAASgiC,GAAiB,CACjC9qI,EAAQ6qI,EACR,YAIJ58M,KAAK88M,YAAYF,GAGzB96M,EAAM9B,KAAKw8M,iBAAiB3/M,OAGpC,OAAOk1E,GAKXwqI,EAAmBrgN,UAAU4gN,YAAc,SAAU/qI,GACjD,GAAc,OAAVA,EAAgB,CAChB,IAAIv4D,EAAQxZ,KAAKw8M,iBAAiBr+M,QAAQ4zE,GAC1C/xE,KAAKw8M,iBAAiBn7M,MAAMmY,EAAOA,EAAQ,KAGnD+iM,EAAmBrgN,UAAUie,QAAU,WACnCna,KAAKy8M,uBAAoBzgN,EACzBgE,KAAKw8M,sBAAmBxgN,GAErBugN,EA7E6B,GCCpCQ,GAA+C,WAC/C,SAASA,KAwkBT,OAlkBAA,EAA8BC,WAAa,SAAUjgK,EAAYD,EAAWD,GACxE,IAAIq9H,EAAU,KACd,OAAQn9H,GACJ,KAAKooH,GAAc83C,UACf/iC,EAAUl6K,KAAKk9M,oBAAoBngK,EAAYD,EAAWD,GAC1D,MACJ,KAAKsoH,GAAcg4C,QACfjjC,EAAUl6K,KAAKo9M,kBAAkBrgK,EAAYD,EAAWD,GACxD,MACJ,KAAKsoH,GAAck4C,WACfnjC,EAAUl6K,KAAKs9M,gBAAgBvgK,EAAYD,EAAWD,GACtD,MACJ,KAAKsoH,GAAc9sE,OACf6hF,EAAUl6K,KAAKu9M,iBAAiBxgK,EAAYD,EAAWD,GACvD,MACJ,KAAKsoH,GAAcq4C,aACftjC,EAAUl6K,KAAKy9M,uBAAuB1gK,EAAYD,EAAWD,GAC7D,MACJ,QACIq9H,EAAUl6K,KAAKk9M,oBAAoB/3C,GAAc83C,UAAWngK,EAAWD,GAM/E,OAHAq9H,EAAQ9gK,KAAO2jC,EAAW7wC,WAC1BguK,EAAQyS,oBAAsB3sL,KAAK09M,qBACnCxjC,EAAQ0S,sBAAwB5sL,KAAK09M,qBAC9BxjC,GAOX6iC,EAA8BG,oBAAsB,SAAUngK,EAAYD,EAAWD,GACjF,IAAIq9H,EAAU,IAAI8W,GAiClB,OAhCKl0I,EAAYooH,GAAakV,MAAQ,IAAMt9H,EAAYooH,GAAamV,QAAU,GAC3EH,EAAQ5qB,OAAStvJ,KAAK29M,0BACtBzjC,EAAQ3qB,QAAUvvJ,KAAK49M,2BACvB1jC,EAAQsR,eAAiBxrL,KAAK69M,wBAC9B3jC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAK89M,gBACjD5jC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,UAEpCzyG,EAAYooH,GAAakV,MAAQ,GACvCF,EAAQ5qB,OAAStvJ,KAAK+9M,oBACtB7jC,EAAQ3qB,QAAUvvJ,KAAKg+M,qBACvB9jC,EAAQsR,eAAiBxrL,KAAKi+M,kBAC9B/jC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAK89M,gBACjD5jC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,UAEpCzyG,EAAYooH,GAAamV,QAAU,GACzCH,EAAQ5qB,OAAStvJ,KAAKk+M,sBACtBhkC,EAAQ3qB,QAAUvvJ,KAAKm+M,uBACvBjkC,EAAQsR,eAAiBxrL,KAAKo+M,oBAC9BlkC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAKq+M,YACjDnkC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,UAG1C2qB,EAAQ5qB,OAAStvJ,KAAKs+M,gBACtBpkC,EAAQ3qB,QAAUvvJ,KAAKu+M,iBACvBrkC,EAAQsR,eAAiBxrL,KAAKw+M,cAC9BtkC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAKq+M,YACjDnkC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,SAEvC2qB,GAMX6iC,EAA8BK,kBAAoB,SAAUrgK,EAAYD,EAAWD,GAC/E,IAAIq9H,EAAU,IAAI8W,GAiClB,OAhCKl0I,EAAYooH,GAAakV,MAAQ,IAAMt9H,EAAYooH,GAAamV,QAAU,GAC3EH,EAAQ5qB,OAAStvJ,KAAKy+M,wBACtBvkC,EAAQ3qB,QAAUvvJ,KAAK0+M,yBACvBxkC,EAAQsR,eAAiBxrL,KAAK2+M,sBAC9BzkC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAK4+M,YACjD1kC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,UAEpCzyG,EAAYooH,GAAakV,MAAQ,GACvCF,EAAQ5qB,OAAStvJ,KAAK6+M,kBACtB3kC,EAAQ3qB,QAAUvvJ,KAAK8+M,mBACvB5kC,EAAQsR,eAAiBxrL,KAAK++M,gBAC9B7kC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAK4+M,YACjD1kC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,UAEpCzyG,EAAYooH,GAAamV,QAAU,GACzCH,EAAQ5qB,OAAStvJ,KAAKg/M,oBACtB9kC,EAAQ3qB,QAAUvvJ,KAAKi/M,qBACvB/kC,EAAQsR,eAAiBxrL,KAAKk/M,kBAC9BhlC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAK4+M,YACjD1kC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,UAG1C2qB,EAAQ5qB,OAAStvJ,KAAKm/M,cACtBjlC,EAAQ3qB,QAAUvvJ,KAAKo/M,eACvBllC,EAAQsR,eAAiBxrL,KAAKq/M,YAC9BnlC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAK4+M,YACjD1kC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,SAEvC2qB,GAMX6iC,EAA8BO,gBAAkB,SAAUvgK,EAAYD,EAAWD,GAC7E,IAAIq9H,EAAU,IAAI8W,GAiClB,OAhCKl0I,EAAYooH,GAAakV,MAAQ,IAAMt9H,EAAYooH,GAAamV,QAAU,GAC3EH,EAAQ5qB,OAAStvJ,KAAKs/M,sBACtBplC,EAAQ3qB,QAAUvvJ,KAAKu/M,uBACvBrlC,EAAQsR,eAAiBxrL,KAAKw/M,oBAC9BtlC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAKy/M,4BACjDvlC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,UAEpCzyG,EAAYooH,GAAakV,MAAQ,GACvCF,EAAQ5qB,OAAStvJ,KAAK0/M,gBACtBxlC,EAAQ3qB,QAAUvvJ,KAAK2/M,iBACvBzlC,EAAQsR,eAAiBxrL,KAAK4/M,cAC9B1lC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAK6/M,qBACjD3lC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,UAEpCzyG,EAAYooH,GAAamV,QAAU,GACzCH,EAAQ5qB,OAAStvJ,KAAK8/M,kBACtB5lC,EAAQ3qB,QAAUvvJ,KAAK+/M,mBACvB7lC,EAAQsR,eAAiBxrL,KAAKggN,gBAC9B9lC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAKigN,uBACjD/lC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,UAG1C2qB,EAAQ5qB,OAAStvJ,KAAKkgN,YACtBhmC,EAAQ3qB,QAAUvvJ,KAAKmgN,aACvBjmC,EAAQsR,eAAiBxrL,KAAKogN,UAC9BlmC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAKqgN,iBACjDnmC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,SAEvC2qB,GAMX6iC,EAA8BQ,iBAAmB,SAAUxgK,EAAYD,EAAWD,GAC9E,IAAIq9H,EAAU,IAAI8W,GAOlB,OANA9W,EAAQ5qB,OAAStvJ,KAAKsgN,aACtBpmC,EAAQ3qB,QAAUvvJ,KAAKugN,cACvBrmC,EAAQsR,eAAiBxrL,KAAKwgN,WAC9BtmC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAKygN,aACjDvmC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,QACnC2qB,GAMX6iC,EAA8BU,uBAAyB,SAAU1gK,EAAYD,EAAWD,GACpF,IAAIq9H,EAAU,IAAI8W,GAOlB,OANA9W,EAAQ5qB,OAAStvJ,KAAK0gN,mBACtBxmC,EAAQ3qB,QAAUvvJ,KAAK2gN,oBACvBzmC,EAAQsR,eAAiBxrL,KAAK4gN,iBAC9B1mC,EAAQr9H,KAAOA,EACfq9H,EAAQuS,WAAa,IAAIkF,GAAmB3xL,KAAK6gN,mBACjD3mC,EAAQvrI,OAASurI,EAAQ5qB,OAAS4qB,EAAQ3qB,QACnC2qB,GAMX6iC,EAA8BW,qBAAuB,KAKrDX,EAA8BuB,gBAAkB,IAKhDvB,EAA8BwB,kBAAoB,IAKlDxB,EAA8ByB,cAAgB,YAK9CzB,EAA8BgB,oBAAsB,IAKpDhB,EAA8BiB,sBAAwB,IAKtDjB,EAA8BkB,kBAAoB,iBAKlDlB,EAA8BmB,sBAAwB,IAKtDnB,EAA8BoB,wBAA0B,IAKxDpB,EAA8BqB,oBAAsB,oBAKpDrB,EAA8BY,0BAA4B,IAK1DZ,EAA8Ba,4BAA8B,IAK5Db,EAA8Bc,wBAA0B,wBAKxDd,EAA8BoC,cAAgB,IAK9CpC,EAA8BqC,gBAAkB,IAKhDrC,EAA8BsC,YAAc,UAK5CtC,EAA8B8B,kBAAoB,IAKlD9B,EAA8B+B,oBAAsB,IAKpD/B,EAA8BgC,gBAAkB,eAKhDhC,EAA8BiC,oBAAsB,IAKpDjC,EAA8BkC,sBAAwB,IAKtDlC,EAA8BmC,kBAAoB,kBAKlDnC,EAA8B0B,wBAA0B,IAKxD1B,EAA8B2B,0BAA4B,IAK1D3B,EAA8B4B,sBAAwB,sBAKtD5B,EAA8BmD,YAAc,IAK5CnD,EAA8BoD,cAAgB,IAK9CpD,EAA8BqD,UAAY,cAK1CrD,EAA8B2C,gBAAkB,IAKhD3C,EAA8B4C,kBAAoB,IAKlD5C,EAA8B6C,cAAgB,aAK9C7C,EAA8B+C,kBAAoB,IAKlD/C,EAA8BgD,oBAAsB,IAKpDhD,EAA8BiD,gBAAkB,eAKhDjD,EAA8BuC,sBAAwB,IAKtDvC,EAA8BwC,wBAA0B,IAKxDxC,EAA8ByC,oBAAsB,mBAKpDzC,EAA8BuD,aAAe,KAK7CvD,EAA8BwD,eAAiB,IAK/CxD,EAA8ByD,WAAa,SAK3CzD,EAA8B2D,mBAAqB,IAKnD3D,EAA8B4D,qBAAuB,IAKrD5D,EAA8B6D,iBAAmB,eAKjD7D,EAA8BsB,WAAa,CACvC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAM,EAC1E,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTtB,EAA8Be,eAAiB,CAC3C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,EAAG,IAAK,EAAG,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAM,EAC1E,IAAK,EAAG,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAM,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,EAAG,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,EACzE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC5E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,KAMTf,EAA8B6B,WAAa,CACvC,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAM/E7B,EAA8BsD,gBAAkB,CAC5C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAC3E,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IA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K,KAAM,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAM,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,KAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAClE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAAM,GAMxC1D,EAA8B8D,kBAAoB,CAC9C,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACjE,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAA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","file":"static/js/2.64dc04ed.chunk.js","sourcesContent":["var instances = 'ej2_instances';\nvar uid = 0;\nvar isBlazorPlatform = false;\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function disableBlazorMode() {\n isBlazorPlatform = false;\n}\n/**\n * Create Instance from constructor function with desired parameters.\n * @param {Function} classFunction - Class function to which need to create instance\n * @param {any[]} params - Parameters need to passed while creating instance\n * @return {any}\n * @private\n */\nexport function createInstance(classFunction, params) {\n var arrayParam = params;\n arrayParam.unshift(undefined);\n return new (Function.prototype.bind.apply(classFunction, arrayParam));\n}\n/**\n * To run a callback function immediately after the browser has completed other operations.\n * @param {Function} handler - callback function to be triggered.\n * @return {Function}\n * @private\n */\nexport function setImmediate(handler) {\n var unbind;\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n intCrypto.getRandomValues(num);\n var secret = 'ej2' + combineArray(num);\n var messageHandler = function (event) {\n if (event.source === window && typeof event.data === 'string' && event.data.length <= 32 && event.data === secret) {\n handler();\n unbind();\n }\n };\n window.addEventListener('message', messageHandler, false);\n window.postMessage(secret, '*');\n return unbind = function () {\n window.removeEventListener('message', messageHandler);\n handler = messageHandler = secret = undefined;\n };\n}\n/**\n * To get nameSpace value from the desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} obj - Object to get the inner object value.\n * @return {any}\n * @private\n */\nexport function getValue(nameSpace, obj) {\n /* tslint:disable no-any */\n var value = obj;\n var splits = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n for (var i = 0; i < splits.length && !isUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n}\n/**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object\n * @param {any} value - Value that you need to set.\n * @param {any} obj - Object to get the inner object value.\n * @return {void}\n * @private\n */\nexport function setValue(nameSpace, value, obj) {\n var keys = nameSpace.replace(/\\[/g, '.').replace(/\\]/g, '').split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? {} : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n}\n/**\n * Delete an item from Object\n * @param {any} obj - Object in which we need to delete an item.\n * @param {string} params - String value to the get the inner object\n * @return {void}\n * @private\n */\nexport function deleteObject(obj, key) {\n delete obj[key];\n}\n/**\n * Check weather the given argument is only object.\n * @param {any} obj - Object which is need to check.\n * @return {boolean}\n * @private\n */\nexport function isObject(obj) {\n var objCon = {};\n return (!isNullOrUndefined(obj) && obj.constructor === objCon.constructor);\n}\n/**\n * To get enum value by giving the string.\n * @param {any} enumObject - Enum object.\n * @param {string} enumValue - Enum value to be searched\n * @return {any}\n * @private\n */\nexport function getEnumValue(enumObject, enumValue) {\n return enumObject[enumValue];\n}\n/**\n * Merge the source object into destination object.\n * @param {any} source - source object which is going to merge with destination object\n * @param {any} destination - object need to be merged\n * @return {void}\n * @private\n */\nexport function merge(source, destination) {\n if (!isNullOrUndefined(destination)) {\n var temrObj = source;\n var tempProp = destination;\n var keys = Object.keys(destination);\n var deepmerge = 'deepMerge';\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (!isNullOrUndefined(temrObj[deepmerge]) && (temrObj[deepmerge].indexOf(key) !== -1) &&\n (isObject(tempProp[key]) || Array.isArray(tempProp[key]))) {\n extend(temrObj[key], temrObj[key], tempProp[key], true);\n }\n else {\n temrObj[key] = tempProp[key];\n }\n }\n }\n}\n/**\n * Extend the two object with newer one.\n * @param {any} copied - Resultant object after merged\n * @param {Object} first - First object need to merge\n * @param {Object} second - Second object need to merge\n * @return {Object}\n * @private\n */\nexport function extend(copied, first, second, deep) {\n var result = copied && typeof copied === 'object' ? copied : {};\n var length = arguments.length;\n if (deep) {\n length = length - 1;\n }\n var _loop_1 = function (i) {\n if (!arguments_1[i]) {\n return \"continue\";\n }\n var obj1 = arguments_1[i];\n Object.keys(obj1).forEach(function (key) {\n var src = result[key];\n var copy = obj1[key];\n var clone;\n var isArrayChanged = Array.isArray(copy) && Array.isArray(src) && (copy.length !== src.length);\n var blazorEventExtend = isBlazor() ? (!(src instanceof Event) && !isArrayChanged) : true;\n if (deep && blazorEventExtend && (isObject(copy) || Array.isArray(copy))) {\n if (isObject(copy)) {\n clone = src ? src : {};\n if (Array.isArray(clone) && clone.hasOwnProperty('isComplexArray')) {\n extend(clone, {}, copy, deep);\n }\n else {\n result[key] = extend(clone, {}, copy, deep);\n }\n }\n else {\n /* istanbul ignore next */\n clone = isBlazor() ? src && Object.keys(copy).length : src ? src : [];\n result[key] = extend([], clone, copy, deep);\n }\n }\n else {\n result[key] = copy;\n }\n });\n };\n var arguments_1 = arguments;\n for (var i = 1; i < length; i++) {\n _loop_1(i);\n }\n return result;\n}\n/**\n * To check whether the object is null or undefined.\n * @param {Object} value - To check the object is null or undefined\n * @return {boolean}\n * @private\n */\nexport function isNullOrUndefined(value) {\n return value === undefined || value === null;\n}\n/**\n * To check whether the object is undefined.\n * @param {Object} value - To check the object is undefined\n * @return {boolean}\n * @private\n */\nexport function isUndefined(value) {\n return ('undefined' === typeof value);\n}\n/**\n * To return the generated unique name\n * @param {string} definedName - To concatenate the unique id to provided name\n * @return {string}\n * @private\n */\nexport function getUniqueID(definedName) {\n return definedName + '_' + uid++;\n}\n/**\n * It limits the rate at which a function can fire. The function will fire only once every provided second instead of as quickly.\n * @param {Function} eventFunction - Specifies the function to run when the event occurs\n * @param {number} delay - A number that specifies the milliseconds for function delay call option\n * @return {Function}\n * @private\n */\nexport function debounce(eventFunction, delay) {\n var out;\n // tslint:disable-next-line\n return function () {\n var _this = this;\n var args = arguments;\n var later = function () {\n out = null;\n return eventFunction.apply(_this, args);\n };\n clearTimeout(out);\n out = setTimeout(later, delay);\n };\n}\n// Added since lint ignored after added '//tslint:disable-next-line' \n/* tslint:disable:no-any */\n/**\n * To convert the object to string for query url\n * @param {Object} data\n * @returns string\n * @private\n */\nexport function queryParams(data) {\n var array = [];\n var keys = Object.keys(data);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n array.push(encodeURIComponent(key) + '=' + encodeURIComponent('' + data[key]));\n }\n return array.join('&');\n}\n/**\n * To check whether the given array contains object.\n * @param {T[]} value- Specifies the T type array to be checked.\n * @private\n */\nexport function isObjectArray(value) {\n var parser = Object.prototype.toString;\n if (parser.call(value) === '[object Array]') {\n if (parser.call(value[0]) === '[object Object]') {\n return true;\n }\n }\n return false;\n}\n/**\n * To check whether the child element is descendant to parent element or parent and child are same element.\n * @param{Element} - Specifies the child element to compare with parent.\n * @param{Element} - Specifies the parent element.\n * @return boolean\n * @private\n */\nexport function compareElementParent(child, parent) {\n var node = child;\n if (node === parent) {\n return true;\n }\n else if (node === document || !node) {\n return false;\n }\n else {\n return compareElementParent(node.parentNode, parent);\n }\n}\n/**\n * To throw custom error message.\n * @param{string} - Specifies the error message to be thrown.\n * @private\n */\nexport function throwError(message) {\n try {\n throw new Error(message);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n}\n/**\n * This function is used to print given element\n * @param{Element} element - Specifies the print content element.\n * @param{Window} printWindow - Specifies the print window.\n * @private\n */\nexport function print(element, printWindow) {\n var div = document.createElement('div');\n var links = [].slice.call(document.getElementsByTagName('head')[0].querySelectorAll('base, link, style'));\n var reference = '';\n if (isNullOrUndefined(printWindow)) {\n printWindow = window.open('', 'print', 'height=452,width=1024,tabbar=no');\n }\n div.appendChild(element.cloneNode(true));\n for (var i = 0, len = links.length; i < len; i++) {\n reference += links[i].outerHTML;\n }\n printWindow.document.write(' ' + reference + '' + div.innerHTML +\n '' + '');\n printWindow.document.close();\n printWindow.focus();\n // tslint:disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n * @param {number|string} value\n * @return {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|%|px|vh|vm|vmax|vmin|em/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n * @return {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n * @return {HTMLElement} result\n * @param {HTMLElement | object} element\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[xPath])) {\n return document.evaluate(element[xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n * @param {string | HTMLElement} element\n * @param {any} component\n * @return {Object} inst\n * @private\n */\n// tslint:disable-next-line\nexport function getInstance(element, component) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n for (var _i = 0, _a = elem[instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n * @param {string | HTMLElement} element\n * @param {Object} instance\n * @return {void}\n * @private\n */\nexport function addInstance(element, instance) {\n // tslint:disable-next-line:no-any\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[instances]) {\n elem[instances].push(instance);\n }\n else {\n elem[instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n * @return {any}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function uniqueID() {\n // tslint:disable-next-line:no-any\n if ((typeof window) === 'undefined') {\n return;\n }\n // tslint:disable-next-line:no-any\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[i];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar latnRegex = /^[0-9]*$/;\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object}\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object}\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object}\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n /* tslint:disable no-any */\n if (!res.hasOwnProperty(prop[key])) {\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp}\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n }).join('|');\n return new RegExp(regexStr, 'g');\n };\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n * @param {string} val\n * @returns {string}\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[i] + '|';\n }\n else {\n ret += val[i];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string}\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n * @param {Object} obj\n * @returns {NumericObject}\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n ret.numberParseRegex = new RegExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n * @param {Object} curObj\n * @param {Object} numberSystem\n * @param {boolean} isNumber\n * @returns {NumberMapper}\n */\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\nexport var HijriParser;\n(function (HijriParser) {\n /* tslint:disable */\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990, 29019, 29049, 29078, 29108, 29137, 29167,\n 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522, 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759,\n 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053, 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348,\n 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585, 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939,\n 30968, 30998, 31027, 31057, 31086, 31116, 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530,\n 31559, 31589, 31618, 31648, 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120,\n 32150, 32180, 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243, 33272, 33302,\n 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775, 33804, 33834, 33863, 33893,\n 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306, 34336, 34365, 34395, 34424, 34454, 34483,\n 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837, 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074,\n 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370, 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665,\n 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901, 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254,\n 36284, 36314, 36343, 36373, 36403, 36433, 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845,\n 36875, 36904, 36934, 36963, 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436,\n 37465, 37495, 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558, 38587, 38617,\n 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089, 39118, 39148, 39178, 39208,\n 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621, 39650, 39680, 39709, 39739, 39768, 39798,\n 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153, 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389,\n 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685, 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980,\n 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216, 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570,\n 41599, 41629, 41658, 41688, 41718, 41748, 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161,\n 42190, 42220, 42249, 42279, 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751,\n 42780, 42810, 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873, 43903, 43932,\n 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405, 44434, 44464, 44493, 44523,\n 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936, 44966, 44996, 45025, 45055, 45084, 45114,\n 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468, 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704,\n 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999, 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295,\n 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531, 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885,\n 46915, 46944, 46974, 47003, 47033, 47063, 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476,\n 47506, 47535, 47565, 47594, 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066,\n 48096, 48125, 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189, 49218, 49248,\n 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720, 49749, 49779, 49809, 49838,\n 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252, 50281, 50311, 50340, 50370, 50400, 50429,\n 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784, 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019,\n 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315, 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611,\n 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846, 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200,\n 52230, 52260, 52290, 52319, 52349, 52379, 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792,\n 52822, 52851, 52881, 52910, 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383,\n 53412, 53441, 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505, 54535, 54564,\n 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036, 55066, 55095, 55125, 55154,\n 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567, 55597, 55627, 55657, 55686, 55716, 55745,\n 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100, 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335,\n 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631, 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926,\n 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162, 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517,\n 57546, 57576, 57605, 57634, 57664, 57694, 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107,\n 58137, 58167, 58196, 58226, 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698,\n 58727, 58757, 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820, 59850, 59879,\n 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352, 60381, 60411, 60440, 60469,\n 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883, 60912, 60942, 60972, 61002, 61031, 61061,\n 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415, 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651,\n 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947, 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242,\n 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478, 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832,\n 62862, 62891, 62921, 62950, 62980, 63009, 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423,\n 63453, 63482, 63512, 63541, 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014,\n 64043, 64073, 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136, 65166, 65195,\n 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667, 65697, 65726, 65755, 65785,\n 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199, 66228, 66258, 66287, 66317, 66346, 66376,\n 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730, 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967,\n 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262, 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557,\n 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793, 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148,\n 68177, 68207, 68236, 68266, 68295, 68325, 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738,\n 68768, 68797, 68827, 68857, 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330,\n 69359, 69388, 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451, 70481, 70510,\n 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983, 71013, 71042, 71071, 71101,\n 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514, 71543, 71573, 71602, 71632, 71662, 71691,\n 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046, 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282,\n 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577, 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872,\n 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109, 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464,\n 73493, 73523, 73552, 73581, 73611, 73640, 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053,\n 74083, 74113, 74142, 74172, 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645,\n 74675, 74704, 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766, 75796, 75826,\n 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299, 76328, 76358, 76387, 76416,\n 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830, 76859, 76889, 76918, 76948, 76977, 77007,\n 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361, 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598,\n 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893, 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188,\n 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425, 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779,\n 78808, 78838, 78867, 78897, 78926, 78956, 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369,\n 79399, 79428, 79458, 79487, 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960,\n 79990];\n /* tslint:enable */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[i] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which date will format.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n /* tslint:disable no-any */\n var charKey = datePartMatcher[char];\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n * @param {Date} value\n * @param {FormatOptions} options\n */\n // tslint:disable-next-line:max-func-body-length\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n ret += options.designator[desig];\n break;\n case 'G':\n var dec = value.getFullYear() < 0 ? 0 : 1;\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/\\'/g, '');\n break;\n case 'z':\n var timezone = value.getTimezoneOffset();\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n ret += options.numMapper.numberSymbols[timeSeparator];\n /* tslint:enable no-any */\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n * @param {number} tVal\n * @param {string} pattern\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits',\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} object- Specifies the global cldr data collection.\n * @return Function.\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* tslint:disable no-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n * @param {string} pattern\n * @returns {GroupDetails}\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n * @param {number} val1\n * @param {number} val2\n * @param {boolean} checkbothExist\n * @param {boolean} isFraction\n * @returns {boolean}\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n * @param {number} val\n * @param {string} text\n * @param {boolean} isFraction\n * @returns {void}\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n * @param {number} value\n * @param {base.GenericFormatOptions} fOptions\n * @param {CommonOptions} dOptions\n * @returns {string}\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n if (curData.useGrouping) {\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n * @param {string} val\n * @param {number} level1\n * @param {string} sep\n * @param {string} decimalSymbol\n * @param {number} level2\n * @returns {string}\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n * @param {number} value\n * @param {number} min\n * @param {number} max\n * @returns {string}\n */\n NumberFormat.processFraction = function (value, min, max) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n return value + '';\n };\n /**\n * Returns integer processed numeric string\n * @param {string} value\n * @param {number} min\n * @returns {string}\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar number = 'numbers';\nvar defNoSystem = 'defaultNumberingSystem';\nvar noSystem = 'numberingSystem';\nvar standalone = 'stand-alone';\nvar curWeekDay = 'curWeekDay';\nvar latnRegex = /^[0-9]*$/;\nvar abbreviateRegex = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|ccc/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} - Specific the format in which string date will be parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n // tslint:disable-next-line:max-func-body-length\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n // tslint:disable-next-line\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // tslint:disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[i];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // tslint:disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // tslint:disable\n var weekData = void 0;\n if (isBlazor()) {\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n /* tslint:disable no-any */\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n /* tslint:disable no-any */\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // tslint:disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n /* tslint:disable no-any */\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n parseOptions[charKey] = parser.reverseObject(periodValur);\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n var iString = str.replace(/\\'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n * @param {DateParts} options\n * @param {Date} value\n * @returns {Date}\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n var tValue = options[key];\n if (isUndefined(tValue) && key === \"day\") {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n * @param {string} value\n * @param {ParseOptions} parseOptions\n * @param {NumericOptions} num\n * @returns {DateParts}\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n var nRegx = num.numericRegex;\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[prop] = val;\n }\n }\n else {\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n * @param {string} value\n * @param {NumericOptions} option\n * @returns {number}\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n * @param {string} hourFormat\n * @param {base.TimeZoneOptions} tZone\n * @param {string} nRegex\n * @returns {string}\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var result;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n * @param {boolean} flag\n * @param {string} val1\n * @param {string} val2\n * @param {NumericOptions} num\n * @returns {number}\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n/* tslint:enable */\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar formatRegex = /(^[ncpa]{1})([0-1]?[0-9]|20)?$/i;\nvar parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nvar groupRegex = /,/g;\nvar latnDecimalRegex = /^[0-9]*(\\.[0-9]+)?$/;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n * @param {string} - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} - Specific the format in which number will parsed.\n * @param {cldr} - Specifies the global cldr data collection.\n * @return Function.\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // tslint:disable-next-line:no-any\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n * @param {string} value\n * @param {NumericParts} options\n * @param {NumericOptions} numOptions\n * @returns {number}\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n ;\n /**\n * To attach handler for given property in current context.\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[property], handler)) {\n this.boundedEvents[property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n * @param {string} eventName - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @return {void}\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[i].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[i].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} args - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @return {void}\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[index];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // tslint:disable-next-line:no-any\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n */\n Observer.prototype.notExist = function (prop) {\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function}\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n * @param {Number} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string}\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date}\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number}\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @returns {string}\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n * @returns {number}\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void}\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n * @param {Object[]} obj Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void}\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void}\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n /* tslint:disable no-any */\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\nexport var IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n \"1-alt-variant\": \"Common Era\"\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': \"{1} 'at' {0}\",\n 'long': \"{1} 'at' {0}\",\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y',\n },\n }\n },\n \"islamic\": {\n \"months\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"1\": \"Muh.\",\n \"2\": \"Saf.\",\n \"3\": \"Rab. I\",\n \"4\": \"Rab. II\",\n \"5\": \"Jum. I\",\n \"6\": \"Jum. II\",\n \"7\": \"Raj.\",\n \"8\": \"Sha.\",\n \"9\": \"Ram.\",\n \"10\": \"Shaw.\",\n \"11\": \"Dhuʻl-Q.\",\n \"12\": \"Dhuʻl-H.\"\n },\n \"narrow\": {\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\",\n \"10\": \"10\",\n \"11\": \"11\",\n \"12\": \"12\"\n },\n \"wide\": {\n \"1\": \"Muharram\",\n \"2\": \"Safar\",\n \"3\": \"Rabiʻ I\",\n \"4\": \"Rabiʻ II\",\n \"5\": \"Jumada I\",\n \"6\": \"Jumada II\",\n \"7\": \"Rajab\",\n \"8\": \"Shaʻban\",\n \"9\": \"Ramadan\",\n \"10\": \"Shawwal\",\n \"11\": \"Dhuʻl-Qiʻdah\",\n \"12\": \"Dhuʻl-Hijjah\"\n }\n }\n },\n \"days\": {\n \"stand-alone\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"narrow\": {\n \"sun\": \"S\",\n \"mon\": \"M\",\n \"tue\": \"T\",\n \"wed\": \"W\",\n \"thu\": \"T\",\n \"fri\": \"F\",\n \"sat\": \"S\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n }\n },\n \"dayPeriods\": {\n \"format\": {\n \"wide\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n }\n }\n },\n \"eras\": {\n \"eraNames\": {\n \"0\": \"AH\"\n },\n \"eraAbbr\": {\n \"0\": \"AH\"\n },\n \"eraNarrow\": {\n \"0\": \"AH\"\n }\n },\n \"dateFormats\": {\n \"full\": \"EEEE, MMMM d, y G\",\n \"long\": \"MMMM d, y G\",\n \"medium\": \"MMM d, y G\",\n \"short\": \"M/d/y GGGGG\"\n },\n \"timeFormats\": {\n \"full\": \"h:mm:ss a zzzz\",\n \"long\": \"h:mm:ss a z\",\n \"medium\": \"h:mm:ss a\",\n \"short\": \"h:mm a\"\n },\n \"dateTimeFormats\": {\n \"full\": \"{1} 'at' {0}\",\n \"long\": \"{1} 'at' {0}\",\n \"medium\": \"{1}, {0}\",\n \"short\": \"{1}, {0}\",\n \"availableFormats\": {\n \"d\": \"d\",\n \"E\": \"ccc\",\n \"Ed\": \"d E\",\n \"Ehm\": \"E h:mm a\",\n \"EHm\": \"E HH:mm\",\n \"Ehms\": \"E h:mm:ss a\",\n \"EHms\": \"E HH:mm:ss\",\n \"Gy\": \"y G\",\n \"GyMMM\": \"MMM y G\",\n \"GyMMMd\": \"MMM d, y G\",\n \"GyMMMEd\": \"E, MMM d, y G\",\n \"h\": \"h a\",\n \"H\": \"HH\",\n \"hm\": \"h:mm a\",\n \"Hm\": \"HH:mm\",\n \"hms\": \"h:mm:ss a\",\n \"Hms\": \"HH:mm:ss\",\n \"M\": \"L\",\n \"Md\": \"M/d\",\n \"MEd\": \"E, M/d\",\n \"MMM\": \"LLL\",\n \"MMMd\": \"MMM d\",\n \"MMMEd\": \"E, MMM d\",\n \"MMMMd\": \"MMMM d\",\n \"ms\": \"mm:ss\",\n \"y\": \"y G\",\n \"yyyy\": \"y G\",\n \"yyyyM\": \"M/y GGGGG\",\n \"yyyyMd\": \"M/d/y GGGGG\",\n \"yyyyMEd\": \"E, M/d/y GGGGG\",\n \"yyyyMMM\": \"MMM y G\",\n \"yyyyMMMd\": \"MMM d, y G\",\n \"yyyyMMMEd\": \"E, MMM d, y G\",\n \"yyyyMMMM\": \"MMMM y G\",\n \"yyyyQQQ\": \"QQQ y G\",\n \"yyyyQQQQ\": \"QQQQ y G\"\n }\n }\n }\n },\n 'timeZoneNames': {\n \"hourFormat\": \"+HH:mm;-HH:mm\",\n \"gmtFormat\": \"GMT{0}\",\n \"gmtZeroFormat\": \"GMT\",\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n },\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###',\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n \"numbers\": {\n \"mapper\": {\n \"0\": \"0\",\n \"1\": \"1\",\n \"2\": \"2\",\n \"3\": \"3\",\n \"4\": \"4\",\n \"5\": \"5\",\n \"6\": \"6\",\n \"7\": \"7\",\n \"8\": \"8\",\n \"9\": \"9\"\n },\n \"mapperDigits\": \"0123456789\",\n \"numberSymbols\": {\n \"decimal\": \".\",\n \"group\": \",\",\n \"plusSign\": \"+\",\n \"minusSign\": \"-\",\n \"percentSign\": \"%\",\n \"nan\": \"NaN\",\n \"timeSeparator\": \":\",\n \"infinity\": \"∞\"\n },\n \"timeSeparator\": \":\",\n \"currencySymbol\": \"$\",\n \"currencypData\": {\n \"nlead\": \"$\",\n \"nend\": \"\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentpData\": {\n \"nlead\": \"\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"percentnData\": {\n \"nlead\": \"-\",\n \"nend\": \"%\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"currencynData\": {\n \"nlead\": \"($\",\n \"nend\": \")\",\n \"groupSeparator\": \",\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalnData\": {\n \"nlead\": \"-\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n },\n \"decimalpData\": {\n \"nlead\": \"\",\n \"nend\": \"\",\n \"groupData\": {\n \"primary\": 3\n },\n \"maximumFraction\": 2,\n \"minimumFraction\": 2\n }\n },\n \"dates\": {\n \"dayPeriods\": {\n \"am\": \"AM\",\n \"pm\": \"PM\"\n },\n \"dateSeperator\": \"/\",\n \"days\": {\n \"abbreviated\": {\n \"sun\": \"Sun\",\n \"mon\": \"Mon\",\n \"tue\": \"Tue\",\n \"wed\": \"Wed\",\n \"thu\": \"Thu\",\n \"fri\": \"Fri\",\n \"sat\": \"Sat\"\n },\n \"short\": {\n \"sun\": \"Su\",\n \"mon\": \"Mo\",\n \"tue\": \"Tu\",\n \"wed\": \"We\",\n \"thu\": \"Th\",\n \"fri\": \"Fr\",\n \"sat\": \"Sa\"\n },\n \"wide\": {\n \"sun\": \"Sunday\",\n \"mon\": \"Monday\",\n \"tue\": \"Tuesday\",\n \"wed\": \"Wednesday\",\n \"thu\": \"Thursday\",\n \"fri\": \"Friday\",\n \"sat\": \"Saturday\"\n }\n },\n \"months\": {\n \"abbreviated\": {\n \"1\": \"Jan\",\n \"2\": \"Feb\",\n \"3\": \"Mar\",\n \"4\": \"Apr\",\n \"5\": \"May\",\n \"6\": \"Jun\",\n \"7\": \"Jul\",\n \"8\": \"Aug\",\n \"9\": \"Sep\",\n \"10\": \"Oct\",\n \"11\": \"Nov\",\n \"12\": \"Dec\"\n },\n \"wide\": {\n \"1\": \"January\",\n \"2\": \"February\",\n \"3\": \"March\",\n \"4\": \"April\",\n \"5\": \"May\",\n \"6\": \"June\",\n \"7\": \"July\",\n \"8\": \"August\",\n \"9\": \"September\",\n \"10\": \"October\",\n \"11\": \"November\",\n \"12\": \"December\"\n }\n },\n \"eras\": {\n \"1\": \"AD\"\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n * @private\n * @param {string} skeleton\n * @param {Object} dateObject\n * @param {string} type\n * @returns {string}\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n * @private\n * @param {Object} cldr\n * @param {string} culture\n * @param {boolean} isNumber\n * @returns {Dependables}\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n * @private\n * @param {string} type\n * @param {string} numSystem\n * @param {Object} obj\n * @param {boolean} isAccount\n * @returns {string}\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n * @private\n * @param {string} skeleton\n * @returns {NumericSkeleton}\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n /* tslint:disable no-any */\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n * @private\n * @param {string} pattern\n * @param {boolean} needFraction\n * @param {string} cSymbol\n * @param {boolean} fractionOnly\n * @returns {NegativeData}\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n * @private\n * @param {string} val\n * @param {string} sym\n * @returns {string}\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n /**\n * Returns currency symbol based on currency code\n * @private\n * @param {Object} numericObject\n * @param {string} currencyCode\n * @returns {string}\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Dependables} obj\n * @returns {GenericFormatOptions}\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n * @private\n * @param {string} format\n * @param {CommonOptions} dOptions\n * @param {Object} numObject\n * @returns {NegativeData}\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n cOptions.useGrouping = integerPart.indexOf(',') !== -1;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n cOptions.groupSeparator = dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/\\'/g, '');\n cOptions.nend = cOptions.nend.replace(/\\'/g, '');\n }\n return cOptions;\n }\n /**\n * Returns formatting options for currency or percent type\n * @private\n * @param {string[]} parts\n * @param {string} actual\n * @param {string} symbol\n * @returns {NegativeData}\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[i];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n * @private\n * @param {Object} dateObj\n * @returns {string}\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n * @private\n * @param {string} culture\n * @param {DateFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n // tslint:disable-next-line:no-any\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // tslint:disable-next-line:no-any\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n * @private\n * @param {string} culture\n * @param {NumberFormatOptions} options\n * @param {Object} cldr\n * @returns {string}\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/\\'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[x] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[iCulture] || defaultFirstDay;\n }\n return firstDayMapper[firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param pData\n * @param aCurrency\n * @param rCurrency\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(this.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n * @param {string|Object} options?\n * @param {string} type?\n * @param {boolean} async?\n * @returns defaultType\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n * Send the request to server.\n * @param {any} data - To send the user data\n * @return {Promise}\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n * @param {string} key Key to search in the response header\n * @returns {string}\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ \\/]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ \\/]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ \\/]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ \\/]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ \\/]([\\w.]+)/i,\n SAFARI: /(safari)[ \\/]([\\w.]+)/i,\n WEBKIT: /(webkit)[ \\/]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n * @param {string} event - type of event triggered.\n * @returns {Boolean}\n */\n Browser.getEvent = function (event) {\n // tslint:disable-next-line:no-any\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer && !Browser.isWindows ? events[event].isPointer :\n (Browser.isTouch ? events[event].isTouch + (!Browser.isDevice ? ' ' + events[event].isDevice : '')\n : events[event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * To get the value based on provided key and regX\n * @param {string} key\n * @param {RegExp} regX\n * @returns {Object}\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = window.browserDetails;\n if ('undefined' === typeof browserDetails[key]) {\n return browserDetails[key] = regX.test(Browser.userAgent);\n }\n return browserDetails[key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties \n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n * @returns BrowserInfo\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * @private\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n }\n else {\n return [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} debounce - Specifies at what interval given event listener should be triggered.\n * @return {Function}\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[i],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[i], debounceListener);\n }\n else {\n element.addEventListener(event[i], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[j] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[j], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n * @param {any} element - Specifies the target html element to clear the events\n * @return {void}\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n eventData = EventHandler.addOrGetEventData(element);\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[i].name, copyData[i].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @return {void}\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n var fn = null;\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(\\/if|\\/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n * @param {RegExp} value - Value expression.\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper? - Helper functions as an object.\n * @private\n */\nexport function compile(template, helper) {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper);\n var fnCode = \"var str=\\\"\" + evalExpResult + \"\\\"; return str;\";\n // tslint:disable-next-line:no-function-constructor-with-string-args\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n// function used to evaluate the function expression\nfunction evalExp(str, nameSpace, helper) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\\\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /\\@|\\#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, true);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + 'var ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /\\@|\\$|\\#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /\\@|\\$|\\#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition \n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = '\"+' + addNameSpace(cnt.replace(/\\,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '+\"';\n }\n }\n return cnt;\n });\n}\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, emptyStrCheck) {\n /* istanbul ignore next */\n if (emptyStrCheck && str === '') {\n return str;\n }\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '.' + str : str);\n}\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// tslint:disable-next-line\nfunction SlashReplace(tempStr) {\n // tslint:disable-next-line\n var double = \"\\\\\\\\\";\n if (tempStr.match(DOUBLE_SLASH)) {\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, emptyStrCheck) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /\\@|\\$|\\#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, emptyStrCheck);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+\\\\s]+))?)*)\\s*(\\/?)>/;\nvar endRegex = /^<\\/([-A-Za-z0-9_]+)[^>]*>/;\nvar attributeRegex = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;\n/**\n * Namespace for VirtualDOM\n * @private\n */\nexport var VirtualDOM;\n(function (VirtualDOM) {\n //tslint:disable:no-any\n function createElement(tagName, properties) {\n var children = [];\n var extended = extend({}, {}, properties, true);\n if (!isNullOrUndefined(properties)) {\n var keys = Object.keys(properties);\n if (keys.length) {\n if (extended.innerHTML) {\n children = ConvertHTMLToJSon(extended.innerHTML);\n delete extended.innerHTML;\n }\n if (extended.attrs) {\n extend(extended, extended.attrs);\n delete extended.attrs;\n }\n if (extended.styles) {\n var valArr = extended.styles.split(';');\n var vObj = {};\n for (var i = 0, length_1 = valArr.length; i < length_1; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n delete extended.styles;\n extended.style = vObj;\n }\n }\n }\n return {\n tagName: tagName,\n attributes: extended || {},\n children: children\n };\n }\n VirtualDOM.createElement = createElement;\n function assignParent(childrens, parent) {\n if (parent && childrens) {\n childrens.forEach(function (child) {\n if (isObject(child)) {\n if (child.parent) {\n detach(child);\n }\n child.parent = parent;\n }\n return child;\n });\n }\n }\n VirtualDOM.assignParent = assignParent;\n function append(fromElements, toElement) {\n assignParent(fromElements, toElement);\n if (toElement.children) {\n toElement.children = toElement.children.concat(fromElements);\n }\n else {\n toElement.children = [].concat(fromElements);\n }\n }\n VirtualDOM.append = append;\n function prepend(child, toElement) {\n assignParent(child, toElement);\n if (!toElement.children || !toElement.children.length) {\n toElement.children = [];\n toElement.children.concat(child);\n }\n else {\n for (var i = child.length - 1; i >= 0; i--) {\n toElement.children.unshift(child[i]);\n }\n }\n }\n VirtualDOM.prepend = prepend;\n function detach(element) {\n var parent = element.parent;\n if (parent) {\n var index = parent.children.indexOf(element);\n if (index !== -1) {\n parent.children.splice(index);\n }\n }\n return parent;\n }\n VirtualDOM.detach = detach;\n //tslint:disable-next-line\n function vDomSelector(_a) {\n var ele = _a.ele, selector = _a.selector, selectAll = _a.selectAll, immediateParent = _a.immediateParent;\n var iSelector = selector.split(' ');\n var curColl = ele;\n for (var i = 0, length_2 = iSelector.length; i < length_2; i++) {\n var isDescendant = false;\n var parent_2 = curColl;\n var curSelector = iSelector[i];\n var simpleSelector = false;\n var mapper = [];\n if (simpleRegex.test(curSelector)) {\n simpleSelector = true;\n processSelector(curSelector, mapper);\n }\n else if (curSelector.indexOf('>') === -1) {\n var splitSelector = curSelector.match(multipleSplitRegex);\n for (var _i = 0, splitSelector_1 = splitSelector; _i < splitSelector_1.length; _i++) {\n var curMap = splitSelector_1[_i];\n processSelector(curMap, mapper);\n }\n }\n else if (curSelector.indexOf('>') !== -1) {\n isDescendant = true;\n var dSelector = curSelector.split('>');\n //tslint:disable-next-line\n var dParent = ele;\n var descendent = void 0;\n var flag = 0;\n for (var _b = 0, dSelector_1 = dSelector; _b < dSelector_1.length; _b++) {\n var sel = dSelector_1[_b];\n if (!dParent) {\n break;\n }\n if (dParent.length) {\n var descendentChild = [];\n for (var _c = 0, dParent_1 = dParent; _c < dParent_1.length; _c++) {\n var child = dParent_1[_c];\n descendentChild = descendentChild.concat(vDomSelector({\n ele: child, selector: sel,\n selectAll: selectAll, immediateParent: !!flag\n }));\n }\n descendent = descendentChild;\n }\n else {\n descendent = vDomSelector({ ele: dParent, selector: sel, selectAll: selectAll, immediateParent: !!flag });\n }\n flag++;\n dParent = descendent;\n }\n if (descendent) {\n curColl = descendent;\n }\n }\n if (!isDescendant) {\n if (parent_2.length) {\n var iCurSelector = [];\n for (var _d = 0, parent_1 = parent_2; _d < parent_1.length; _d++) {\n var curParent = parent_1[_d];\n iCurSelector = iCurSelector.concat(accessElement(curParent, mapper, selectAll, immediateParent));\n }\n curColl = iCurSelector;\n }\n else {\n curColl = accessElement(parent_2, mapper, selectAll, immediateParent);\n }\n }\n }\n if (selectAll) {\n return curColl;\n }\n else {\n return curColl[0] || null;\n }\n }\n VirtualDOM.vDomSelector = vDomSelector;\n function processSelector(selector, mapper) {\n var match = selector.match(idClassSelector);\n var obj = {};\n if (match) {\n var curMapper = selectMapper[match[0]];\n if (curMapper === 'className') {\n var curObj = mapper.filter(function (obj) { return obj.hasOwnProperty('className'); })[0];\n var canPush = false;\n if (!curObj) {\n canPush = true;\n curObj = {};\n }\n var existValue = curObj[curMapper] || '';\n curObj[curMapper] = existValue + classRegexString.replace('{value}', selector.replace('.', ''));\n if (canPush) {\n mapper.push(curObj);\n }\n }\n else {\n obj[curMapper] = selector.replace(match[0], '');\n mapper.push(obj);\n }\n }\n else {\n mapper.push({ tagName: selector });\n }\n }\n //tslint:disable-next-line\n function accessElement(ele, mapper, selectAll, immediateParent) {\n if (ele.children) {\n //tslint:disable-next-line\n var temp_1 = ele.children.filter(function (child) {\n if (typeof (child) !== 'string') {\n var matched = true;\n for (var _i = 0, mapper_1 = mapper; _i < mapper_1.length; _i++) {\n var map = mapper_1[_i];\n var key = Object.keys(map)[0];\n var expected = map[key];\n var actualValue = getValue(assigner[key], child);\n if (key === 'className') {\n if (!(new RegExp('^' + expected + '.*$').test(actualValue))) {\n matched = false;\n break;\n }\n }\n else if (actualValue !== expected) {\n matched = false;\n break;\n }\n }\n return matched;\n }\n else {\n return false;\n }\n });\n if (!immediateParent && (!temp_1.length || selectAll)) {\n ele.children.forEach(function (child) {\n if (isObject(child)) {\n temp_1 = temp_1.concat(accessElement(child, mapper, selectAll));\n }\n });\n }\n return temp_1;\n }\n else {\n return [];\n }\n }\n VirtualDOM.accessElement = accessElement;\n function ConvertHTMLToJSon(htmlString) {\n var results = [];\n var isText;\n var tagArray = [];\n var backup = htmlString;\n var nodeArray = [];\n while (htmlString) {\n isText = true;\n var lastVal = getLastValue(tagArray);\n if (!lastVal || !contains(cspElement, lastVal)) {\n if (htmlString.indexOf(']*>'), function (all, text) {\n text = text.replace(/|/g, '$1$2');\n iterateText(text);\n return '';\n });\n iterateEndTag('', getLastValue(tagArray));\n }\n backup = htmlString;\n }\n function iterateStartTag(start, tagName, rest) {\n tagName = tagName.toLowerCase();\n if (contains(blockElements, tagName)) {\n while (getLastValue(tagArray) && contains(inlineElement, getLastValue(tagArray))) {\n iterateEndTag('', getLastValue(tagArray));\n }\n }\n if (contains(selfClosingElements, tagName) && getLastValue(tagArray)) {\n iterateEndTag('', tagName);\n }\n var isSelfTag = contains(emptyElements, tagName);\n if (!isSelfTag) {\n tagArray.push(tagName);\n }\n var attrs = {};\n //tslint:disable-next-line\n rest.replace(attributeRegex, function (match, name) {\n var names = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n names[_i - 2] = arguments[_i];\n }\n //tslint:disable-next-line\n var val = names[2] ? names[2] :\n names[3] ? names[3] :\n names[4] ? names[4] :\n contains(fillAttrs, name) ? name : '';\n if (name === 'style') {\n var valArr = val.split(';');\n var vObj = {};\n for (var i = 0, length_3 = valArr.length; i < length_3; i++) {\n var cVal = valArr[i];\n var styleSplit = cVal.split(':');\n vObj[styleSplit[0]] = styleSplit[1];\n }\n val = vObj;\n }\n name = nameMapper[name] || name;\n attrs[name] = val;\n //tslint:disable-next-line\n });\n attrs['data-id'] = getRandomId();\n var tagObject = {\n tagName: tagName,\n attributes: attrs\n };\n if (isSelfTag) {\n var parent_3 = (nodeArray[0] || results);\n if (parent_3.children === undefined) {\n parent_3.children = [];\n }\n tagObject.parent = parent_3;\n parent_3.children.push(tagObject);\n }\n else {\n nodeArray.unshift(tagObject);\n }\n }\n function iterateEndTag(start, tagName) {\n var pos;\n if (!tagName) {\n pos = 0;\n }\n else {\n for (pos = tagArray.length - 1; pos >= 0; pos--) {\n if (tagArray[pos] === tagName) {\n break;\n }\n }\n }\n if (pos >= 0) {\n for (var j = nodeArray.length - 1; j >= pos; j--) {\n //tslint:disable-next-line\n var node = nodeArray.shift();\n if (nodeArray.length === 0) {\n results.push(node);\n }\n else {\n var parent_4 = nodeArray[0];\n if (parent_4.children === undefined) {\n parent_4.children = [];\n }\n node.parent = parent_4;\n parent_4.children.push(node);\n }\n }\n tagArray.length = pos;\n }\n }\n function iterateText(text) {\n if (nodeArray.length === 0) {\n results.push(text);\n }\n else {\n var parent_5 = nodeArray[0];\n if (parent_5.children === undefined) {\n parent_5.children = [];\n }\n parent_5.children.push(text);\n }\n }\n return results;\n }\n VirtualDOM.ConvertHTMLToJSon = ConvertHTMLToJSon;\n //tslint:disable-next-line \n function getLastValue(arr) {\n return arr[arr.length - 1];\n }\n function contains(arr, key) {\n return arr.indexOf(key) !== -1;\n }\n //tslint:disable-next-line\n function cloneNode(ele, deep) {\n if (isObject(ele)) {\n if (deep) {\n return extend({}, {}, ele, true);\n }\n else {\n return { tagName: ele.tagName, attributes: ele.attributes };\n }\n }\n else {\n return ele.cloneNode(deep);\n }\n }\n VirtualDOM.cloneNode = cloneNode;\n function setStyleAttribute(element, attrs) {\n if (element.attributes.style) {\n (element.attributes).style = extend({}, attrs);\n }\n else {\n element.attributes.style = extend(element.attributes.style, attrs);\n }\n }\n VirtualDOM.setStyleAttribute = setStyleAttribute;\n //tslint:enable:no-any\n})(VirtualDOM || (VirtualDOM = {}));\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nimport { VirtualDOM } from './virtual-dom';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n * @param tagName - Name of the tag, id and class names.\n * @param properties - Object to set properties in the element.\n * @param properties.id - To set the id to the created element.\n * @param properties.className - To add classes to the element.\n * @param properties.innerHTML - To set the innerHTML to element.\n * @param properties.styles - To set the some custom styles to element.\n * @param properties.attrs - To set the attributes to element.\n * @private\n */\nexport function createElement(tagName, properties) {\n //tslint:disable-next-line\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele && classList) {\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele && classList) {\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n }\n return elements;\n}\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n * @param {Element|Node} element - An element the need to check visibility\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n //tslint:disable:no-any\n if (isObject(toElement)) {\n VirtualDOM.prepend(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n if (isObject(toElement)) {\n VirtualDOM.append(fromElements, toElement);\n }\n else {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n * @param ele - An element is going to evaluate the script\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from the\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @private\n */\nexport function detach(element) {\n if (isObject(element)) {\n return VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n }\n}\n//tslint: enable:no-any\n/**\n * The function used to remove the element from Dom also clear the bounded events\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @private\n */\nexport function remove(element) {\n if (isObject(element)) {\n VirtualDOM.detach(element);\n }\n else {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n }\n}\n/**\n * The function helps to set multiple attributes to an element\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {{[key:string]:string}} attributes - JSON Object that is going to as attributes.\n * @private\n */\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n if (ele) {\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[iKey] = attributes[key];\n }\n else {\n ele.setAttribute(key, attributes[key]);\n }\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\n//tslint:disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: false });\n }\n else {\n selector = querySelectId(selector);\n return context.querySelector(selector);\n }\n}\n/**\n * The function selects an array of element from the given context.\n * @param {string} selector - Selector string need fetch element from the\n * @param {Document|Element=document} context - It is an optional type, That specifies a Dom context.\n * @private\n */\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n if (isObject(context) && !needsVDOM) {\n //tslint:disable-next-line\n return VirtualDOM.vDomSelector({ ele: context, selector: selector, selectAll: true });\n }\n else {\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n }\n}\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[i].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[j].indexOf('#') > -1) {\n if (!list[j].match(/\\[.*\\]/)) {\n var splitId = list[j].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[j].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[j] = setId.join('.');\n }\n }\n }\n }\n idList[i] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n * @param {Element|Node} element - An element that need to get siblings.\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @return {void}\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n if (isObject(element)) {\n // tslint:disable-next-line:no-any\n VirtualDOM.setStyleAttribute(element, attrs);\n }\n else {\n Object.keys(attrs).forEach(function (key) {\n // tslint:disable-next-line:no-any\n element.style[key] = attrs[key];\n });\n }\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @return {void}\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {void}\n * @private\n */\nexport function matches(element, selector) {\n //tslint:disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\nexport function includeInnerHTML(ele, innerHTML) {\n if (isObject(ele)) {\n if (innerHTML === '') {\n ele.children = [];\n }\n else {\n var res = VirtualDOM.ConvertHTMLToJSon(innerHTML);\n if (res.length) {\n VirtualDOM.assignParent(res, ele);\n ele.children = res;\n }\n }\n }\n else {\n ele.innerHTML = innerHTML;\n }\n}\n//tslint:disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // tslint:disable-next-line:no-any\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n * @param {} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @return {Element | VirtualObject}\n * @private\n */\n//tslint:disable:no-any\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n else {\n return { tagName: element.tagName, attributes: element.attributes };\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp('\\]');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange? - Specifies to true when we set properties.\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n ;\n /**\n * Calls for child element data bind\n * @param {Object} obj\n * @param {Object} parent\n * @returns {void}\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[key] instanceof Array) {\n for (var _a = 0, _b = parent[key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n ;\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[sfBlazor].updateModel) {\n window[sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n ;\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} listener - Specifies the call to run when the event occurs.\n * @return {void}\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @return {void}\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @return {void}\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n */\n Base.prototype.destroy = function () {\n var _this = this;\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n * @param elem Specifies the HTMLElement or element id string.\n * @param comp Specifies the component module name or Component.\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[i];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[i].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[i], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type\n */\nfunction getObject(instance, curKey, defaultValue, type) {\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[curKey];\n}\n/**\n * Returns object array\n * @param {ClassObject} instance\n * @param {string} curKey\n * @param {Object[]} defaultValue\n * @param type\n * @param {boolean} isSetter\n * @returns {Object[]}\n */\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[i], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[i], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[i], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[curKey] = defaultValue;\n }\n return this.properties[curKey];\n };\n}\n/**\n * Set the properties for the object\n * @param {Object} defaultValue\n * @param {string} curKey\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[curKey] !== newValue) {\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n */\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[curKey], extendFunc, descriptor);\n });\n }\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[curKey], 'isComplexArray', { value: true });\n }\n return this.properties[curKey];\n };\n}\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[curKey] = newValCollection;\n };\n}\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[curKey] = defCollection;\n }\n return this.properties[curKey];\n };\n}\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[dFunc].apply(prop, [newValue[i]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[i], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[i], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[dFunc].apply(prop);\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n /* tslint:enable no-function-expression */\n}\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[keyString][action] = arrayFunction;\n }\n }\n return modelObject;\n}\n/**\n * Method used to create property. General syntax below.\n * @param {T} defaultValue? - Specifies the default value of property.\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n * @param {T} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n * @param {Function} defaultType - Specifies the default value of property.\n * @param {Function} type - Specifies the class factory type of complex object.\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n * @param {T[]} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n * @param {T[]} defaultType - Specifies the default type of property.\n * @param {Function} type - Specifies the class type of complex object.\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n * @param {Function} defaultValue? - Specifies the default value of property.\n * @param {boolean} isComplex? - Specifies the whether it is complex object.\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n /* tslint:disable no-any */\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n target.propList[propertyType + 'Names'].push(key);\n /* tslint:enable no-any */\n}\n/**\n * Returns an object containing the builder properties\n * @param {Function} component\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n * @param {any} component -specifies the target component for which builder to be created.\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n * @param {Object} context\n * @param {string} prefix\n * @private\n */\nfunction getParentContext(context, prefix) {\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @return {void}\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n };\n /**\n * Triggers animation\n * @param {AnimationModel} model\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var startTime = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element \n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame \n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n * @param {AnimationModel} options\n * @returns {AnimationModel}\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n */\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n * @private\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n * @private\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n * @private\n * @param HTMLElement element - Target element\n * @param RippleOptions rippleOptions - Ripple options .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return Function;\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n * @param {MouseEvent} e\n * @returns {void}\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n * @param {MouseEvent} e\n * @param {rippleArgs} eventArgs\n * @returns {void}\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean}\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n ;\n /**\n * Inject required modules in component library\n * @return {void}\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[i];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n * @return {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n * @param {ModuleDeclaration[]} moduleList\n * @returns {void}\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n * @param {string} name\n * @returns {string}\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n * @param {string} modName\n * @returns {boolean}\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { VirtualDOM } from './virtual-dom';\nimport { getRandomId } from './template-engine';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\n/* istanbul ignore next */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n ;\n /**\n * Destroys the sub modules while destroying the widget\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n /* istanbul ignore next */\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n */\n /* istanbul ignore next */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // tslint:disable-next-line:no-any\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n ;\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @return {void}\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @return {void}\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @return {void}\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n ;\n /**\n * Dynamically injects the required modules to the component.\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[i]) === -1) {\n this.prototype.injectedModules.push(moduleList[i]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n if (isVDOM && this.isReactHybrid) {\n if (prop) {\n prop = {};\n }\n prop['data-id'] = getRandomId();\n return VirtualDOM.createElement(tagName, prop);\n }\n else {\n return createElement(tagName, prop);\n }\n };\n /**\n *\n * @param handler - handler to be triggered after state Updated.\n * @param argument - Arguments to be passed to caller.\n * @private\n */\n /* istanbul ignore next */\n //tslint:disable:no-any\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n //tslint:disable:no-any\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n //tslint:disable-next-line\n Component.prototype.renderReactTemplates = function () {\n //No Code\n };\n //tslint:disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // tslint:disable-next-line:no-any\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n return new RegExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection \n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // tslint:disable-next-line:no-empty\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n * @param {boolean} val\n * @param {string} propName\n * @returns {void}\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n * @param {Object} prop\n * @param {boolean} muteOnChange\n * {void}\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n * @param {string} key\n * @param {Object} newValue\n * @param {Object} oldValue\n * @returns {void}\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[key] = oldValue;\n this.changedProperties[key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n // tslint:disable-next-line:no-any\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[i]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[i]];\n }\n }\n else {\n newChanges[parentKey] = {};\n parent_1 = newChanges[parentKey];\n newChanges[parentKey][key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // tslint:disable-next-line:no-any\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n /* tslint:disable no-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[axis]] > element[client[axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[i]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10),\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n var marginTop = parseFloat(styles.marginTop);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += this.element.offsetTop;\n if (dTop < 0) {\n if ((this.element.offsetTop + dTop) >= 0) {\n draEleTop = this.element.offsetTop + dTop;\n }\n else {\n draEleTop -= this.element.offsetTop;\n }\n }\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll) {\n this.helperElement.scrollIntoView();\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n top = elementArea.top;\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (!this.clone) {\n this.getScrollableValues();\n pageY -= this.tempScrollHeight ? this.parentScrollY : 0;\n pageX -= this.tempScrollWidth ? this.parentScrollY : 0;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n * @param {HTMLElement} element\n * @param {KeyboardEventsModel} options\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n * @return {void}\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n * @param newProp\n * @param oldProp\n * @returns {void}\n * @private\n */\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n ;\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n * @param {string} config - configuration data\n * returns {KeyData}\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[config] = keyData;\n return keyData;\n };\n // Return the keycode value as string \n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n * @param {string} locale\n * @returns {void}\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n * @param {string} propertyName - specifies the property for which localize text to be returned.\n * @return string\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[prop])) {\n return this.currentLocale[prop];\n }\n else {\n return this.localeStrings[prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n * @param {Object} curObject\n * @param {string} locale\n * @returns {Object}\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[locale]) {\n return (curObject)[locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n // tslint:disable-next-line:no-any\n var isFirefox = (/Mozilla|Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed \n /**\n * @private\n * @param newProp\n * @param oldProp\n */\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n * @return {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n * @returns {string}\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean}\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // tslint:disable-next-line:no-any\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n // tslint:disable-next-line:max-line-length\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * SanitizeHtmlHelper for sanitize the value.\n */\nimport { detach } from './dom';\nvar removeTags = [\n 'script',\n 'style',\n 'iframe[src]',\n 'link[href*=\"javascript:\"]',\n 'object[type=\"text/x-scriptlet\"]',\n 'object[data^=\"data:text/html;base64\"]',\n 'img[src^=\"data:text/html;base64\"]',\n '[src^=\"javascript:\"]',\n '[dynsrc^=\"javascript:\"]',\n '[lowsrc^=\"javascript:\"]',\n '[type^=\"application/x-shockwave-flash\"]'\n];\nvar removeAttrs = [\n { attribute: 'href', selector: '[href*=\"javascript:\"]' },\n { attribute: 'background', selector: '[background^=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"javascript:\"]' },\n { attribute: 'style', selector: '[style*=\"expression(\"]' },\n { attribute: 'href', selector: 'a[href^=\"data:text/html;base64\"]' }\n];\nvar jsEvents = ['onchange',\n 'onclick',\n 'onmouseover',\n 'onmouseout',\n 'onkeydown',\n 'onload',\n 'onerror',\n 'onblur',\n 'onfocus',\n 'onbeforeload',\n 'onbeforeunload',\n 'onkeyup',\n 'onsubmit',\n 'onafterprint',\n 'onbeforeonload',\n 'onbeforeprint',\n 'onblur',\n 'oncanplay',\n 'oncanplaythrough',\n 'onchange',\n 'onclick',\n 'oncontextmenu',\n 'ondblclick',\n 'ondrag',\n 'ondragend',\n 'ondragenter',\n 'ondragleave',\n 'ondragover',\n 'ondragstart',\n 'ondrop',\n 'ondurationchange',\n 'onemptied',\n 'onended',\n 'onerror',\n 'onerror',\n 'onfocus',\n 'onformchange',\n 'onforminput',\n 'onhaschange',\n 'oninput',\n 'oninvalid',\n 'onkeydown',\n 'onkeypress',\n 'onkeyup',\n 'onload',\n 'onloadeddata',\n 'onloadedmetadata',\n 'onloadstart',\n 'onmessage',\n 'onmousedown',\n 'onmousemove',\n 'onmouseout',\n 'onmouseover',\n 'onmouseup',\n 'onmousewheel',\n 'onoffline',\n 'onoine',\n 'ononline',\n 'onpagehide',\n 'onpageshow',\n 'onpause',\n 'onplay',\n 'onplaying',\n 'onpopstate',\n 'onprogress',\n 'onratechange',\n 'onreadystatechange',\n 'onredo',\n 'onresize',\n 'onscroll',\n 'onseeked',\n 'onseeking',\n 'onselect',\n 'onstalled',\n 'onstorage',\n 'onsubmit',\n 'onsuspend',\n 'ontimeupdate',\n 'onundo',\n 'onunload',\n 'onvolumechange',\n 'onwaiting',\n 'onmouseenter',\n 'onmouseleave',\n 'onmousewheel',\n 'onstart',\n 'onpropertychange'\n];\nvar SanitizeHtmlHelper = /** @class */ (function () {\n function SanitizeHtmlHelper() {\n }\n SanitizeHtmlHelper.beforeSanitize = function () {\n return {\n selectors: {\n tags: removeTags,\n attributes: removeAttrs\n }\n };\n };\n ;\n SanitizeHtmlHelper.sanitize = function (value) {\n var item = this.beforeSanitize();\n var output = this.serializeValue(item, value);\n return output;\n };\n SanitizeHtmlHelper.serializeValue = function (item, value) {\n this.removeAttrs = item.selectors.attributes;\n this.removeTags = item.selectors.tags;\n this.wrapElement = document.createElement('div');\n this.wrapElement.innerHTML = value;\n this.removeXssTags();\n this.removeJsEvents();\n this.removeXssAttrs();\n var tempEleValue = this.wrapElement.innerHTML;\n this.removeElement();\n return tempEleValue;\n };\n SanitizeHtmlHelper.removeElement = function () {\n // Removes an element's attibute to avoid html tag validation\n var nodes = this.wrapElement.children;\n for (var j = 0; j < nodes.length; j++) {\n var attribute = nodes[j].attributes;\n for (var i = 0; i < attribute.length; i++) {\n this.wrapElement.children[j].removeAttribute(attribute[i].localName);\n }\n }\n };\n SanitizeHtmlHelper.removeXssTags = function () {\n var elements = this.wrapElement.querySelectorAll(this.removeTags.join(','));\n if (elements.length > 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Animation, compile as templateComplier, Browser } from '@syncfusion/ej2-base';\nimport { merge, extend, isNullOrUndefined, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { createElement, remove } from '@syncfusion/ej2-base';\nimport { Index } from '../../common/model/base';\nimport { VisibleLabels } from '../../chart/axis/axis';\nimport { axisLabelRender, regSub } from '../model/constants';\nimport { measureText, findDirection, Rect, TextOption, Size, PathOption, SvgRenderer, CanvasRenderer } from '@syncfusion/ej2-svg-base';\n/**\n * Function to sort the dataSource, by default it sort the data in ascending order.\n * @param {Object} data\n * @param {string} fields\n * @param {boolean} isDescending\n * @returns Object\n */\nexport function sort(data, fields, isDescending) {\n var sortData = extend([], data, null);\n sortData.sort(function (a, b) {\n var first = 0;\n var second = 0;\n for (var i = 0; i < fields.length; i++) {\n first += a[fields[i]];\n second += b[fields[i]];\n }\n if ((!isDescending && first < second) || (isDescending && first > second)) {\n return -1;\n }\n else if (first === second) {\n return 0;\n }\n return 1;\n });\n return sortData;\n}\n/** @private */\nexport function isBreakLabel(label) {\n return label.indexOf('
') !== -1;\n}\nexport function getVisiblePoints(series) {\n var points = extend([], series.points, null, true);\n var tempPoints = [];\n var tempPoint;\n var pointIndex = 0;\n for (var i = 0; i < points.length; i++) {\n tempPoint = points[i];\n if (isNullOrUndefined(tempPoint.x) || tempPoint.x === '') {\n continue;\n }\n else {\n tempPoint.index = pointIndex++;\n tempPoints.push(tempPoint);\n }\n }\n return tempPoints;\n}\n/** @private */\nexport function rotateTextSize(font, text, angle, chart) {\n var renderer = new SvgRenderer(chart.element.id);\n var box;\n var options;\n var htmlObject;\n var labelText;\n var textCollection = [];\n var height;\n var dy;\n var label;\n var tspanElement;\n options = {\n id: 'rotate_text',\n x: chart.initialClipRect.x,\n y: chart.initialClipRect.y,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'transform': 'rotate(' + angle + ', 0, 0)',\n 'text-anchor': 'middle'\n };\n if (isBreakLabel(text)) {\n textCollection = text.split('
');\n labelText = textCollection[0];\n }\n else {\n labelText = text;\n }\n htmlObject = renderer.createText(options, labelText);\n if (!chart.delayRedraw && !chart.redraw) {\n chart.element.appendChild(chart.svgObject);\n }\n // for line break label\n if (typeof textCollection !== 'string' && textCollection.length > 1) {\n for (var i = 1, len = textCollection.length; i < len; i++) {\n height = (measureText(textCollection[i], font).height);\n dy = (options.y) + ((i * height));\n label = textCollection[i];\n tspanElement = renderer.createTSpan({\n 'x': options.x, 'id': options.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n chart.svgObject.appendChild(htmlObject);\n box = htmlObject.getBoundingClientRect();\n remove(htmlObject);\n if (!chart.delayRedraw && !chart.redraw) {\n remove(chart.svgObject);\n }\n return new Size((box.right - box.left), (box.bottom - box.top));\n}\n/** @private */\nexport function removeElement(id) {\n if (!id) {\n return null;\n }\n var element = typeof id === 'string' ? getElement(id) : id;\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function logBase(value, base) {\n return Math.log(value) / Math.log(base);\n}\n/** @private */\nexport function showTooltip(text, x, y, areaWidth, id, element, isTouch, isTitleOrLegendEnabled) {\n //let id1: string = 'EJ2_legend_tooltip';\n var tooltip = document.getElementById(id);\n var size = measureText(text, {\n fontFamily: 'Segoe UI', size: '12px',\n fontStyle: 'Normal', fontWeight: 'Regular'\n });\n var width = size.width + 5;\n x = (x + width > areaWidth) ? x - (width + 15) : x;\n y = isTitleOrLegendEnabled ? (y - size.height / 2) : y + 15;\n if (!tooltip) {\n tooltip = createElement('div', {\n innerHTML: text,\n id: id,\n styles: 'top:' + (y).toString() + 'px;left:' + (x + 15).toString() +\n 'px;background-color: rgb(255, 255, 255) !important; color:black !important; ' +\n 'position:absolute;border:1px solid rgb(112, 112, 112); padding-left : 3px; padding-right : 2px;' +\n 'padding-bottom : 2px; padding-top : 2px; font-size:12px; font-family: \"Segoe UI\"'\n });\n element.appendChild(tooltip);\n var left = parseInt(tooltip.style.left.replace('px', ''), 10);\n if (left < 0) {\n tooltip.style.left = '0px';\n }\n }\n else {\n tooltip.innerHTML = text;\n tooltip.style.top = (y).toString() + 'px';\n tooltip.style.left = (x + 15).toString() + 'px';\n }\n if (isTouch) {\n setTimeout(function () { removeElement(id); }, 1500);\n }\n}\n/** @private */\nexport function inside(value, range) {\n return (value < range.max) && (value > range.min);\n}\n/** @private */\nexport function withIn(value, range) {\n return (value <= range.max) && (value >= range.min);\n}\n/** @private */\nexport function logWithIn(value, axis) {\n if (axis.valueType === 'Logarithmic') {\n value = logBase(value, axis.logBase);\n }\n else {\n value = value;\n }\n return value;\n}\n/** @private */\nexport function withInRange(previousPoint, currentPoint, nextPoint, series) {\n var mX2 = logWithIn(currentPoint.xValue, series.xAxis);\n var mX1 = previousPoint ? logWithIn(previousPoint.xValue, series.xAxis) : mX2;\n var mX3 = nextPoint ? logWithIn(nextPoint.xValue, series.xAxis) : mX2;\n var xStart = Math.floor(series.xAxis.visibleRange.min);\n var xEnd = Math.ceil(series.xAxis.visibleRange.max);\n return ((mX1 >= xStart && mX1 <= xEnd) || (mX2 >= xStart && mX2 <= xEnd) ||\n (mX3 >= xStart && mX3 <= xEnd) || (xStart >= mX1 && xStart <= mX3));\n}\n/** @private */\nexport function sum(values) {\n var sum = 0;\n for (var _i = 0, values_1 = values; _i < values_1.length; _i++) {\n var value = values_1[_i];\n sum += value;\n }\n return sum;\n}\n/** @private */\nexport function subArraySum(values, first, last, index, series) {\n var sum = 0;\n if (index !== null) {\n for (var i = (first + 1); i < last; i++) {\n if (index.indexOf(i) === -1) {\n sum += values[i][series.yName];\n }\n }\n }\n else {\n for (var i = (first + 1); i < last; i++) {\n if (!isNullOrUndefined(values[i][series.yName])) {\n sum += values[i][series.yName];\n }\n }\n }\n return sum;\n}\n/** @private */\nexport function subtractThickness(rect, thickness) {\n rect.x += thickness.left;\n rect.y += thickness.top;\n rect.width -= thickness.left + thickness.right;\n rect.height -= thickness.top + thickness.bottom;\n return rect;\n}\n/** @private */\nexport function subtractRect(rect, thickness) {\n rect.x += thickness.x;\n rect.y += thickness.y;\n rect.width -= thickness.x + thickness.width;\n rect.height -= thickness.y + thickness.height;\n return rect;\n}\n/** @private */\nexport function degreeToLocation(degree, radius, center) {\n var radian = (degree * Math.PI) / 180;\n return new ChartLocation(Math.cos(radian) * radius + center.x, Math.sin(radian) * radius + center.y);\n}\n/** @private */\nexport function degreeToRadian(degree) {\n return degree * (Math.PI / 180);\n}\n/** @private */\nexport function getRotatedRectangleCoordinates(actualPoints, centerX, centerY, angle) {\n var coordinatesAfterRotation = [];\n for (var i = 0; i < 4; i++) {\n var point = actualPoints[i];\n // translate point to origin\n var tempX = point.x - centerX;\n var tempY = point.y - centerY;\n // now apply rotation\n var rotatedX = tempX * Math.cos(degreeToRadian(angle)) - tempY * Math.sin(degreeToRadian(angle));\n var rotatedY = tempX * Math.sin(degreeToRadian(angle)) + tempY * Math.cos(degreeToRadian(angle));\n // translate back\n point.x = rotatedX + centerX;\n point.y = rotatedY + centerY;\n coordinatesAfterRotation.push(new ChartLocation(point.x, point.y));\n }\n return coordinatesAfterRotation;\n}\n/**\n * Helper function to determine whether there is an intersection between the two polygons described\n * by the lists of vertices. Uses the Separating Axis Theorem\n *\n * @param a an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @param b an array of connected points [{x:, y:}, {x:, y:},...] that form a closed polygon\n * @return true if there is any intersection between the 2 polygons, false otherwise\n */\nexport function isRotatedRectIntersect(a, b) {\n var polygons = [a, b];\n var minA;\n var maxA;\n var projected;\n var i;\n var i1;\n var j;\n var minB;\n var maxB;\n for (i = 0; i < polygons.length; i++) {\n // for each polygon, look at each edge of the polygon, and determine if it separates\n // the two shapes\n var polygon = polygons[i];\n for (i1 = 0; i1 < polygon.length; i1++) {\n // grab 2 vertices to create an edge\n var i2 = (i1 + 1) % polygon.length;\n var p1 = polygon[i1];\n var p2 = polygon[i2];\n // find the line perpendicular to this edge\n var normal = new ChartLocation(p2.y - p1.y, p1.x - p2.x);\n minA = maxA = undefined;\n // for each vertex in the first shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n for (j = 0; j < a.length; j++) {\n projected = normal.x * a[j].x + normal.y * a[j].y;\n if (isNullOrUndefined(minA) || projected < minA) {\n minA = projected;\n }\n if (isNullOrUndefined(maxA) || projected > maxA) {\n maxA = projected;\n }\n }\n // for each vertex in the second shape, project it onto the line perpendicular to the edge\n // and keep track of the min and max of these values\n minB = maxB = undefined;\n for (j = 0; j < b.length; j++) {\n projected = normal.x * b[j].x + normal.y * b[j].y;\n if (isNullOrUndefined(minB) || projected < minB) {\n minB = projected;\n }\n if (isNullOrUndefined(maxB) || projected > maxB) {\n maxB = projected;\n }\n }\n // if there is no overlap between the projects, the edge we are looking at separates the two\n // polygons, and we know there is no overlap\n if (maxA < minB || maxB < minA) {\n return false;\n }\n }\n }\n return true;\n}\nfunction getAccumulationLegend(locX, locY, r, height, width, mode) {\n var cartesianlarge = degreeToLocation(270, r, new ChartLocation(locX, locY));\n var cartesiansmall = degreeToLocation(270, r, new ChartLocation(locX + (width / 10), locY));\n return 'M' + ' ' + locX + ' ' + locY + ' ' + 'L' + ' ' + (locX + r) + ' ' + (locY) + ' ' + 'A' + ' ' + (r) + ' ' + (r) +\n ' ' + 0 + ' ' + 1 + ' ' + 1 + ' ' + cartesianlarge.x + ' ' + cartesianlarge.y + ' ' + 'Z' + ' ' + 'M' + ' ' + (locX +\n (width / 10)) + ' ' + (locY - (height / 10)) + ' ' + 'L' + (locX + (r)) + ' ' + (locY - height / 10) + ' ' + 'A' + ' '\n + (r) + ' ' + (r) + ' ' + 0 + ' ' + 0 + ' ' + 0 + ' ' + cartesiansmall.x + ' ' + cartesiansmall.y + ' ' + 'Z';\n}\n/** @private */\nexport function getAngle(center, point) {\n var angle = Math.atan2((point.y - center.y), (point.x - center.x));\n angle = angle < 0 ? (6.283 + angle) : angle;\n return angle * (180 / Math.PI);\n}\n/** @private */\nexport function subArray(values, index) {\n var subArray = [];\n for (var i = 0; i <= index - 1; i++) {\n subArray.push(values[i]);\n }\n return subArray;\n}\n/** @private */\nexport function valueToCoefficient(value, axis) {\n var range = axis.visibleRange;\n var result = (value - range.min) / (range.delta);\n return axis.isInversed ? (1 - result) : result;\n}\n/** @private */\nexport function TransformToVisible(x, y, xAxis, yAxis, isInverted, series) {\n x = (xAxis.valueType === 'Logarithmic' ? logBase(x > 1 ? x : 1, xAxis.logBase) : x);\n y = (yAxis.valueType === 'Logarithmic' ?\n logBase(y > 1 ? y : 1, yAxis.logBase) : y);\n x += xAxis.valueType === 'Category' && xAxis.labelPlacement === 'BetweenTicks' && series.type !== 'Radar' ? 0.5 : 0;\n var radius = series.chart.radius * valueToCoefficient(y, yAxis);\n var point = CoefficientToVector(valueToPolarCoefficient(x, xAxis), series.chart.primaryXAxis.startAngle);\n return {\n x: (series.clipRect.width / 2 + series.clipRect.x) + radius * point.x,\n y: (series.clipRect.height / 2 + series.clipRect.y) + radius * point.y\n };\n}\n/**\n * method to find series, point index by element id\n * @private\n */\nexport function indexFinder(id, isPoint) {\n if (isPoint === void 0) { isPoint = false; }\n var ids = ['NaN', 'NaN'];\n if (id.indexOf('_Point_') > -1) {\n ids = id.split('_Series_')[1].split('_Point_');\n }\n else if (id.indexOf('_shape_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_shape_');\n ids[0] = '0';\n }\n else if (id.indexOf('_text_') > -1 && (!isPoint || (isPoint && id.indexOf('_legend_') === -1))) {\n ids = id.split('_text_');\n ids[0] = '0';\n }\n return new Index(parseInt(ids[0], 10), parseInt(ids[1], 10));\n}\n/** @private */\nexport function CoefficientToVector(coefficient, startAngle) {\n startAngle = startAngle < 0 ? startAngle + 360 : startAngle;\n var angle = Math.PI * (1.5 - 2 * coefficient);\n angle = angle + (startAngle * Math.PI) / 180;\n return { x: Math.cos(angle), y: Math.sin(angle) };\n}\n/** @private */\nexport function valueToPolarCoefficient(value, axis) {\n var range = axis.visibleRange;\n var delta;\n var length;\n if (axis.valueType !== 'Category') {\n delta = (range.max - (axis.valueType === 'DateTime' ? axis.dateTimeInterval : range.interval)) - range.min;\n length = axis.visibleLabels.length - 1;\n delta = delta === 0 ? 1 : delta;\n }\n else {\n // To split an interval equally based on visible labels count\n delta = axis.visibleLabels.length === 1 ? 1 :\n (axis.visibleLabels[axis.visibleLabels.length - 1].value - axis.visibleLabels[0].value);\n length = axis.visibleLabels.length;\n }\n return axis.isInversed ? ((value - range.min) / delta) * (1 - 1 / (length)) :\n 1 - ((value - range.min) / delta) * (1 - 1 / (length));\n}\n/** @private */\nvar Mean = /** @class */ (function () {\n function Mean(verticalStandardMean, verticalSquareRoot, horizontalStandardMean, horizontalSquareRoot, verticalMean, horizontalMean) {\n this.verticalStandardMean = verticalStandardMean;\n this.horizontalStandardMean = horizontalStandardMean;\n this.verticalSquareRoot = verticalSquareRoot;\n this.horizontalSquareRoot = horizontalSquareRoot;\n this.verticalMean = verticalMean;\n this.horizontalMean = horizontalMean;\n }\n return Mean;\n}());\nexport { Mean };\n/** @private */\nvar PolarArc = /** @class */ (function () {\n function PolarArc(startAngle, endAngle, innerRadius, radius, currentXPosition) {\n this.startAngle = startAngle;\n this.endAngle = endAngle;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.currentXPosition = currentXPosition;\n }\n return PolarArc;\n}());\nexport { PolarArc };\n/** @private */\nexport function createTooltip(id, text, top, left, fontSize) {\n var tooltip = getElement(id);\n var style = 'top:' + top.toString() + 'px;' +\n 'left:' + left.toString() + 'px;' +\n 'color:black !important; ' +\n 'background:#FFFFFF !important; ' +\n 'position:absolute;border:1px solid #707070;font-size:' + fontSize + ';border-radius:2px; z-index:1';\n if (!tooltip) {\n tooltip = createElement('div', {\n id: id, innerHTML: ' ' + text + ' ', styles: style\n });\n document.body.appendChild(tooltip);\n }\n else {\n tooltip.setAttribute('innerHTML', ' ' + text + ' ');\n tooltip.setAttribute('styles', style);\n }\n}\n/** @private */\nexport function createZoomingLabels(chart, axis, parent, index, isVertical, rect) {\n var margin = 5;\n var opposedPosition = axis.opposedPosition;\n var anchor = isVertical ? 'start' : 'auto';\n var size;\n var chartRect = chart.availableSize.width;\n var x;\n var y;\n var rx = 3;\n var arrowLocation;\n var direction;\n var scrollBarHeight = axis.scrollbarSettings.enable || (axis.zoomingScrollBar && axis.zoomingScrollBar.svgObject)\n ? axis.scrollBarHeight : 0;\n for (var i = 0; i < 2; i++) {\n size = measureText(i ? axis.endLabel : axis.startLabel, axis.labelStyle);\n if (isVertical) {\n arrowLocation = i ? new ChartLocation(rect.x - scrollBarHeight, rect.y + rx) :\n new ChartLocation(axis.rect.x - scrollBarHeight, (rect.y + rect.height - rx));\n x = (rect.x + (opposedPosition ? (rect.width + margin + scrollBarHeight) : -(size.width + margin + margin + scrollBarHeight)));\n y = (rect.y + (i ? 0 : rect.height - size.height - margin));\n x += (x < 0 || ((chartRect) < (x + size.width + margin))) ? (opposedPosition ? -(size.width / 2) : size.width / 2) : 0;\n direction = findDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, false, false, !opposedPosition, arrowLocation.x, arrowLocation.y + (i ? -rx : rx));\n }\n else {\n arrowLocation = i ? new ChartLocation((rect.x + rect.width - rx), (rect.y + rect.height + scrollBarHeight)) :\n new ChartLocation(rect.x + rx, (rect.y + rect.height + scrollBarHeight));\n x = (rect.x + (i ? (rect.width - size.width - margin) : 0));\n y = (opposedPosition ? (rect.y - size.height - 10 - scrollBarHeight) : (rect.y + rect.height + margin + scrollBarHeight));\n direction = findDirection(rx, rx, new Rect(x, y, size.width + margin, size.height + margin), arrowLocation, margin, opposedPosition, !opposedPosition, false, arrowLocation.x + (i ? rx : -rx), arrowLocation.y);\n }\n x = x + (margin / 2);\n y = y + (3 * (size.height / 4)) + (margin / 2);\n parent.appendChild(chart.renderer.drawPath(new PathOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_Shape_' + i, chart.themeStyle.crosshairFill, 2, chart.themeStyle.crosshairFill, 1, null, direction)));\n textElement(chart.renderer, new TextOption(chart.element.id + '_Zoom_' + index + '_AxisLabel_' + i, x, y, anchor, i ? axis.endLabel : axis.startLabel), { color: chart.themeStyle.crosshairLabel, fontFamily: 'Segoe UI', fontWeight: 'Regular', size: '11px' }, chart.themeStyle.crosshairLabel, parent);\n }\n return parent;\n}\n//Within bounds\n/** @private */\nexport function withInBounds(x, y, bounds, width, height) {\n if (width === void 0) { width = 0; }\n if (height === void 0) { height = 0; }\n return (x >= bounds.x - width && x <= bounds.x + bounds.width + width && y >= bounds.y - height\n && y <= bounds.y + bounds.height + height);\n}\n/** @private */\nexport function getValueXByPoint(value, size, axis) {\n var actualValue = !axis.isInversed ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function getValueYByPoint(value, size, axis) {\n var actualValue = axis.isInversed ? value / size : (1 - (value / size));\n return actualValue * (axis.visibleRange.delta) + axis.visibleRange.min;\n}\n/** @private */\nexport function findClipRect(series) {\n var rect = series.clipRect;\n if (series.chart.requireInvertedAxis) {\n rect.x = series.yAxis.rect.x;\n rect.y = series.xAxis.rect.y;\n rect.width = series.yAxis.rect.width;\n rect.height = series.xAxis.rect.height;\n }\n else {\n rect.x = series.xAxis.rect.x;\n rect.y = series.yAxis.rect.y;\n rect.width = series.xAxis.rect.width;\n rect.height = series.yAxis.rect.height;\n }\n}\n/** @private */\nexport function firstToLowerCase(str) {\n return str.substr(0, 1).toLowerCase() + str.substr(1);\n}\n/** @private */\nexport function getTransform(xAxis, yAxis, invertedAxis) {\n var x;\n var y;\n var width;\n var height;\n if (invertedAxis) {\n x = yAxis.rect.x;\n y = xAxis.rect.y;\n width = yAxis.rect.width;\n height = xAxis.rect.height;\n }\n else {\n x = xAxis.rect.x;\n y = yAxis.rect.y;\n width = xAxis.rect.width;\n height = yAxis.rect.height;\n }\n return new Rect(x, y, width, height);\n}\n/** @private */\nexport function getMinPointsDelta(axis, seriesCollection) {\n var minDelta = Number.MAX_VALUE;\n var xValues;\n var minVal;\n var seriesMin;\n for (var index = 0; index < seriesCollection.length; index++) {\n var series = seriesCollection[index];\n xValues = [];\n if (series.visible &&\n (axis.name === series.xAxisName || (axis.name === 'primaryXAxis' && series.xAxisName === null)\n || (axis.name === series.chart.primaryXAxis.name && !series.xAxisName))) {\n xValues = series.points.map(function (point, index) {\n return point.xValue;\n });\n xValues.sort(function (first, second) { return first - second; });\n if (xValues.length === 1) {\n seriesMin = (axis.valueType === 'DateTime' && series.xMin === series.xMax) ? (series.xMin - 2592000000) : series.xMin;\n minVal = xValues[0] - (!isNullOrUndefined(seriesMin) ?\n seriesMin : axis.visibleRange.min);\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n else {\n for (var index_1 = 0; index_1 < xValues.length; index_1++) {\n var value = xValues[index_1];\n if (index_1 > 0 && value) {\n minVal = value - xValues[index_1 - 1];\n if (minVal !== 0) {\n minDelta = Math.min(minDelta, minVal);\n }\n }\n }\n }\n }\n }\n if (minDelta === Number.MAX_VALUE) {\n minDelta = 1;\n }\n return minDelta;\n}\n/** @private */\nexport function getAnimationFunction(effect) {\n var functionName;\n switch (effect) {\n case 'Linear':\n functionName = linear;\n break;\n }\n return functionName;\n}\n/**\n * Animation Effect Calculation Started Here\n * @param currentTime\n * @param startValue\n * @param endValue\n * @param duration\n * @private\n */\nexport function linear(currentTime, startValue, endValue, duration) {\n return -endValue * Math.cos(currentTime / duration * (Math.PI / 2)) + endValue + startValue;\n}\n/**\n * Animation Effect Calculation End\n * @private\n */\nexport function markerAnimate(element, delay, duration, series, pointIndex, point, isLabel) {\n var centerX = point.x;\n var centerY = point.y;\n var height = 0;\n element.style.visibility = 'hidden';\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n progress: function (args) {\n if (args.timeStamp > args.delay) {\n args.element.style.visibility = 'visible';\n height = ((args.timeStamp - args.delay) / args.duration);\n element.setAttribute('transform', 'translate(' + centerX\n + ' ' + centerY + ') scale(' + height + ') translate(' + (-centerX) + ' ' + (-centerY) + ')');\n }\n },\n end: function (model) {\n element.style.visibility = '';\n if ((series.type === 'Scatter' || series.type === 'Bubble') && !isLabel && (pointIndex === series.points.length - 1)) {\n series.chart.trigger('animationComplete', { series: series.chart.isBlazor ? {} : series });\n }\n }\n });\n}\n/**\n * Animate the rect element\n */\nexport function animateRectElement(element, delay, duration, currentRect, previousRect) {\n var setStyle = function (rect) {\n element.setAttribute('x', rect.x + '');\n element.setAttribute('y', rect.y + '');\n element.setAttribute('width', rect.width + '');\n element.setAttribute('height', rect.height + '');\n };\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: delay,\n name: name,\n progress: function (args) {\n setStyle(new Rect(linear(args.timeStamp, previousRect.x, currentRect.x - previousRect.x, args.duration), linear(args.timeStamp, previousRect.y, currentRect.y - previousRect.y, args.duration), linear(args.timeStamp, previousRect.width, currentRect.width - previousRect.width, args.duration), linear(args.timeStamp, previousRect.height, currentRect.height - previousRect.height, args.duration)));\n },\n end: function () {\n setStyle(currentRect);\n },\n });\n}\n/**\n * Animation after legend click a path\n * @param element element to be animated\n * @param direction current direction of the path\n * @param previousDirection previous direction of the path\n */\nexport function pathAnimation(element, direction, redraw, previousDirection, animateDuration) {\n if (!redraw || (!previousDirection && !element)) {\n return null;\n }\n var duration = 300;\n if (animateDuration) {\n duration = animateDuration;\n }\n var startDirections = previousDirection || element.getAttribute('d');\n var splitDirections = startDirections.split(/(?=[LMCZAQ])/);\n var endDirections = direction.split(/(?=[LMCZAQ])/);\n var currentDireciton;\n var startPath = [];\n var endPath = [];\n var c;\n var end;\n element.setAttribute('d', startDirections);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n currentDireciton = '';\n splitDirections.map(function (directions, index) {\n startPath = directions.split(' ');\n endPath = endDirections[index] ? endDirections[index].split(' ') : startPath;\n if (startPath[0] === 'Z') {\n currentDireciton += 'Z' + ' ';\n }\n else {\n currentDireciton += startPath[0] + ' ' +\n linear(args.timeStamp, +startPath[1], (+endPath[1] - +startPath[1]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[2], (+endPath[2] - +startPath[2]), args.duration) + ' ';\n }\n if (startPath[0] === 'C' || startPath[0] === 'Q') {\n c = 3;\n end = startPath[0] === 'Q' ? 4 : 6;\n while (c < end) {\n currentDireciton += linear(args.timeStamp, +startPath[c], (+endPath[c] - +startPath[c]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[++c], (+endPath[c] - +startPath[c]), args.duration) + ' ';\n ++c;\n }\n }\n if (startPath[0] === 'A') {\n currentDireciton += 0 + ' ' + 0 + ' ' + 1 + ' ' +\n linear(args.timeStamp, +startPath[6], (+endPath[6] - +startPath[6]), args.duration) + ' ' +\n linear(args.timeStamp, +startPath[7], (+endPath[7] - +startPath[7]), args.duration) + ' ';\n }\n });\n element.setAttribute('d', currentDireciton);\n },\n end: function () {\n element.setAttribute('d', direction);\n }\n });\n}\n/**\n * To append the clip rect element\n * @param redraw\n * @param options\n * @param renderer\n * @param clipPath\n */\nexport function appendClipElement(redraw, options, renderer, clipPath) {\n if (clipPath === void 0) { clipPath = 'drawClipPath'; }\n var clipElement = redrawElement(redraw, options.id, options, renderer);\n if (clipElement) {\n var def = renderer.createDefs();\n def.appendChild(clipElement);\n return def;\n }\n else {\n return renderer[clipPath](options);\n }\n}\n/**\n * Triggers the event.\n * @return {void}\n * @private\n */\nexport function triggerLabelRender(chart, tempInterval, text, labelStyle, axis) {\n var argsData;\n argsData = {\n cancel: false, name: axisLabelRender, axis: axis,\n text: text, value: tempInterval, labelStyle: labelStyle\n };\n chart.trigger(axisLabelRender, argsData);\n if (!argsData.cancel) {\n var isLineBreakLabels = argsData.text.indexOf('
') !== -1;\n var text_1 = (axis.enableTrim) ? (isLineBreakLabels ?\n lineBreakLabelTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle) :\n textTrim(axis.maximumLabelWidth, argsData.text, axis.labelStyle)) : argsData.text;\n axis.visibleLabels.push(new VisibleLabels(text_1, argsData.value, argsData.labelStyle, argsData.text));\n }\n}\n/**\n * The function used to find whether the range is set.\n * @return {boolean}\n * @private\n */\nexport function setRange(axis) {\n return (axis.minimum != null && axis.maximum != null);\n}\n/**\n * To check whether the axis is zoomed or not.\n * @param axis\n */\nexport function isZoomSet(axis) {\n return (axis.zoomFactor < 1 && axis.zoomPosition >= 0);\n}\n/**\n * Calculate desired interval for the axis.\n * @return {void}\n * @private\n */\nexport function getActualDesiredIntervalsCount(availableSize, axis) {\n var size = axis.orientation === 'Horizontal' ? availableSize.width : availableSize.height;\n if (isNullOrUndefined(axis.desiredIntervals)) {\n var desiredIntervalsCount = (axis.orientation === 'Horizontal' ? 0.533 : 1) * axis.maximumLabels;\n desiredIntervalsCount = Math.max((size * (desiredIntervalsCount / 100)), 1);\n return desiredIntervalsCount;\n }\n else {\n return axis.desiredIntervals;\n }\n}\n/**\n * Animation for template\n * @private\n */\nexport function templateAnimate(element, delay, duration, name, isRemove) {\n new Animation({}).animate(element, {\n duration: duration,\n delay: delay,\n name: name,\n progress: function (args) {\n args.element.style.visibility = 'visible';\n },\n end: function (args) {\n if (isRemove) {\n remove(args.element);\n }\n else {\n args.element.style.visibility = 'visible';\n }\n },\n });\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label, renderer, clipRect, isChartControl, control) {\n var chartRenderer = renderer ? renderer : new SvgRenderer('');\n var shapeOption = calculateShapes(location, size, shape, options, url, isChartControl, control);\n var drawElement = chartRenderer['draw' + shapeOption.functionName](shapeOption.renderOption, clipRect ? new Int32Array([clipRect.x, clipRect.y]) : null);\n //drawElement.setAttribute('aria-label', label);\n return drawElement;\n}\n/** @private */\n// tslint:disable-next-line:max-func-body-length\nexport function calculateShapes(location, size, shape, options, url, isChart, control) {\n var dir;\n var functionName = 'Path';\n var isBulletChart = isChart;\n var width = (isBulletChart && shape === 'Circle') ? (size.width - 2) : size.width;\n var height = (isBulletChart && shape === 'Circle') ? (size.height - 2) : size.height;\n var sizeBullet = (isBulletChart) ? control.targetWidth : 0;\n var lx = location.x;\n var ly = location.y;\n var y = location.y + (-height / 2);\n var x = location.x + (-width / 2);\n switch (shape) {\n case 'Bubble':\n case 'Circle':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': lx, 'cy': ly });\n break;\n case 'Cross':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' +\n (ly + (-height / 2));\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'Multiply':\n dir = 'M ' + (lx - sizeBullet) + ' ' + (ly - sizeBullet) + ' L ' +\n (lx + sizeBullet) + ' ' + (ly + sizeBullet) + ' M ' +\n (lx - sizeBullet) + ' ' + (ly + sizeBullet) + ' L ' + (lx + sizeBullet) + ' ' + (ly - sizeBullet);\n merge(options, { 'd': dir, stroke: options.fill });\n break;\n case 'HorizontalLine':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + ly;\n merge(options, { 'd': dir });\n break;\n case 'VerticalLine':\n dir = 'M' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + lx + ' ' + (ly + (-height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Diamond':\n dir = 'M' + ' ' + x + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + ly + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + ly + ' z';\n merge(options, { 'd': dir });\n break;\n case 'ActualRect':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (-height / 8)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet)) + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 8)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 8)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'TargetRect':\n dir = 'M' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (sizeBullet / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (x + (sizeBullet)) + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Rectangle':\n case 'Hilo':\n case 'HiloOpenClose':\n case 'Candle':\n case 'Waterfall':\n case 'BoxAndWhisker':\n case 'StepArea':\n case 'StackingStepArea':\n case 'Square':\n case 'Flag':\n dir = 'M' + ' ' + x + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (-height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pyramid':\n case 'Triangle':\n dir = 'M' + ' ' + x + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (-height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (ly + (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Funnel':\n case 'InvertedTriangle':\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + lx + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' z';\n merge(options, { 'd': dir });\n break;\n case 'Pentagon':\n var eq = 72;\n var xVal = void 0;\n var yVal = void 0;\n for (var i = 0; i <= 5; i++) {\n xVal = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yVal = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n dir = 'M' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ';\n }\n else {\n dir = dir.concat('L' + ' ' + (lx + xVal) + ' ' + (ly + yVal) + ' ');\n }\n }\n dir = dir.concat('Z');\n merge(options, { 'd': dir });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n options = calculateLegendShapes(location, new Size(width, height), shape, options).renderOption;\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nexport function getRectLocation(startLocation, endLocation, outerRect) {\n var x;\n var y;\n x = (endLocation.x < outerRect.x) ? outerRect.x :\n (endLocation.x > (outerRect.x + outerRect.width)) ? outerRect.x + outerRect.width : endLocation.x;\n y = (endLocation.y < outerRect.y) ? outerRect.y :\n (endLocation.y > (outerRect.y + outerRect.height)) ? outerRect.y + outerRect.height : endLocation.y;\n return new Rect((x > startLocation.x ? startLocation.x : x), (y > startLocation.y ? startLocation.y : y), Math.abs(x - startLocation.x), Math.abs(y - startLocation.y));\n}\n/** @private */\nexport function minMax(value, min, max) {\n return value > max ? max : (value < min ? min : value);\n}\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function getTemplateFunction(template) {\n var templateFn = null;\n var e;\n try {\n if (document.querySelectorAll(template).length) {\n templateFn = templateComplier(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n templateFn = templateComplier(template);\n }\n return templateFn;\n}\n/** @private */\nexport function accReactTemplate(childElement, chart, isTemplate, points, argsData, point, datalabelGroup, id, dataLabel, redraw) {\n var clientRect = childElement.getBoundingClientRect();\n chart.accumulationDataLabelModule.calculateLabelSize(isTemplate, childElement, point, points, argsData, datalabelGroup, id, dataLabel, redraw, clientRect, true);\n}\n/** @private */\nexport function chartReactTemplate(childElement, chart, point, series, labelIndex, redraw) {\n var parentElement = document.getElementById(chart.element.id + '_Series_' + (series.index === undefined ? series.category : series.index) + '_DataLabelCollections');\n if (parentElement) {\n chart.dataLabelModule.calculateTemplateLabelSize(parentElement, childElement, point, series, series.marker.dataLabel, labelIndex, series.clipRect, redraw, true);\n }\n}\n/** @private */\nexport function createTemplate(childElement, pointIndex, content, chart, point, series, dataLabelId, labelIndex, argsData, isTemplate, points, datalabelGroup, id, dataLabel, redraw) {\n var templateFn;\n var templateElement;\n templateFn = getTemplateFunction(content);\n try {\n var blazor = 'Blazor';\n var tempObject = window[blazor] ? (dataLabelId ? point : { point: point }) : { chart: chart, series: series, point: point };\n var templateId = dataLabelId ? dataLabelId + '_template' : 'template';\n var elementData = templateFn ? templateFn(tempObject, chart, templateId, dataLabelId ||\n childElement.id.replace(/[^a-zA-Z0-9]/g, '')) : [];\n if (elementData.length) {\n templateElement = Array.prototype.slice.call(elementData);\n var len = templateElement.length;\n for (var i = 0; i < len; i++) {\n childElement.appendChild(templateElement[i]);\n }\n }\n var reactCallback = void 0;\n if (chart.getModuleName() === 'accumulationchart') {\n reactCallback = accReactTemplate.bind(this, childElement, chart, isTemplate, points, argsData, points[pointIndex], datalabelGroup, id, dataLabel, redraw);\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n else if (chart.getModuleName() === 'chart') {\n reactCallback = chartReactTemplate.bind(this, childElement, chart, point, series, labelIndex, redraw);\n // tslint:disable-next-line:no-any\n if (chart.isReact) {\n chart.renderReactTemplates(reactCallback);\n }\n }\n }\n catch (e) {\n return childElement;\n }\n return childElement;\n}\n/** @private */\nexport function getFontStyle(font) {\n var style = '';\n style = 'font-size:' + font.size +\n '; font-style:' + font.fontStyle + '; font-weight:' + font.fontWeight +\n '; font-family:' + font.fontFamily + ';opacity:' + font.opacity +\n '; color:' + font.color + ';';\n return style;\n}\n/** @private */\nexport function measureElementRect(element, redraw) {\n if (redraw === void 0) { redraw = false; }\n var bounds;\n document.body.appendChild(element);\n bounds = element.getBoundingClientRect();\n if (redraw) {\n remove(element);\n }\n else {\n removeElement(element.id);\n }\n return bounds;\n}\n/** @private */\nexport function findlElement(elements, id) {\n var element;\n for (var i = 0, length_1 = elements.length; i < length_1; i++) {\n if (elements[i].id.indexOf(id) > -1) {\n element = elements[i];\n continue;\n }\n }\n return element;\n}\n/** @private */\nexport function getPoint(x, y, xAxis, yAxis, isInverted, series) {\n x = ((xAxis.valueType === 'Logarithmic') ? logBase(((x > 0) ? x : 1), xAxis.logBase) : x);\n y = ((yAxis.valueType === 'Logarithmic') ? logBase(((y > 0) ? y : 1), yAxis.logBase) : y);\n x = valueToCoefficient(x, xAxis);\n y = valueToCoefficient(y, yAxis);\n var xLength = (isInverted ? xAxis.rect.height : xAxis.rect.width);\n var yLength = (isInverted ? yAxis.rect.width : yAxis.rect.height);\n var locationX = isInverted ? y * (yLength) : x * (xLength);\n var locationY = isInverted ? (1 - x) * (xLength) : (1 - y) * (yLength);\n return new ChartLocation(locationX, locationY);\n}\n/** @private */\nexport function appendElement(child, parent, redraw, animate, x, y) {\n if (redraw === void 0) { redraw = false; }\n if (animate === void 0) { animate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (child && child.hasChildNodes() && parent) {\n appendChildElement(false, parent, child, redraw, animate, x, y);\n }\n else {\n return null;\n }\n}\n/**\n * Method to append child element\n * @param parent\n * @param childElement\n * @param isReplace\n */\nexport function appendChildElement(isCanvas, parent, childElement, redraw, isAnimate, x, y, start, direction, forceAnimate, isRect, previousRect, animateDuration) {\n if (isAnimate === void 0) { isAnimate = false; }\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n if (isRect === void 0) { isRect = false; }\n if (previousRect === void 0) { previousRect = null; }\n if (isCanvas) {\n return null;\n }\n var existChild = parent.querySelector('#' + childElement.id);\n var element = (existChild || getElement(childElement.id));\n var child = childElement;\n var duration = animateDuration ? animateDuration : 300;\n if (redraw && isAnimate && element) {\n start = start || (element.tagName === 'DIV' ?\n new ChartLocation(+(element.style[x].split('px')[0]), +(element.style[y].split('px')[0])) :\n new ChartLocation(+element.getAttribute(x), +element.getAttribute(y)));\n if (direction && direction !== 'undefined') {\n pathAnimation(childElement, childElement.getAttribute('d'), redraw, direction, duration);\n }\n else if (isRect && previousRect) {\n animateRectElement(child, 0, duration, new Rect(+element.getAttribute('x'), +element.getAttribute('y'), +element.getAttribute('width'), +element.getAttribute('height')), previousRect);\n }\n else {\n var end = child.tagName === 'DIV' ?\n new ChartLocation(+(child.style[x].split('px')[0]), +(child.style[y].split('px')[0])) :\n new ChartLocation(+child.getAttribute(x), +child.getAttribute(y));\n animateRedrawElement(child, duration, start, end, x, y);\n }\n }\n else if (redraw && isAnimate && !element && forceAnimate) {\n templateAnimate(child, 0, 600, 'FadeIn');\n }\n if (existChild) {\n parent.replaceChild(child, element);\n }\n else {\n parent.appendChild(child);\n }\n}\n/** @private */\nexport function getDraggedRectLocation(x1, y1, x2, y2, outerRect) {\n var width = Math.abs(x1 - x2);\n var height = Math.abs(y1 - y2);\n var x = Math.max(checkBounds(Math.min(x1, x2), width, outerRect.x, outerRect.width), outerRect.x);\n var y = Math.max(checkBounds(Math.min(y1, y2), height, outerRect.y, outerRect.height), outerRect.y);\n return new Rect(x, y, Math.min(width, outerRect.width), Math.min(height, outerRect.height));\n}\n/** @private */\nexport function checkBounds(start, size, min, max) {\n if (start < min) {\n start = min;\n }\n else if ((start + size) > (max + min)) {\n start = (max + min) - size;\n }\n return start;\n}\n/** @private */\nexport function getLabelText(currentPoint, series, chart) {\n var labelFormat = series.yAxis.labelFormat;\n var text = [];\n var customLabelFormat = labelFormat.match('{value}') !== null;\n switch (series.seriesType) {\n case 'XY':\n /**\n * I255790\n * For Polar radar series, the dataLabel appears out of range when axis range is given for yaxis\n * Cause: Since symbol location for the points which did not lies in within range, lies outside of seriesRect.\n * Fix: DataLabel rendered after checking WithIn for the points\n */\n if (series.chart.chartAreaType === 'PolarRadar') {\n if (series.drawType.indexOf('Stacking') !== -1) {\n if ((series.yAxis.valueType === 'Logarithmic' &&\n logWithIn(series.stackedValues.endValues[currentPoint.index], series.yAxis)) ||\n withIn(series.stackedValues.endValues[currentPoint.index], series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n else {\n if ((series.yAxis.valueType === 'Logarithmic' && logWithIn(currentPoint.yValue, series.yAxis)) ||\n withIn(currentPoint.yValue, series.yAxis.visibleRange)) {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n }\n }\n else {\n text.push(currentPoint.text || currentPoint.yValue.toString());\n }\n break;\n case 'HighLow':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n break;\n case 'HighLowOpenClose':\n text.push(currentPoint.text || Math.max(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.min(currentPoint.high, currentPoint.low).toString());\n text.push(currentPoint.text || Math.max(currentPoint.open, currentPoint.close).toString());\n text.push(currentPoint.text || Math.min(currentPoint.open, currentPoint.close).toString());\n break;\n case 'BoxPlot':\n text.push(currentPoint.text || currentPoint.median.toString());\n text.push(currentPoint.text || currentPoint.maximum.toString());\n text.push(currentPoint.text || currentPoint.minimum.toString());\n text.push(currentPoint.text || currentPoint.upperQuartile.toString());\n text.push(currentPoint.text || currentPoint.lowerQuartile.toString());\n for (var _i = 0, _a = currentPoint.outliers; _i < _a.length; _i++) {\n var liers = _a[_i];\n text.push(currentPoint.text || liers.toString());\n }\n break;\n }\n if (labelFormat && !currentPoint.text) {\n series.yAxis.format = chart.intl.getNumberFormat({\n format: customLabelFormat ? '' : labelFormat,\n useGrouping: chart.useGroupingSeparator\n });\n for (var i = 0; i < text.length; i++) {\n text[i] = customLabelFormat ? labelFormat.replace('{value}', series.yAxis.format(parseFloat(text[i]))) :\n series.yAxis.format(parseFloat(text[i]));\n }\n }\n return text;\n}\n/** @private */\nexport function stopTimer(timer) {\n window.clearInterval(timer);\n}\n/** @private */\nexport function isCollide(rect, collections, clipRect) {\n var isCollide;\n var currentRect = new Rect(rect.x + clipRect.x, rect.y + clipRect.y, rect.width, rect.height);\n isCollide = collections.some(function (rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n });\n return isCollide;\n}\n/** @private */\nexport function isOverlap(currentRect, rect) {\n return (currentRect.x < rect.x + rect.width && currentRect.x + currentRect.width > rect.x &&\n currentRect.y < rect.y + rect.height && currentRect.height + currentRect.y > rect.y);\n}\n/** @private */\nexport function containsRect(currentRect, rect) {\n return (currentRect.x <= rect.x && currentRect.x + currentRect.width >= rect.x + rect.width &&\n currentRect.y <= rect.y && currentRect.height + currentRect.y >= rect.y + rect.height);\n}\n/** @private */\nexport function calculateRect(location, textSize, margin) {\n return new Rect((location.x - (textSize.width / 2) - margin.left), (location.y - (textSize.height / 2) - margin.top), textSize.width + margin.left + margin.right, textSize.height + margin.top + margin.bottom);\n}\n/** @private */\nexport function convertToHexCode(value) {\n return '#' + componentToHex(value.r) + componentToHex(value.g) + componentToHex(value.b);\n}\n/** @private */\nexport function componentToHex(value) {\n var hex = value.toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n}\n/** @private */\nexport function convertHexToColor(hex) {\n var result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result ? new ColorValue(parseInt(result[1], 16), parseInt(result[2], 16), parseInt(result[3], 16)) :\n new ColorValue(255, 255, 255);\n}\n/** @private */\nexport function colorNameToHex(color) {\n var element;\n color = color === 'transparent' ? 'white' : color;\n document.body.appendChild(createElement('text', { id: 'chartmeasuretext' }));\n element = document.getElementById('chartmeasuretext');\n element.style.color = color;\n color = window.getComputedStyle(element).color;\n remove(element);\n var exp = /^(rgb|hsl)(a?)[(]\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*,\\s*([\\d.]+\\s*%?)\\s*(?:,\\s*([\\d.]+)\\s*)?[)]$/;\n var isRGBValue = exp.exec(color);\n return convertToHexCode(new ColorValue(parseInt(isRGBValue[3], 10), parseInt(isRGBValue[4], 10), parseInt(isRGBValue[5], 10)));\n}\n/** @private */\nexport function getSaturationColor(color, factor) {\n color = colorNameToHex(color);\n color = color.replace(/[^0-9a-f]/gi, '');\n if (color.length < 6) {\n color = color[0] + color[0] + color[1] + color[1] + color[2] + color[2];\n }\n factor = factor || 0;\n // convert to decimal and change luminosity\n var rgb = '#';\n var colorCode;\n for (var i = 0; i < 3; i++) {\n colorCode = parseInt(color.substr(i * 2, 2), 16);\n colorCode = Math.round(Math.min(Math.max(0, colorCode + (colorCode * factor)), 255));\n rgb += ('00' + colorCode.toString(16)).substr(colorCode.toString(16).length);\n }\n return rgb;\n}\n/** @private */\nexport function getMedian(values) {\n var half = Math.floor(values.length / 2);\n return values.length % 2 ? values[half] : ((values[half - 1] + values[half]) / 2.0);\n}\n/** @private */\n// tslint:disable-next-line:max-func-body-length\nexport function calculateLegendShapes(location, size, shape, options) {\n var padding = 10;\n var dir = '';\n var space = 2;\n var height = size.height;\n var width = size.width;\n var lx = location.x;\n var ly = location.y;\n switch (shape) {\n case 'MultiColoredLine':\n case 'Line':\n case 'StackingLine':\n case 'StackingLine100':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly);\n merge(options, { 'd': dir });\n break;\n case 'StepLine':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2) - (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx +\n (-width / 2) + (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 2) + (width / 10))\n + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10)) + ' ' + (ly) + ' ' + 'L' + ' ' + (lx + (-width / 10))\n + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' +\n ' ' + (lx + (width / 5)) + ' ' + (ly + (-height / 2)) + ' ' + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly +\n (-height / 2)) + 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + '' + (lx + (width / 2)\n + (padding / 4)) + ' ' + (ly + (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'UpArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly + (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly - (height / 2) + (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly + (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'DownArrow':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) +\n 'L' + ' ' + (lx + (width / 2) - space) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx) + ' ' + (ly + (height / 2) - (2 * space)) +\n 'L' + (lx - (width / 2) + space) + ' ' + (ly - (height / 2)) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'RightArrow':\n dir = 'M' + ' ' + (lx + (-width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (-width / 2)) + ' ' + (ly + (height / 2)) + ' L' + ' ' + (lx + (-width / 2)) + ' ' +\n (ly + (height / 2) - space) + ' ' + 'L' + ' ' + (lx + (width / 2) - (2 * space)) + ' ' + (ly) +\n ' L' + (lx + (-width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'LeftArrow':\n options.fill = options.stroke;\n options.stroke = 'transparent';\n dir = 'M' + ' ' + (lx + (width / 2)) + ' ' + (ly - (height / 2)) + ' ' +\n 'L' + ' ' + (lx + (-width / 2)) + ' ' + (ly) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' +\n (lx + (width / 2)) + ' ' + (ly + (height / 2) - space) + ' L' + ' ' + (lx + (-width / 2) + (2 * space))\n + ' ' + (ly) + ' L' + (lx + (width / 2)) + ' ' + (ly - (height / 2) + space) + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Column':\n case 'Pareto':\n case 'StackingColumn':\n case 'StackingColumn100':\n case 'RangeColumn':\n case 'Histogram':\n dir = 'M' + ' ' + (lx - 3 * (width / 5)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly - (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (-width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' ' + (lx - 3 *\n (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' +\n (lx + (-width / 10) - (width / 20)) + ' ' + (ly - (height / 4) - (padding / 2))\n + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly - (height / 4) -\n (padding / 2)) + ' ' + 'L' + ' ' + (lx + (width / 10) + (width / 20)) + ' ' + (ly\n + (height / 2)) + ' ' + 'L' + ' ' + (lx + (-width / 10) - (width / 20)) + ' ' + (ly +\n (height / 2)) + ' ' + 'Z' + ' ' + 'M' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly) + ' ' +\n 'L' + ' ' + (lx + 3 * (width / 5)) + ' ' + (ly) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 5)) + ' ' + (ly + (height / 2)) + ' ' + 'L' + ' '\n + (lx + 3 * (width / 10)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Bar':\n case 'StackingBar':\n case 'StackingBar100':\n dir = 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 5)) + ' '\n + 'L' + ' ' + (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 5)) + ' ' + 'L' + ' ' +\n (lx + 3 * (width / 10)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'L' + ' ' +\n (lx - (width / 2) + (-padding / 4)) + ' ' + (ly - 3 * (height / 10)) + ' ' + 'Z' + ' '\n + 'M' + ' ' + (lx + (-width / 2) + (-padding / 4)) + ' ' + (ly - (height / 5)\n + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4)) + ' ' + (ly\n - (height / 5) + (padding / 20)) + ' ' + 'L' + ' ' + (lx + (width / 2) + (padding / 4))\n + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'L' + ' ' + (lx - (width / 2)\n + (-padding / 4)) + ' ' + (ly + (height / 10) + (padding / 20)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + (lx - (width / 2) + (-padding / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 5)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx + (-width / 4)) + ' ' + (ly + (height / 2)\n + (padding / 10)) + ' ' + 'L' + ' ' + (lx - (width / 2) + (-padding / 4))\n + ' ' + (ly + (height / 2) + (padding / 10)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'Spline':\n options.fill = 'transparent';\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' '\n + lx + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5))\n + ' ' + 'M' + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx\n + (width / 2)) + ' ' + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2));\n merge(options, { 'd': dir });\n break;\n case 'Area':\n case 'MultiColoredArea':\n case 'RangeArea':\n case 'StackingArea':\n case 'StackingArea100':\n dir = 'M' + ' ' + (lx - (width / 2) - (padding / 4)) + ' ' + (ly + (height / 2))\n + ' ' + 'L' + ' ' + (lx + (-width / 4) + (-padding / 8)) + ' ' + (ly - (height / 2))\n + ' ' + 'L' + ' ' + (lx) + ' ' + (ly + (height / 4)) + ' ' + 'L' + ' ' + (lx\n + (width / 4) + (padding / 8)) + ' ' + (ly + (-height / 2) + (height / 4)) + ' '\n + 'L' + ' ' + (lx + (height / 2) + (padding / 4)) + ' ' + (ly + (height / 2)) + ' ' + 'Z';\n merge(options, { 'd': dir });\n break;\n case 'SplineArea':\n dir = 'M' + ' ' + (lx - (width / 2)) + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + lx\n + ' ' + (ly - height) + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Z' + ' ' + 'M'\n + ' ' + lx + ' ' + (ly + (height / 5)) + ' ' + 'Q' + ' ' + (lx + (width / 2)) + ' '\n + (ly + (height / 2)) + ' ' + (lx + (width / 2)) + ' '\n + (ly - (height / 2)) + ' ' + ' Z';\n merge(options, { 'd': dir });\n break;\n case 'Pie':\n case 'Doughnut':\n options.stroke = 'transparent';\n var r = Math.min(height, width) / 2;\n dir = getAccumulationLegend(lx, ly, r, height, width, shape);\n merge(options, { 'd': dir });\n break;\n }\n return { renderOption: options };\n}\n/** @private */\nexport function textTrim(maxWidth, text, font) {\n var label = text;\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i = textLength - 1; i >= 0; --i) {\n label = text.substring(0, i) + '...';\n size = measureText(label, font).width;\n if (size <= maxWidth) {\n return label;\n }\n }\n }\n return label;\n}\n/**\n * To trim the line break label\n * @param maxWidth\n * @param text\n * @param font\n */\nexport function lineBreakLabelTrim(maxWidth, text, font) {\n var labelCollection = [];\n var breakLabels = text.split('
');\n for (var i = 0; i < breakLabels.length; i++) {\n text = breakLabels[i];\n var size = measureText(text, font).width;\n if (size > maxWidth) {\n var textLength = text.length;\n for (var i_1 = textLength - 1; i_1 >= 0; --i_1) {\n text = text.substring(0, i_1) + '...';\n size = measureText(text, font).width;\n if (size <= maxWidth) {\n labelCollection.push(text);\n break;\n }\n }\n }\n else {\n labelCollection.push(text);\n }\n }\n return labelCollection;\n}\n/** @private */\nexport function stringToNumber(value, containerSize) {\n if (value !== null && value !== undefined) {\n return value.indexOf('%') !== -1 ? (containerSize / 100) * parseInt(value, 10) : parseInt(value, 10);\n }\n return null;\n}\n/** @private */\nexport function redrawElement(redraw, id, options, renderer) {\n if (!redraw) {\n return null;\n }\n var element = getElement(id);\n if (element && options) {\n renderer.setElementAttributes(options, element.tagName === 'clipPath' ? element.childNodes[0] : element);\n }\n return element;\n}\n/** @private */\nexport function animateRedrawElement(element, duration, start, end, x, y) {\n if (x === void 0) { x = 'x'; }\n if (y === void 0) { y = 'y'; }\n var isDiv = element.tagName === 'DIV';\n var setStyle = function (xValue, yValue) {\n if (isDiv) {\n element.style[x] = xValue + 'px';\n element.style[y] = yValue + 'px';\n }\n else {\n element.setAttribute(x, xValue + '');\n element.setAttribute(y, yValue + '');\n }\n };\n setStyle(start.x, start.y);\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n setStyle(linear(args.timeStamp, start.x, end.x - start.x, args.duration), linear(args.timeStamp, start.y, end.y - start.y, args.duration));\n },\n end: function () {\n setStyle(end.x, end.y);\n }\n });\n}\n/** @private */\nexport function textElement(renderer, option, font, color, parent, isMinus, redraw, isAnimate, forceAnimate, animateDuration, seriesClipRect, labelSize, isRotatedLabelIntersect, isCanvas) {\n if (isMinus === void 0) { isMinus = false; }\n if (forceAnimate === void 0) { forceAnimate = false; }\n var renderOptions = {};\n var htmlObject;\n var tspanElement;\n //let renderer: SvgRenderer = new SvgRenderer('');\n var text;\n var height;\n var dy;\n var label;\n renderOptions = {\n 'id': option.id,\n 'x': option.x,\n 'y': option.y,\n 'fill': color ? color : 'black',\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': option.anchor,\n 'labelRotation': option.labelRotation,\n 'transform': option.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': option.baseLine\n };\n text = typeof option.text === 'string' ? option.text : isMinus ? option.text[option.text.length - 1] : option.text[0];\n var transX = seriesClipRect ? seriesClipRect.x : 0;\n var transY = seriesClipRect ? seriesClipRect.y : 0;\n htmlObject = renderer.createText(renderOptions, text, transX, transY);\n htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.color = font.color;\n htmlObject.style.textAnchor = option.anchor;\n if (typeof option.text !== 'string' && option.text.length > 1) {\n for (var i = 1, len = option.text.length; i < len; i++) {\n height = (measureText(option.text[i], font).height);\n dy = (option.y) + ((isMinus) ? -(i * height) : (i * height));\n label = isMinus ? option.text[option.text.length - (i + 1)] : option.text[i];\n if (isCanvas) {\n tspanElement = renderer.createText(renderOptions, label, null, null, dy, true);\n }\n else {\n tspanElement = renderer.createTSpan({\n 'x': option.x, 'id': option.id,\n 'y': dy\n }, label);\n htmlObject.appendChild(tspanElement);\n }\n }\n }\n if (!isRotatedLabelIntersect) {\n appendChildElement(renderer instanceof CanvasRenderer, parent, htmlObject, redraw, isAnimate, 'x', 'y', null, null, forceAnimate, false, null, animateDuration);\n }\n return htmlObject;\n}\n/**\n * Method to calculate the width and height of the chart\n */\nexport function calculateSize(chart) {\n // fix for Chart rendered with default width in IE issue\n var containerWidth = chart.element.clientWidth || chart.element.offsetWidth;\n var containerHeight = chart.element.clientHeight;\n if (chart.stockChart) {\n containerWidth = chart.stockChart.element.clientWidth;\n }\n var height = 450;\n var marginHeight;\n if (chart.getModuleName() === 'rangeNavigator') {\n var range = chart;\n var tooltipSpace = range.tooltip.enable ? 35 : 0;\n var periodHeight = range.periodSelectorSettings.periods.length ?\n range.periodSelectorSettings.height : 0;\n marginHeight = range.margin.top + range.margin.bottom + tooltipSpace;\n var labelSize = measureText('tempString', range.labelStyle).height;\n var labelPadding = 15;\n height = (chart.series.length ? (Browser.isDevice ? 80 : 120) : ((range.enableGrouping ? (40 + labelPadding + labelSize) : 40)\n + marginHeight)) + periodHeight;\n if (range.disableRangeSelector) {\n height = periodHeight;\n }\n }\n chart.availableSize = new Size(stringToNumber(chart.width, containerWidth) || containerWidth || 600, stringToNumber(chart.height, containerHeight || height) || containerHeight || height);\n}\nexport function createSvg(chart) {\n chart.canvasRender = new CanvasRenderer(chart.element.id);\n chart.renderer = chart.enableCanvas ? chart.canvasRender : new SvgRenderer(chart.element.id);\n calculateSize(chart);\n if (chart.stockChart && chart.getModuleName() === 'chart') {\n chart.svgObject = chart.stockChart.chartObject;\n }\n else if (chart.stockChart && chart.getModuleName() === 'rangeNavigator') {\n chart.svgObject = chart.stockChart.selectorObject;\n }\n else {\n if (chart.enableCanvas) {\n chart.svgObject = chart.renderer.createCanvas({\n id: chart.element.id + '_canvas',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n else {\n chart.svgObject = chart.renderer.createSvg({\n id: chart.element.id + '_svg',\n width: chart.availableSize.width,\n height: chart.availableSize.height\n });\n }\n }\n}\n/**\n * To calculate chart title and height\n * @param title\n * @param style\n * @param width\n */\nexport function getTitle(title, style, width) {\n var titleCollection = [];\n switch (style.textOverflow) {\n case 'Wrap':\n titleCollection = textWrap(title, width, style);\n break;\n case 'Trim':\n titleCollection.push(textTrim(width, title, style));\n break;\n default:\n titleCollection.push(title);\n break;\n }\n return titleCollection;\n}\n/**\n * Method to calculate x position of title\n */\nexport function titlePositionX(rect, titleStyle) {\n var positionX;\n if (titleStyle.textAlignment === 'Near') {\n positionX = rect.x;\n }\n else if (titleStyle.textAlignment === 'Center') {\n positionX = rect.x + rect.width / 2;\n }\n else {\n positionX = rect.x + rect.width;\n }\n return positionX;\n}\n/**\n * Method to find new text and element size based on textOverflow\n */\nexport function textWrap(currentLabel, maximumWidth, font) {\n var textCollection = currentLabel.split(' ');\n var label = '';\n var labelCollection = [];\n var text;\n for (var i = 0, len = textCollection.length; i < len; i++) {\n text = textCollection[i];\n if (measureText(label.concat(text), font).width < maximumWidth) {\n label = label.concat((label === '' ? '' : ' ') + text);\n }\n else {\n if (label !== '') {\n labelCollection.push(textTrim(maximumWidth, label, font));\n label = text;\n }\n else {\n labelCollection.push(textTrim(maximumWidth, text, font));\n text = '';\n }\n }\n if (label && i === len - 1) {\n labelCollection.push(textTrim(maximumWidth, label, font));\n }\n }\n return labelCollection;\n}\n/**\n * Method to support the subscript and superscript value to text\n */\nexport function getUnicodeText(text, regexp) {\n var title = text.replace(regexp, ' ');\n var digit = text.match(regexp);\n var digitSpecific = ' ';\n var convertedText = ' ';\n var k = 0;\n var unicodeSub = {\n '0': '\\u2080', '1': '\\u2081', '2': '\\u2082', '3': '\\u2083', '4': '\\u2084',\n '5': '\\u2085', '6': '\\u2086', '7': '\\u2087', '8': '\\u2088', '9': '\\u2089'\n };\n var unicodeSup = {\n '0': '\\u2070', '1': '\\u00B9', '2': '\\u00B2', '3': '\\u00B3', '4': '\\u2074',\n '5': '\\u2075', '6': '\\u2076', '7': '\\u2077', '8': '\\u2078', '9': '\\u2079'\n };\n for (var i = 0; i <= title.length - 1; i++) {\n if (title[i] === ' ') {\n digitSpecific = (regexp === regSub) ? digit[k].replace(/~/g, '') : digit[k].replace(/\\^/g, '');\n for (var j = 0; j < digitSpecific.length; j++) {\n convertedText += (regexp === regSub) ? unicodeSub[digitSpecific[j]] : unicodeSup[digitSpecific[j]];\n }\n k++;\n }\n else {\n convertedText += title[i];\n }\n }\n return convertedText.trim();\n}\n/**\n * Method to reset the blazor templates\n */\nexport function blazorTemplatesReset(control) {\n for (var i = 0; i < control.annotations.length; i++) {\n resetBlazorTemplate((control.element.id + '_Annotation_' + i).replace(/[^a-zA-Z0-9]/g, ''), 'ContentTemplate');\n }\n //This reset the tooltip templates\n resetBlazorTemplate(control.element.id + '_tooltipparent_template' + '_blazorTemplate', 'Template');\n //Datalabel templates reset\n resetBlazorTemplate(control.element.id + '_DataLabel');\n}\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar StackValues = /** @class */ (function () {\n function StackValues(startValue, endValue) {\n this.startValues = startValue;\n this.endValues = endValue;\n }\n return StackValues;\n}());\nexport { StackValues };\n/** @private */\nvar RectOption = /** @class */ (function (_super) {\n __extends(RectOption, _super);\n function RectOption(id, fill, border, opacity, rect, rx, ry, transform, dashArray) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity, dashArray) || this;\n _this.y = rect.y;\n _this.x = rect.x;\n _this.height = rect.height;\n _this.width = rect.width;\n _this.rx = rx ? rx : 0;\n _this.ry = ry ? ry : 0;\n _this.transform = transform ? transform : '';\n _this.stroke = (border.width !== 0 && _this.stroke !== '') ? border.color : 'transparent';\n return _this;\n }\n return RectOption;\n}(PathOption));\nexport { RectOption };\n/** @private */\nvar ImageOption = /** @class */ (function () {\n function ImageOption(height, width, href, x, y, id, visibility, preserveAspectRatio) {\n this.height = height;\n this.width = width;\n this.href = href;\n this.x = x;\n this.y = y;\n this.id = id;\n this.visibility = visibility;\n this.preserveAspectRatio = preserveAspectRatio;\n }\n return ImageOption;\n}());\nexport { ImageOption };\n/** @private */\nvar CircleOption = /** @class */ (function (_super) {\n __extends(CircleOption, _super);\n function CircleOption(id, fill, border, opacity, cx, cy, r) {\n var _this = _super.call(this, id, fill, border.width, border.color, opacity) || this;\n _this.cy = cy;\n _this.cx = cx;\n _this.r = r;\n return _this;\n }\n return CircleOption;\n}(PathOption));\nexport { CircleOption };\n/** @private */\nvar PolygonOption = /** @class */ (function () {\n function PolygonOption(id, points, fill) {\n this.id = id;\n this.points = points;\n this.fill = fill;\n }\n return PolygonOption;\n}());\nexport { PolygonOption };\n/** @private */\nvar ChartLocation = /** @class */ (function () {\n function ChartLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return ChartLocation;\n}());\nexport { ChartLocation };\n/** @private */\nvar LabelLocation = /** @class */ (function () {\n function LabelLocation(x, y) {\n this.x = 0;\n this.y = 0;\n this.x = x;\n this.y = y;\n }\n return LabelLocation;\n}());\nexport { LabelLocation };\n/** @private */\nvar Thickness = /** @class */ (function () {\n function Thickness(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n return Thickness;\n}());\nexport { Thickness };\n/** @private */\nvar ColorValue = /** @class */ (function () {\n function ColorValue(r, g, b) {\n this.r = r;\n this.g = g;\n this.b = b;\n }\n return ColorValue;\n}());\nexport { ColorValue };\n/** @private */\nvar PointData = /** @class */ (function () {\n function PointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n this.lierIndex = index;\n }\n return PointData;\n}());\nexport { PointData };\n/** @private */\nvar AccPointData = /** @class */ (function () {\n function AccPointData(point, series, index) {\n if (index === void 0) { index = 0; }\n this.point = point;\n this.series = series;\n }\n return AccPointData;\n}());\nexport { AccPointData };\n/** @private */\nvar ControlPoints = /** @class */ (function () {\n function ControlPoints(controlPoint1, controlPoint2) {\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n }\n return ControlPoints;\n}());\nexport { ControlPoints };\n","/** @hidden */\nexport var created = 'create';\n/** @hidden */\nexport var destroyed = 'destroy';\n/** @hidden */\nexport var load = 'load';\n/** @hidden */\nexport var rowDataBound = 'rowDataBound';\n/** @hidden */\nexport var queryCellInfo = 'queryCellInfo';\n/** @hidden */\nexport var headerCellInfo = 'headerCellInfo';\n/** @hidden */\nexport var actionBegin = 'actionBegin';\n/** @hidden */\nexport var actionComplete = 'actionComplete';\n/** @hidden */\nexport var actionFailure = 'actionFailure';\n/** @hidden */\nexport var dataBound = 'dataBound';\n/** @hidden */\nexport var rowSelecting = 'rowSelecting';\n/** @hidden */\nexport var rowSelected = 'rowSelected';\n/** @hidden */\nexport var rowDeselecting = 'rowDeselecting';\n/** @hidden */\nexport var rowDeselected = 'rowDeselected';\n/** @hidden */\nexport var cellSelecting = 'cellSelecting';\n/** @hidden */\nexport var cellSelected = 'cellSelected';\n/** @hidden */\nexport var cellDeselecting = 'cellDeselecting';\n/** @hidden */\nexport var cellDeselected = 'cellDeselected';\n/** @hidden */\nexport var columnSelecting = 'columnSelecting';\n/** @hidden */\nexport var columnSelected = 'columnSelected';\n/** @hidden */\nexport var columnDeselecting = 'columnDeselecting';\n/** @hidden */\nexport var columnDeselected = 'columnDeselected';\n/** @hidden */\nexport var columnDragStart = 'columnDragStart';\n/** @hidden */\nexport var columnDrag = 'columnDrag';\n/** @hidden */\nexport var columnDrop = 'columnDrop';\n/** @hidden */\nexport var rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nexport var rowDragStart = 'rowDragStart';\n/** @hidden */\nexport var rowDrag = 'rowDrag';\n/** @hidden */\nexport var rowDrop = 'rowDrop';\n/** @hidden */\nexport var beforePrint = 'beforePrint';\n/** @hidden */\nexport var printComplete = 'printComplete';\n/** @hidden */\nexport var detailDataBound = 'detailDataBound';\n/** @hidden */\nexport var toolbarClick = 'toolbarClick';\n/** @hidden */\nexport var batchAdd = 'batchAdd';\n/** @hidden */\nexport var batchCancel = 'batchCancel';\n/** @hidden */\nexport var batchDelete = 'batchDelete';\n/** @hidden */\nexport var beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nexport var beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nexport var beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nexport var beginEdit = 'beginEdit';\n/** @hidden */\nexport var cellEdit = 'cellEdit';\n/** @hidden */\nexport var cellSave = 'cellSave';\n/** @hidden */\nexport var cellSaved = 'cellSaved';\n/** @hidden */\nexport var endAdd = 'endAdd';\n/** @hidden */\nexport var endDelete = 'endDelete';\n/** @hidden */\nexport var endEdit = 'endEdit';\n/** @hidden */\nexport var recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nexport var recordClick = 'recordClick';\n/** @hidden */\nexport var beforeDataBound = 'beforeDataBound';\n/** @hidden */\nexport var beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nexport var resizeStart = 'resizeStart';\n/** @hidden */\nexport var onResize = 'resizing';\n/** @hidden */\nexport var resizeStop = 'resizeStop';\n/** @hidden */\nexport var checkBoxChange = 'checkBoxChange';\n/** @hidden */\nexport var beforeCopy = 'beforeCopy';\n/** @hidden */\nexport var beforePaste = 'beforePaste';\n/** @hidden */\nexport var beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nexport var filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nexport var filterAfterOpen = 'filterafteropen';\n/** @hidden */\nexport var filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nexport var filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nexport var commandClick = 'commandClick';\n/** @hidden */\nexport var exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nexport var lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nexport var lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nexport var initialLoad = 'initial-load';\n/** @hidden */\nexport var initialEnd = 'initial-end';\n/** @hidden */\nexport var dataReady = 'data-ready';\n/** @hidden */\nexport var contentReady = 'content-ready';\n/** @hidden */\nexport var uiUpdate = 'ui-update';\n/** @hidden */\nexport var onEmpty = 'on-empty';\n/** @hidden */\nexport var inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nexport var modelChanged = 'model-changed';\n/** @hidden */\nexport var colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nexport var headerRefreshed = 'header-refreshed';\n/** @hidden */\nexport var pageBegin = 'paging-begin';\n/** @hidden */\nexport var pageComplete = 'paging-complete';\n/** @hidden */\nexport var sortBegin = 'sorting-begin';\n/** @hidden */\nexport var sortComplete = 'sorting-complete';\n/** @hidden */\nexport var filterBegin = 'filtering-begin';\n/** @hidden */\nexport var filterComplete = 'filtering-complete';\n/** @hidden */\nexport var searchBegin = 'searching-begin';\n/** @hidden */\nexport var searchComplete = 'searching-complete';\n/** @hidden */\nexport var reorderBegin = 'reorder-begin';\n/** @hidden */\nexport var reorderComplete = 'reorder-complete';\n/** @hidden */\nexport var rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nexport var rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nexport var groupBegin = 'grouping-begin';\n/** @hidden */\nexport var groupComplete = 'grouping-complete';\n/** @hidden */\nexport var ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nexport var ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nexport var groupAggregates = 'group-aggregates';\n/** @hidden */\nexport var refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nexport var refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nexport var refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nexport var rowSelectionBegin = 'rowselecting';\n/** @hidden */\nexport var rowSelectionComplete = 'rowselected';\n/** @hidden */\nexport var columnSelectionBegin = 'columnselecting';\n/** @hidden */\nexport var columnSelectionComplete = 'columnselected';\n/** @hidden */\nexport var cellSelectionBegin = 'cellselecting';\n/** @hidden */\nexport var cellSelectionComplete = 'cellselected';\n/** @hidden */\nexport var beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nexport var cellFocused = 'cellfocused';\n/** @hidden */\nexport var keyPressed = 'key-pressed';\n/** @hidden */\nexport var click = 'click';\n/** @hidden */\nexport var destroy = 'destroy';\n/** @hidden */\nexport var columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nexport var scroll = 'scroll';\n/** @hidden */\nexport var columnWidthChanged = 'column-width-changed';\n/** @hidden */\nexport var columnPositionChanged = 'column-position-changed';\n/** @hidden */\nexport var rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nexport var rowsAdded = 'rows-added';\n/** @hidden */\nexport var rowsRemoved = 'rows-removed';\n/** @hidden */\nexport var columnDragStop = 'column-drag-stop';\n/** @hidden */\nexport var headerDrop = 'header-drop';\n/** @hidden */\nexport var dataSourceModified = 'datasource-modified';\n/** @hidden */\nexport var refreshComplete = 'refresh-complete';\n/** @hidden */\nexport var refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nexport var dblclick = 'dblclick';\n/** @hidden */\nexport var toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nexport var bulkSave = 'bulk-save';\n/** @hidden */\nexport var autoCol = 'auto-col';\n/** @hidden */\nexport var tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nexport var updateData = 'update-data';\n/** @hidden */\nexport var editBegin = 'edit-begin';\n/** @hidden */\nexport var editComplete = 'edit-complete';\n/** @hidden */\nexport var addBegin = 'add-begin';\n/** @hidden */\nexport var addComplete = 'add-complete';\n/** @hidden */\nexport var saveComplete = 'save-complete';\n/** @hidden */\nexport var deleteBegin = 'delete-begin';\n/** @hidden */\nexport var deleteComplete = 'delete-complete';\n/** @hidden */\nexport var preventBatch = 'prevent-batch';\n/** @hidden */\nexport var dialogDestroy = 'dialog-destroy';\n/** @hidden */\nexport var crudAction = 'crud-Action';\n/** @hidden */\nexport var addDeleteAction = 'add-delete-Action';\n/** @hidden */\nexport var destroyForm = 'destroy-form';\n/** @hidden */\nexport var doubleTap = 'double-tap';\n/** @hidden */\nexport var beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nexport var excelExportComplete = 'excelExportComplete';\n/** @hidden */\nexport var excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nexport var excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nexport var exportDetailDataBound = 'exportdetaildatabound';\n/** @hidden */\nexport var beforePdfExport = 'beforePdfExport';\n/** @hidden */\nexport var pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nexport var pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nexport var pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nexport var accessPredicate = 'access-predicate';\n/** @hidden */\nexport var contextMenuClick = 'contextMenuClick';\n/** @hidden */\nexport var freezeRender = 'freezerender';\n/** @hidden */\nexport var freezeRefresh = 'freezerefresh';\n/** @hidden */\nexport var contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nexport var columnMenuClick = 'columnMenuClick';\n/** @hidden */\nexport var columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nexport var filterOpen = 'filterOpen';\n/** @hidden */\nexport var filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nexport var filterMenuClose = 'filter-menu-close';\n/** @hidden */\nexport var initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nexport var getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nexport var generateQuery = 'generateQuery';\n/** @hidden */\nexport var showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nexport var foreignKeyData = 'foreignKeyData';\n/** @hidden */\nexport var columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nexport var dataStateChange = 'dataStateChange';\n/** @hidden */\nexport var dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nexport var rtlUpdated = 'rtl-updated';\n/** @hidden */\nexport var beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nexport var frozenHeight = 'frozenHeight';\n/** @hidden */\nexport var textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nexport var recordAdded = 'recordAdded';\n/** @hidden */\nexport var cancelBegin = 'cancel-Begin';\n/** @hidden */\nexport var editNextValCell = 'editNextValCell';\n/** @hidden */\nexport var hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nexport var expandChildGrid = 'expandchildgrid';\n/** @hidden */\nexport var printGridInit = 'printGrid-Init';\n/** @hidden */\nexport var exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nexport var exportDataBound = 'export-DataBound';\n/** @hidden */\nexport var rowPositionChanged = 'row-position-changed';\n/** @hidden */\nexport var columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nexport var batchForm = 'batchedit-form';\n/** @hidden */\nexport var beforeStartEdit = 'edit-form';\n/** @hidden */\nexport var beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nexport var batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nexport var partialRefresh = 'partial-refresh';\n/** @hidden */\nexport var beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nexport var selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nexport var columnsPrepared = 'columns-prepared';\n/** @hidden */\nexport var cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nexport var cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nexport var fltrPrevent = 'filter-Prevent';\n/** @hidden */\nexport var beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nexport var valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nexport var filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nexport var componentRendered = 'component-rendered';\n/** @hidden */\nexport var restoreFocus = 'restore-Focus';\n/** @hidden */\nexport var detailStateChange = 'detail-state-change';\n/** @hidden */\nexport var detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nexport var virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nexport var virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nexport var virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nexport var virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nexport var virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nexport var virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nexport var refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nexport var editReset = 'edit-reset';\n/** @hidden */\nexport var virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nexport var getVirtualData = 'get-virtual-data';\n/** @hidden */\nexport var refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nexport var resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nexport var infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nexport var infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nexport var infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nexport var appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nexport var removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nexport var setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nexport var infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nexport var initialCollapse = 'initial-collapse';\n/** @hidden */\nexport var getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nexport var closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nexport var columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nexport var getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nexport var resetColumns = 'reset-columns';\n/** @hidden */\nexport var pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nexport var excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nexport var setGroupCache = 'group-cache';\n/** @hidden */\nexport var lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nexport var groupCollapse = 'group-collapse';\n/** @hidden */\nexport var beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nexport var refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nexport var refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nexport var setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nexport var refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nexport var setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nexport var setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nexport var setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nexport var beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nexport var immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nexport var refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nexport var checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nexport var refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nexport var setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nexport var preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nexport var nextCellIndex = 'next-cell-index';\n/** @hidden */\nexport var refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nexport var infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nexport var filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nexport var setCustomFilterHeader = 'set-custom-filter-header';\n/** @hidden */\nexport var refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nexport var refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nexport var renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nexport var filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nexport var customFilterClose = 'custom-filter-close';\n/** @hidden */\nexport var setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nexport var refreshVirtualCacheOnRowDD = 'refresh-Virtual-Cache-On-RowDD';\n/** @hidden */\nexport var refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n","import { Dialog } from '@syncfusion/ej2-popups';\nimport { EventHandler, remove } from '@syncfusion/ej2-base';\nimport { parentsUntil, addBiggerDialog } from '../base/util';\nimport * as events from '../base/constant';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ResponsiveDialogAction } from '../base/enum';\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @class */ (function () {\n /**\n * Constructor for Grid Responsive dialog renderer\n * @hidden\n */\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.parent.on(events.filterDialogClose, this.closeCustomDialog, this);\n this.parent.on(events.setCustomFilterHeader, this.setCustomFilterHeader, this);\n this.parent.on(events.refreshCustomFilterOkBtn, this.refreshCustomFilterOkBtn, this);\n this.parent.on(events.renderResponsiveCmenu, this.renderResponsiveContextMenu, this);\n this.parent.on(events.filterCmenuSelect, this.renderCustomFilterDiv, this);\n this.parent.on(events.customFilterClose, this.customExFilterClose, this);\n this.parent.on(events.refreshCustomFilterClearBtn, this.refreshCustomFilterClearBtn, this);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n if (this.action === ResponsiveDialogAction.isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[i].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[i].field);\n cDiv.setAttribute('data-e-mappinguid', cols[i].uid);\n var span = gObj.createElement('span', { innerHTML: cols[i].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (this.action === ResponsiveDialogAction.isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[i].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[i].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n button.innerHTML = index > -1 ? this.parent.sortSettings.columns[index].direction : 'None';\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (this.action === ResponsiveDialogAction.isFilter && filteredCols.indexOf(cols[i].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[i].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[i][name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var direction = txt === 'None' ? 'Ascending' : txt === 'Ascending' ? 'Descending' : 'None';\n target.innerHTML = direction;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.querySelectorAll('.e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[i] !== target) {\n buttons[i].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[i]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n * @return {void}\n * @hidden\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter', className: 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n this.customFilterDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n });\n var isStringTemplate = 'isStringTemplate';\n options[isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader();\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id, className: 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[i].field);\n var sortField = this.parent.sortSettings.columns[i].field;\n var sortDirection = this.parent.sortSettings.columns[i].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[i].field, this.sortPredicate[i].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /** @hidden */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = this.parent.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: 'e-primary e-flat e-res-apply-btn',\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: 'e-primary e-flat e-res-' + id_1 + '-clear-btn',\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[i].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setCustomFilterHeader = function (args) {\n if (this.parent.rowRenderingMode !== 'Vertical') {\n return;\n }\n var header = this.customResponsiveDlg.element.querySelector('.e-reslabel');\n if (header && header.firstElementChild) {\n header.firstElementChild.innerHTML = args.title;\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n this.parent.off(events.filterDialogClose, this.closeCustomDialog);\n this.parent.off(events.setCustomFilterHeader, this.setCustomFilterHeader);\n this.parent.off(events.refreshCustomFilterOkBtn, this.refreshCustomFilterOkBtn);\n this.parent.off(events.renderResponsiveCmenu, this.renderResponsiveContextMenu);\n this.parent.off(events.filterCmenuSelect, this.renderCustomFilterDiv);\n this.parent.off(events.customFilterClose, this.customExFilterClose);\n this.parent.off(events.refreshCustomFilterClearBtn, this.refreshCustomFilterClearBtn);\n };\n return ResponsiveDialogRenderer;\n}());\nexport { ResponsiveDialogRenderer };\n","import { ChildProperty, compile as baseTemplateComplier, setValue, Internationalization, isUndefined, closest } from '@syncfusion/ej2-base';\nimport { extend as baseExtend, isNullOrUndefined, getValue, classList } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, addClass, attributes, remove, createElement, removeClass } from '@syncfusion/ej2-base';\nimport { isObject, isBlazor, Browser, select, selectAll } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate, UrlAdaptor, Deferred } from '@syncfusion/ej2-data';\nimport { Column } from '../models/column';\nimport { calculateRelativeBasedPosition } from '@syncfusion/ej2-popups';\nimport { Print } from '../actions/print';\nimport { ResponsiveDialogRenderer } from '../renderer/responsive-dialog-renderer';\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n * @param {Object} target\n * @param {string} checkFor\n * @returns no\n * @hidden\n */\nexport function doesImplementInterface(target, checkFor) {\n /* tslint:disable:no-any */\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n * @param {string} field\n * @param {Object} data\n * @param {IColumn} column\n * @hidden\n */\nexport function valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n * @param {string} field\n * @param {IColumn} column\n * @hidden\n */\nexport function headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n * @param {Function} fn - Function that contains the actual action\n * @return {Promise}\n * @hidden\n */\nexport function getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n */\nexport function isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @hidden\n */\nexport function updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[i].columns) {\n for (var j = 0; j < gridColumns[i].columns.length; j++) {\n exportColumns[i].columns[j].type = gridColumns[i].columns[j].type;\n }\n }\n else {\n exportColumns[i].type = gridColumns[i].type;\n }\n }\n }\n}\n/**\n * @hidden\n */\nexport function updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n }\n else if (!actualRows[i].isDataRow) {\n nRows.push(actualRows[i]);\n if (!actualRows[i].isExpand && actualRows[i].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[i], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\n/**\n * @hidden\n */\nvar count = 0;\nexport function getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[agrCnt]) && val[agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[agrCnt])) :\n (val[gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[agrCnt])) + val[agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[gSummary] * (gLen - val.indent)) + val[agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[items].length; i < len; i++) {\n var gLevel = val.data[items][i];\n count += gLevel[items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[items][records]) ? gLevel[items][records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[items][records]) && !isNullOrUndefined(val[agrCnt])) ? gLevel[items][records].length :\n gLevel[items].length;\n if (gLevel[items].GroupGuid && gLevel[items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[items].length;\n if (!isNullOrUndefined(val[agrCnt])) {\n if (val[agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[agrCnt]) + val[agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @hidden\n */\nexport function recursive(row) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row[items].length; j < length_1; j++) {\n var nLevel = row[items][j];\n count += nLevel[rCount];\n if (nLevel[items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @hidden\n */\nexport function iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[i], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/** @hidden */\nexport function iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(baseExtend({}, getActualProperties(array[i]), {}, true));\n }\n return obj;\n}\n/** @hidden */\nexport function templateCompiler(template) {\n if (template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(template).length) {\n return baseTemplateComplier(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return baseTemplateComplier(template);\n }\n }\n return undefined;\n}\n/** @hidden */\nexport function setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n baseExtend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/** @hidden */\nexport function extend(copied, first, second, exclude) {\n var moved = baseExtend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[i]) !== -1) {\n delete moved[values[i]];\n }\n }\n return moved;\n}\n/** @hidden */\nexport function setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[i].columns) {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n ind = setColumnIndex(columnModel[i].columns, ind);\n }\n else {\n columnModel[i].index = isNullOrUndefined(columnModel[i].index) ? ind : columnModel[i].index;\n ind++;\n }\n }\n return ind;\n}\n/** @hidden */\nexport function prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[c] === 'string') {\n column = new Column({ field: columns[c] }, gObj);\n }\n else if (!(columns[c] instanceof Column)) {\n if (!columns[c].columns) {\n column = new Column(columns[c], gObj);\n }\n else {\n columns[c].columns = prepareColumns(columns[c].columns, null, gObj);\n column = new Column(columns[c], gObj);\n }\n }\n else {\n column = columns[c];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[c] = column;\n }\n return columns;\n}\n/** @hidden */\nexport function setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n var isBottomTail;\n popUpSpan.className = className;\n popUp.style.display = '';\n isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/** @hidden */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/** @hidden */\nexport function getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/** @hidden */\nexport function parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/** @hidden */\nexport function getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[i].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/** @hidden */\nexport function inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i] === value) {\n return i;\n }\n }\n return -1;\n}\n/** @hidden */\nexport function getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[i].hasOwnProperty('properties')) {\n coll.push(collection[i].properties);\n }\n else {\n coll.push(collection[i]);\n }\n }\n return coll;\n}\n/** @hidden */\nexport function removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[i]);\n }\n}\n/** @hidden */\nexport function getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/** @hidden */\nexport function getUid(prefix) {\n return prefix + uid++;\n}\n/** @hidden */\nexport function appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[i]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/** @hidden */\nexport function parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/** @hidden */\nexport function calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/** @hidden */\nexport function getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: 'e-table', styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('td').getBoundingClientRect();\n element.removeChild(table);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/** @hidden */\nexport function getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table = createElement('table', { className: 'e-table', styles: 'visibility: hidden' });\n table.innerHTML = 'A';\n element.appendChild(table);\n var rect = table.querySelector('tr').getBoundingClientRect();\n element.removeChild(table);\n return rect.height;\n}\n/** @hidden */\nexport function isComplexField(field) {\n return field.split('.').length > 1;\n}\n/** @hidden */\nexport function getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/** @hidden */\nexport function setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/** @hidden */\nexport function isEditable(col, type, elem) {\n var row = parentsUntil(elem, 'e-row');\n var isOldRow = !row ? true : row && !row.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/** @hidden */\nexport function isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/** @hidden */\nexport function wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n action ? elem[i].classList.add(clName) : elem[i].classList.remove(clName);\n }\n}\n/** @hidden */\nexport function setFormatter(serviceLocator, column, isServerRendered) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime') {\n args = { type: column.type, skeleton: column.format };\n if (isBlazor() && isServerRendered) {\n var isServer = 'isServerRendered';\n args[isServer] = isServerRendered;\n }\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/** @hidden */\nexport function addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[i], args.slice(), []);\n cells[i].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[i], [], args.slice());\n cells[i].removeAttribute('aria-selected');\n }\n }\n}\n/** @hidden */\nexport function distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[i] in temp)) {\n res.push(result[i].toString());\n temp[result[i]] = 1;\n }\n }\n return res;\n}\n/** @hidden */\nexport function getFilterMenuPostion(target, dialogObj, grid) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos;\n newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/** @hidden */\nexport function getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/** @hidden */\nexport function toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/** @hidden */\nexport function setChecked(elem, checked) {\n elem.checked = checked;\n}\n/** @hidden */\nexport function createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/** @hidden */\nexport function removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n * @param row - Grid Row model object.\n * @param columns - Foreign columns array.\n * @param data - Updated Row data.\n * @hidden\n */\nexport function refreshForeignData(row, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[i].field, getForeignData(columns[i], data), row.foreignKeyData);\n }\n var cells = row.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[i].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[i].column.field, row.foreignKeyData), cells[i]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n * @param column - Foreign Key column\n * @param data - Row data.\n * @param lValue - cell value.\n * @param foreignData - foreign data source.\n * @hidden\n */\nexport function getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n * @param foreignKeyValue - Defines ForeignKeyValue.\n * @param columns - Array of column object.\n * @hidden\n */\nexport function getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @hidden\n * @param filterObject - Defines predicate model object\n */\nexport function getDatePredicate(filterObject, type) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = baseExtend({}, getActualProperties(filterObject));\n var nextObj = baseExtend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value)) {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @hidden\n */\nexport function renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @hidden\n */\nexport function isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive;\n}\n/**\n * @hidden\n */\nexport function getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[i]];\n }\n return value;\n }\n}\n/**\n * @hidden\n */\nexport function getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'date', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[type] ? format[type] : 'dateTime', format: format[formatter] }, false) :\n isBlazor() ? intl.getDatePattern({ type: 'dateTime', format: format }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @hidden\n */\nexport function getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.isExpand && !row.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row.index;\n obj[index] = {};\n obj[index].isExpand = true;\n obj[index].gridModel = getPrintGridModel(row.childGrid, hierarchyPrintMode);\n obj[index].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @hidden\n */\nexport function getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[key] = getActualProperties(gObj[key]);\n }\n }\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @hidden\n */\nexport function extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n if (!arguments[i]) {\n continue;\n }\n var obj1 = arguments[i];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[i_1]];\n var cpy = obj1[keys[i_1]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[i_1]] = baseExtend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[i_1]] = baseExtend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[i_1]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @hidden\n */\nexport function measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[i], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @hidden\n */\nexport function checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[i] = checkDepth(col.columns[i], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[j]) {\n max = indices[j];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @hidden\n */\nexport function refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[i].uid = filteredCols[i].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[i].field, gObj.getForeignKeyColumns()).uid\n : gObj.getColumnByField(filteredCols[i].field).uid;\n }\n}\n/** @hidden */\nexport var Global;\n(function (Global) {\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @hidden\n */\nexport function getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/** @hidden */\nexport function applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/** @hidden */\nexport function alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.e-row').getBoundingClientRect().height;\n var fHeight = closest(fTD, '.e-row').getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/** @hidden */\nexport function ensureLastRow(row, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row && row.getBoundingClientRect().top > cntOffset;\n}\n/** @hidden */\nexport function ensureFirstRow(row, rowTop) {\n return row && row.getBoundingClientRect().top < rowTop;\n}\n/** @hidden */\nexport function isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/** @hidden */\nexport function getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (e[keyField] === data[keyField]) {\n dataIndex = index;\n }\n });\n return dataIndex;\n}\n/** @hidden */\nexport function eventPromise(args, query) {\n var state;\n state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/** @hidden */\nexport function getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/** @hidden */\nexport function ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[i].width)) {\n undefinedWidthCol++;\n }\n else if (columns[i].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) && Browser.info.name !== 'chrome'\n && !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/** @hidden */\nexport function resetRowIndex(gObj, rows, rowElms, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].isDataRow) {\n rows[i].index = startIndex;\n rows[i].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[i].setAttribute('aria-rowindex', startIndex.toString());\n rows[i].isAltRow ? rowElms[i].classList.add('e-altrow') : rowElms[i].classList.remove('e-altrow');\n for (var j = 0; j < rowElms[i].cells.length; j++) {\n rowElms[i].cells[j].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/** @hidden */\nexport function resetRowObjectIndex(gObj, rows, index) {\n var startIndex = index ? index : 0;\n for (var i = 0; i < rows.length; i++) {\n rows[i].index = startIndex;\n startIndex++;\n }\n}\n/** @hidden */\nexport function compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[type].concat(changes[type]).reduce(function (r, o) {\n r[o[keyField]] = r[o[keyField]] === undefined ? o : Object.assign(r[o[keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[type] = Object.keys(newArray).map(function (k) { return newArray[k]; });\n}\n/** @hidden */\nexport function setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === 'Left-Right' ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === 'Left-Right') {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/** @hidden */\nexport function splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === 'frozen-left') {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === 'frozen-right') {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/** @hidden */\nexport function gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n rowObj ? callBack('frozen-left', rows[0], rowObj[0]) : callBack('frozen-left', rows[0]);\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n rowObj ? callBack('movable', rows[1], rowObj[1]) : callBack('movable', rows[1]);\n }\n if ((gObj.getFrozenMode() === 'Left-Right' || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n rowObj ? callBack('frozen-right', rows[2], rowObj[2]) : callBack('frozen-right', rows[2]);\n }\n}\n/** @hidden */\nexport function getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/** @hidden */\nexport function getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/** @hidden */\nexport function sliceElements(row, start, end) {\n var cells = row.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row.removeChild(row.children[k]);\n k--;\n }\n}\n/** @hidden */\nexport function getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n return [].slice.call(gObj.getFrozenRightDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n else {\n return [].slice.call(gObj.getDataRows()[rowIndex].querySelectorAll('.e-rowcell'));\n }\n}\n/** @hidden */\nexport function getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === 'frozen-right'\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[index];\n}\n/** @hidden */\nexport function setValidationRuels(col, index, rules, mRules, frRules, len) {\n if (col.getFreezeTableName() === 'frozen-left' || (!index && col.getFreezeTableName() === 'frozen-right') || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n}\n/** @hidden */\nexport function getMovableTbody(gObj) {\n var tbody;\n if (gObj.isFrozenGrid()) {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody;\n}\n/** @hidden */\nexport function getFrozenRightTbody(gObj) {\n var tbody;\n if (gObj.getFrozenMode() === 'Left-Right') {\n tbody = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody;\n}\nexport function setRowsInTbody(tbody, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody && tr) {\n callBack(tbody, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/** @hidden */\nexport function getNumberFormat(numberFormat, type, isExcel) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n return mtch_1[pattern];\n });\n }\n return format;\n}\n/** @hidden */\nexport function addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[i].classList.add('e-bigger');\n }\n }\n}\n/** @hidden */\nexport function enableDisableResponsiveRenderer(instance, action) {\n if (instance.parent.enableAdaptiveUI) {\n instance.responsiveDialogRenderer = new ResponsiveDialogRenderer(instance.parent, instance.serviceLocator);\n instance.responsiveDialogRenderer.action = action;\n }\n else {\n if (instance.responsiveDialogRenderer) {\n instance.responsiveDialogRenderer.removeEventListener();\n instance.responsiveDialogRenderer = undefined;\n }\n }\n}\n/** @hidden */\nexport function performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[i]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n","/**\n * To import utils\n */\nimport { isNullOrUndefined, } from '@syncfusion/ej2-base';\nvar SvgRenderer = /** @class */ (function () {\n /* End-Properties */\n function SvgRenderer(rootID) {\n //Internal Variables \n this.svgLink = 'http://www.w3.org/2000/svg';\n this.rootId = rootID;\n }\n // method to get the attributes value\n /* tslint:disable */\n SvgRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n }; /* tslint:enable */\n /**\n * To create a Html5 SVG element\n * @param {SVGAttributes} options - Options to create SVG\n * @return {Element}\n */\n SvgRenderer.prototype.createSvg = function (options) {\n if (isNullOrUndefined(options.id)) {\n options.id = this.rootId + '_svg';\n }\n this.svgObj = document.getElementById(options.id);\n if (isNullOrUndefined(document.getElementById(options.id))) {\n this.svgObj = document.createElementNS(this.svgLink, 'svg');\n }\n this.svgObj = this.setElementAttributes(options, this.svgObj);\n this.setSVGSize(options.width, options.height);\n return this.svgObj;\n };\n // method to set the height and width for the SVG element\n SvgRenderer.prototype.setSVGSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width) || this.width <= 0) {\n this.svgObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.svgObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height) || this.height <= 0) {\n this.svgObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.svgObj.setAttribute('height', this.height.toString());\n }\n };\n /**\n * To draw a path\n * @param {PathAttributes} options - Options to draw a path in SVG\n * @param {Int32Array} canvasTranslate - Used as dummy variable for canvas rendering\n * @return {Element}\n */\n SvgRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = document.getElementById(options.id);\n if (path === null) {\n path = document.createElementNS(this.svgLink, 'path');\n }\n path = this.setElementAttributes(options, path);\n return path;\n };\n /**\n * To draw a line\n * @param {LineAttributes} options - Options to draw a line in SVG\n * @return {Element}\n */\n SvgRenderer.prototype.drawLine = function (options) {\n var line = document.getElementById(options.id);\n if (line === null) {\n line = document.createElementNS(this.svgLink, 'line');\n }\n line = this.setElementAttributes(options, line);\n return line;\n };\n /**\n * To draw a rectangle\n * @param {BaseAttibutes} options - Required options to draw a rectangle in SVG\n * @return {Element}\n */\n SvgRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var rectangle = document.getElementById(options.id);\n if (rectangle === null) {\n rectangle = document.createElementNS(this.svgLink, 'rect');\n }\n rectangle = this.setElementAttributes(options, rectangle);\n return rectangle;\n };\n /**\n * To draw a circle\n * @param {CircleAttributes} options - Required options to draw a circle in SVG\n * @return {Element}\n */\n SvgRenderer.prototype.drawCircle = function (options) {\n var circle = document.getElementById(options.id);\n if (circle === null) {\n circle = document.createElementNS(this.svgLink, 'circle');\n }\n circle = this.setElementAttributes(options, circle);\n return circle;\n };\n /**\n * To draw a polyline\n * @param {PolylineAttributes} options - Options required to draw a polyline\n * @return {Element}\n */\n SvgRenderer.prototype.drawPolyline = function (options) {\n var polyline = document.getElementById(options.id);\n if (polyline === null) {\n polyline = document.createElementNS(this.svgLink, 'polyline');\n }\n polyline = this.setElementAttributes(options, polyline);\n return polyline;\n };\n /**\n * To draw an ellipse\n * @param {EllipseAttributes} options - Options required to draw an ellipse\n * @return {Element}\n */\n SvgRenderer.prototype.drawEllipse = function (options) {\n var ellipse = document.getElementById(options.id);\n if (ellipse === null) {\n ellipse = document.createElementNS(this.svgLink, 'ellipse');\n }\n ellipse = this.setElementAttributes(options, ellipse);\n return ellipse;\n };\n /**\n * To draw a polygon\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @return {Element}\n */\n SvgRenderer.prototype.drawPolygon = function (options) {\n var polygon = document.getElementById(options.id);\n if (polygon === null) {\n polygon = document.createElementNS(this.svgLink, 'polygon');\n }\n polygon = this.setElementAttributes(options, polygon);\n return polygon;\n };\n /**\n * To draw an image\n * @param {ImageAttributes} options - Required options to draw an image in SVG\n * @return {Element}\n */\n SvgRenderer.prototype.drawImage = function (options) {\n var img = document.createElementNS(this.svgLink, 'image');\n img.setAttributeNS(null, 'height', options.height.toString());\n img.setAttributeNS(null, 'width', options.width.toString());\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', options.href);\n img.setAttributeNS(null, 'x', options.x.toString());\n img.setAttributeNS(null, 'y', options.y.toString());\n img.setAttributeNS(null, 'id', options.id);\n img.setAttributeNS(null, 'visibility', options.visibility);\n if (!isNullOrUndefined(this.getOptionValue(options, 'clip-path'))) {\n img.setAttributeNS(null, 'clip-path', this.getOptionValue(options, 'clip-path'));\n }\n if (!isNullOrUndefined(options.preserveAspectRatio)) {\n img.setAttributeNS(null, 'preserveAspectRatio', options.preserveAspectRatio);\n }\n return img;\n };\n /**\n * To draw a text\n * @param {TextAttributes} options - Options needed to draw a text in SVG\n * @return {Element}\n */\n SvgRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var text = document.createElementNS(this.svgLink, 'text');\n text = this.setElementAttributes(options, text);\n if (!isNullOrUndefined(label)) {\n text.textContent = label;\n }\n return text;\n };\n /**\n * To create a tSpan\n * @param {TextAttributes} options - Options to create tSpan\n * @param {string} label - The text content which is to be rendered in the tSpan\n * @return {Element}\n */\n SvgRenderer.prototype.createTSpan = function (options, label) {\n var tSpan = document.createElementNS(this.svgLink, 'tspan');\n tSpan = this.setElementAttributes(options, tSpan);\n if (!isNullOrUndefined(label)) {\n tSpan.textContent = label;\n }\n return tSpan;\n };\n /**\n * To create a title\n * @param {string} text - The text content which is to be rendered in the title\n * @return {Element}\n */\n SvgRenderer.prototype.createTitle = function (text) {\n var title = document.createElementNS(this.svgLink, 'title');\n title.textContent = text;\n return title;\n };\n /**\n * To create defs element in SVG\n * @return {Element}\n */\n SvgRenderer.prototype.createDefs = function () {\n var defs = document.createElementNS(this.svgLink, 'defs');\n return defs;\n };\n /**\n * To create clip path in SVG\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @return {Element}\n */\n SvgRenderer.prototype.createClipPath = function (options) {\n var clipPath = document.createElementNS(this.svgLink, 'clipPath');\n clipPath = this.setElementAttributes(options, clipPath);\n return clipPath;\n };\n /**\n * To create foreign object in SVG\n * @param {BaseAttibutes} options - Options needed to create foreign object\n * @return {Element}\n */\n SvgRenderer.prototype.createForeignObject = function (options) {\n var foreignObject = document.createElementNS(this.svgLink, 'foreignObject');\n foreignObject = this.setElementAttributes(options, foreignObject);\n return foreignObject;\n };\n /**\n * To create group element in SVG\n * @param {BaseAttibutes} options - Options needed to create group\n * @return {Element}\n */\n SvgRenderer.prototype.createGroup = function (options) {\n var group = document.createElementNS(this.svgLink, 'g');\n group = this.setElementAttributes(options, group);\n return group;\n };\n /**\n * To create pattern in SVG\n * @param {PatternAttributes} options - Required options to create pattern in SVG\n * @param {string} type - Specifies the name of the pattern\n * @return {Element}\n */\n SvgRenderer.prototype.createPattern = function (options, element) {\n var pattern = document.createElementNS(this.svgLink, element);\n pattern = this.setElementAttributes(options, pattern);\n return pattern;\n };\n /**\n * To create radial gradient in SVG\n * @param {string[]} colors - Specifies the colors required to create radial gradient\n * @param {string[]} colorStop - Specifies the colorstop required to create radial gradient\n * @param {string} name - Specifies the name of the gradient\n * @param {RadialGradient} options - value for radial gradient\n * @return {string}\n */\n SvgRenderer.prototype.createRadialGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'radialGradient',\n 'cx': options.cx + '%',\n 'cy': options.cy + '%',\n 'r': options.r + '%',\n 'fx': options.fx + '%',\n 'fy': options.fy + '%'\n };\n this.drawGradient('radialGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'radialGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To create linear gradient in SVG\n * @param {string[]} colors - Array of string specifies the values for color\n * @param {string[]} colors - Array of string specifies the values for colorStop\n * @param {string} name - Specifies the name of the gradient\n * @param {LinearGradient} options - Specifies the options for gradient\n * @return {string}\n */\n SvgRenderer.prototype.createLinearGradient = function (colors, name, options) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n var newOptions = {\n 'id': this.rootId + '_' + name + 'linearGradient',\n 'x1': options.x1 + '%',\n 'y1': options.y1 + '%',\n 'x2': options.x2 + '%',\n 'y2': options.y2 + '%'\n };\n this.drawGradient('linearGradient', newOptions, colors);\n colorName = 'url(#' + this.rootId + '_' + name + 'linearGradient)';\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To render the gradient element in SVG\n * @param {string} gradientType - Specifies the type of the gradient\n * @param {RadialGradient | LinearGradient} options - Options required to render a gradient\n * @param {string[]} colors - Array of string specifies the values for color\n * @param {string[]} colorStop - Array of string specifies the values for colorStop\n * @return {Element}\n */\n SvgRenderer.prototype.drawGradient = function (gradientType, options, colors) {\n var defs = this.createDefs();\n var gradient = document.createElementNS(this.svgLink, gradientType);\n gradient = this.setElementAttributes(options, gradient);\n for (var i = 0; i < colors.length; i++) {\n var stop_1 = document.createElementNS(this.svgLink, 'stop');\n stop_1.setAttribute('offset', colors[i].colorStop);\n stop_1.setAttribute('stop-color', colors[i].color);\n stop_1.setAttribute('stop-opacity', colors[i].opacity ? (colors[i].opacity) : '1');\n if (!isNullOrUndefined(colors[i].style)) {\n stop_1.setAttribute('style', colors[i].style);\n }\n gradient.appendChild(stop_1);\n }\n defs.appendChild(gradient);\n return defs;\n };\n /**\n * To render a clip path\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @return {Element}\n */\n SvgRenderer.prototype.drawClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Rect';\n var rect = this.drawRectangle(options);\n clipPath.appendChild(rect);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To create circular clip path in SVG\n * @param {CircleAttributes} options - Options required to create circular clip path\n * @return {Element}\n */\n SvgRenderer.prototype.drawCircularClipPath = function (options) {\n var defs = this.createDefs();\n var clipPath = this.createClipPath({ 'id': options.id });\n options.id = options.id + '_Circle';\n var circle = this.drawCircle(options);\n clipPath.appendChild(circle);\n defs.appendChild(clipPath);\n return defs;\n };\n /**\n * To set the attributes to the element\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {Element} element - The element to which the attributes need to be set\n * @return {Element}\n */\n SvgRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], options[keys[i]]);\n }\n return element;\n };\n /**\n * To create a Html5 canvas element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n * @param {BaseAttibutes} options - Options to create canvas\n * @return {HTMLCanvasElement}\n */\n SvgRenderer.prototype.createCanvas = function (options) {\n return null;\n };\n return SvgRenderer;\n}());\nexport { SvgRenderer };\n","/**\n * To import utils.\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * @private\n */\nvar CanvasRenderer = /** @class */ (function () {\n /* End-Properties */\n function CanvasRenderer(rootID) {\n this.rootId = rootID;\n }\n // method to get the attributes value\n /* tslint:disable */\n CanvasRenderer.prototype.getOptionValue = function (options, key) {\n return options[key];\n };\n /* tslint:enable */\n /**\n * To create a Html5 canvas element\n * @param {BaseAttibutes} options - Options to create canvas\n * @return {HTMLCanvasElement}\n */\n CanvasRenderer.prototype.createCanvas = function (options) {\n var canvasObj = document.createElement('canvas');\n canvasObj.setAttribute('id', this.rootId + '_canvas');\n this.ctx = canvasObj.getContext('2d');\n this.canvasObj = canvasObj;\n this.setCanvasSize(options.width, options.height);\n return this.canvasObj;\n };\n /**\n * To set the width and height for the Html5 canvas element\n * @param {number} width - width of the canvas\n * @param {number} height - height of the canvas\n * @return {void}\n */\n CanvasRenderer.prototype.setCanvasSize = function (width, height) {\n var element = document.getElementById(this.rootId);\n var size = !isNullOrUndefined(element) ? element.getBoundingClientRect() : null;\n if (isNullOrUndefined(this.width)) {\n this.canvasObj.setAttribute('width', width ? width.toString() : size.width.toString());\n }\n else {\n this.canvasObj.setAttribute('width', this.width.toString());\n }\n if (isNullOrUndefined(this.height)) {\n this.canvasObj.setAttribute('height', height ? height.toString() : '450');\n }\n else {\n this.canvasObj.setAttribute('height', this.height.toString());\n }\n };\n // To set the values to the attributes\n CanvasRenderer.prototype.setAttributes = function (options) {\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n var dashArray = this.getOptionValue(options, 'stroke-dasharray');\n if (!isNullOrUndefined(dashArray)) {\n var dashArrayString = dashArray.split(',');\n this.ctx.setLineDash([parseInt(dashArrayString[0], 10), parseInt(dashArrayString[1], 10)]);\n }\n this.ctx.strokeStyle = this.getOptionValue(options, 'stroke');\n };\n /**\n * To draw a line\n * @param {LineAttributes} options - required options to draw a line on the canvas\n * @return {void}\n */\n CanvasRenderer.prototype.drawLine = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.moveTo(options.x1, options.y1);\n this.ctx.lineTo(options.x2, options.y2);\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw a rectangle\n * @param {RectAttributes} options - required options to draw a rectangle on the canvas\n * @return {void}\n */\n CanvasRenderer.prototype.drawRectangle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var cornerRadius = options.rx;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = this.getOptionValue(options, 'opacity');\n this.setAttributes(options);\n this.ctx.rect(options.x, options.y, options.width, options.height);\n if (cornerRadius !== null && cornerRadius >= 0) {\n this.drawCornerRadius(options);\n }\n else {\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n this.ctx.fillRect(options.x, options.y, options.width, options.height);\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return (this.canvasObj);\n };\n // To draw the corner of a rectangle\n CanvasRenderer.prototype.drawCornerRadius = function (options) {\n var cornerRadius = options.rx;\n var x = options.x;\n var y = options.y;\n var width = options.width;\n var height = options.height;\n if (options.fill === 'none') {\n options.fill = 'transparent';\n }\n this.ctx.fillStyle = options.fill;\n if (width < 2 * cornerRadius) {\n cornerRadius = width / 2;\n }\n if (height < 2 * cornerRadius) {\n cornerRadius = height / 2;\n }\n this.ctx.beginPath();\n this.ctx.moveTo(x + width - cornerRadius, y);\n this.ctx.arcTo(x + width, y, x + width, y + height, cornerRadius);\n this.ctx.arcTo(x + width, y + height, x, y + height, cornerRadius);\n this.ctx.arcTo(x, y + height, x, y, cornerRadius);\n this.ctx.arcTo(x, y, x + width, y, cornerRadius);\n this.ctx.closePath();\n this.ctx.fill();\n this.ctx.stroke();\n };\n /**\n * To draw a path on the canvas\n * @param {PathAttributes} options - options needed to draw path\n * @param {Int32Array} canvasTranslate - Array of numbers to translate the canvas\n * @return {void}\n */\n CanvasRenderer.prototype.drawPath = function (options, canvasTranslate) {\n var path = options.d;\n var dataSplit = path.split(' ');\n var borderWidth = this.getOptionValue(options, 'stroke-width');\n var canvasCtx = this.ctx;\n var flag = true;\n this.ctx.save();\n this.ctx.beginPath();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.globalAlpha = options.opacity ? options.opacity : this.getOptionValue(options, 'fill-opacity');\n this.setAttributes(options);\n for (var i = 0; i < dataSplit.length; i = i + 3) {\n var x1 = parseFloat(dataSplit[i + 1]);\n var y1 = parseFloat(dataSplit[i + 2]);\n switch (dataSplit[i]) {\n case 'M':\n if (!options.innerR && !options.cx) {\n this.ctx.moveTo(x1, y1);\n }\n break;\n case 'L':\n if (!options.innerR) {\n this.ctx.lineTo(x1, y1);\n }\n break;\n case 'Q':\n var q1 = parseFloat(dataSplit[i + 3]);\n var q2 = parseFloat(dataSplit[i + 4]);\n this.ctx.quadraticCurveTo(x1, y1, q1, q2);\n i = i + 2;\n break;\n case 'C':\n var c1 = parseFloat(dataSplit[i + 3]);\n var c2 = parseFloat(dataSplit[i + 4]);\n var c3 = parseFloat(dataSplit[i + 5]);\n var c4 = parseFloat(dataSplit[i + 6]);\n this.ctx.bezierCurveTo(x1, y1, c1, c2, c3, c4);\n i = i + 4;\n break;\n case 'A':\n if (!options.innerR) {\n if (options.cx) {\n this.ctx.arc(options.cx, options.cy, options.radius, 0, 2 * Math.PI, options.counterClockWise);\n }\n else {\n this.ctx.moveTo(options.x, options.y);\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.lineTo(options.x, options.y);\n }\n }\n else if (flag) {\n this.ctx.arc(options.x, options.y, options.radius, options.start, options.end, options.counterClockWise);\n this.ctx.arc(options.x, options.y, options.innerR, options.end, options.start, !options.counterClockWise);\n flag = false;\n }\n i = i + 5;\n break;\n case 'z':\n case 'Z':\n this.ctx.closePath();\n //since for loop is incremented by 3, to get next value after 'z' i is decremented for 2.\n i = i - 2;\n break;\n }\n }\n if (options.fill !== 'none' && options.fill !== undefined) {\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n }\n if (borderWidth > 0) {\n this.ctx.stroke();\n }\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw a text\n * @param {TextAttributes} options - options required to draw text\n * @param {string} label - Specifies the text which has to be drawn on the canvas\n * @return {void}\n */\n CanvasRenderer.prototype.createText = function (options, label, transX, transY, dy, isTSpan) {\n var fontWeight = this.getOptionValue(options, 'font-weight');\n if (!isNullOrUndefined(fontWeight) && fontWeight.toLowerCase() === 'regular') {\n fontWeight = 'normal';\n }\n var fontSize = this.getOptionValue(options, 'font-size');\n var fontFamily = this.getOptionValue(options, 'font-family');\n var fontStyle = this.getOptionValue(options, 'font-style').toLowerCase();\n var font = (fontStyle + ' ' + fontWeight + ' ' + fontSize + ' ' + fontFamily);\n var anchor = this.getOptionValue(options, 'text-anchor');\n var opacity = options.opacity !== undefined ? options.opacity : 1;\n var rotation = isNullOrUndefined(options.labelRotation) ? 0 : options.labelRotation;\n if (anchor === 'middle') {\n anchor = 'center';\n }\n this.ctx.save();\n this.ctx.fillStyle = options.fill;\n this.ctx.font = font;\n this.ctx.textAlign = anchor;\n this.ctx.globalAlpha = opacity;\n if (options.baseline) {\n this.ctx.textBaseline = options.baseline;\n }\n if (!isTSpan) {\n var txtlngth = 0;\n this.ctx.translate(options.x + (txtlngth / 2) + (transX ? transX : 0), options.y + (transY ? transY : 0));\n this.ctx.rotate(options.labelRotation * Math.PI / 180);\n }\n this.ctx.fillText(label, isTSpan ? options.x : 0, isTSpan ? dy : 0);\n this.ctx.restore();\n return this.canvasObj;\n };\n /**\n * To draw circle on the canvas\n * @param {CircleAttributes} options - required options to draw the circle\n * @return {void}\n */\n CanvasRenderer.prototype.drawCircle = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.arc(options.cx, options.cy, options.r, 0, 2 * Math.PI);\n this.ctx.fillStyle = options.fill;\n this.ctx.globalAlpha = options.opacity;\n this.ctx.fill();\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.setAttributes(options);\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n return this.canvasObj;\n };\n /**\n * To draw polyline\n * @param {PolylineAttributes} options - options needed to draw polyline\n * @return {void}\n */\n CanvasRenderer.prototype.drawPolyline = function (options) {\n this.ctx.save();\n this.ctx.beginPath();\n var points = options.points.split(' ');\n for (var i = 0; i < points.length - 1; i++) {\n var point = points[i].split(',');\n var x = parseFloat(point[0]);\n var y = parseFloat(point[1]);\n if (i === 0) {\n this.ctx.moveTo(x, y);\n }\n else {\n this.ctx.lineTo(x, y);\n }\n }\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n };\n /**\n * To draw an ellipse on the canvas\n * @param {EllipseAttributes} options - options needed to draw ellipse\n * @return {void}\n */\n CanvasRenderer.prototype.drawEllipse = function (options, canvasTranslate) {\n var canvasCtx = this.ctx;\n var circumference = Math.max(options.rx, options.ry);\n var scaleX = options.rx / circumference;\n var scaleY = options.ry / circumference;\n this.ctx.save();\n this.ctx.beginPath();\n this.ctx.translate(options.cx, options.cy);\n if (canvasTranslate) {\n this.ctx.translate(canvasTranslate[0], canvasTranslate[1]);\n }\n this.ctx.save();\n this.ctx.scale(scaleX, scaleY);\n this.ctx.arc(0, 0, circumference, 0, 2 * Math.PI, false);\n this.ctx.fillStyle = options.fill;\n this.ctx.fill();\n this.ctx.restore();\n this.ctx.lineWidth = this.getOptionValue(options, 'stroke-width');\n this.ctx.strokeStyle = options.stroke;\n this.ctx.stroke();\n this.ctx.restore();\n this.ctx = canvasCtx;\n };\n /**\n * To draw an image\n * @param {ImageAttributes} options - options required to draw an image on the canvas\n * @return {void}\n */\n CanvasRenderer.prototype.drawImage = function (options) {\n this.ctx.save();\n var imageObj = new Image();\n if (!isNullOrUndefined(options.href)) {\n imageObj.src = options.href;\n this.ctx.drawImage(imageObj, options.x, options.y, options.width, options.height);\n }\n this.ctx.restore();\n };\n /**\n * To create a linear gradient\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @return {string}\n */\n CanvasRenderer.prototype.createLinearGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createLinearGradient(0, 0, 0, this.canvasObj.height);\n }\n var color = this.setGradientValues(colors, myGradient);\n return color;\n };\n /**\n * To create a radial gradient\n * @param {string[]} colors - Specifies the colors required to create linear gradient\n * @return {string}\n */\n CanvasRenderer.prototype.createRadialGradient = function (colors) {\n var myGradient;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n myGradient = this.ctx.createRadialGradient(0, 0, 0, 0, 0, this.canvasObj.height);\n }\n var colorName = this.setGradientValues(colors, myGradient);\n return colorName;\n };\n // To set the gradient values\n CanvasRenderer.prototype.setGradientValues = function (colors, myGradient) {\n var colorName;\n if (!isNullOrUndefined(colors[0].colorStop)) {\n for (var i = 0; i <= colors.length - 1; i++) {\n var color = colors[i].color;\n var newColorStop = (colors[i].colorStop).slice(0, -1);\n var stopColor = parseInt(newColorStop, 10) / 100;\n myGradient.addColorStop(stopColor, color);\n }\n colorName = myGradient.toString();\n }\n else {\n colorName = colors[0].color.toString();\n }\n return colorName;\n };\n /**\n * To set the attributes to the element\n * @param {SVGCanvasAttributes} options - Attributes to set for the element\n * @param {HTMLElement} element - The element to which the attributes need to be set\n * @return {HTMLElement}\n */\n CanvasRenderer.prototype.setElementAttributes = function (options, element) {\n var keys = Object.keys(options);\n var values = Object.keys(options).map(function (key) { return options[key]; });\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], values[i]);\n }\n return null;\n };\n /**\n * To update the values of the canvas element attributes\n * @param {SVGCanvasAttributes} options - Specifies the colors required to create gradient\n * @return {void}\n */\n CanvasRenderer.prototype.updateCanvasAttributes = function (options) {\n this.setElementAttributes(options, this.canvasObj);\n var ctx = this.ctx;\n if (!isNullOrUndefined(this.dataUrl)) {\n var img_1 = new Image;\n img_1.onload = function () {\n ctx.drawImage(img_1, 0, 0);\n };\n img_1.src = this.dataUrl;\n }\n };\n /**\n * This method clears the given rectangle region\n * @param options\n */\n CanvasRenderer.prototype.clearRect = function (rect) {\n this.ctx.restore();\n this.ctx.clearRect(rect.x, rect.y, rect.width, rect.height);\n };\n ;\n /**\n * For canvas rendering in chart\n * Dummy method for using canvas/svg render in the same variable name in chart control\n * @param {BaseAttibutes} options - Options needed to create group\n * @return {Element}\n */\n CanvasRenderer.prototype.createGroup = function (options) {\n return null;\n };\n /**\n * To render a clip path\n * Dummy method for using canvas/svg render in the same variable name in chart control\n * @param {BaseAttibutes} options - Options required to render a clip path\n * @return {Element}\n */\n CanvasRenderer.prototype.drawClipPath = function (options) {\n return null;\n };\n /**\n * Clip method to perform clip in canvas mode\n * @param options\n */\n CanvasRenderer.prototype.canvasClip = function (options) {\n this.ctx.save();\n this.ctx.fillStyle = 'transparent';\n this.ctx.rect(options.x, options.y, options.width, options.height);\n this.ctx.fill();\n this.ctx.clip();\n };\n /**\n * Tp restore the canvas\n * @param options\n */\n CanvasRenderer.prototype.canvasRestore = function () {\n this.ctx.restore();\n };\n /**\n * To draw a polygon\n * Dummy method for using canvas/svg render in the same variable name in chart control\n * @param {PolylineAttributes} options - Options needed to draw a polygon in SVG\n * @return {Element}\n */\n CanvasRenderer.prototype.drawPolygon = function (options) {\n return null;\n };\n /**\n * To create defs element in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n * @return {Element}\n */\n CanvasRenderer.prototype.createDefs = function () {\n return null;\n };\n /**\n * To create clip path in SVG\n * Dummy method for using canvas/svg render in the same variable name in chart control\n * @param {BaseAttibutes} options - Options needed to create clip path\n * @return {Element}\n */\n CanvasRenderer.prototype.createClipPath = function (options) {\n return null;\n };\n /**\n * To create a Html5 SVG element\n * Dummy method for using canvas/svg render in the same variable name in chart control\n * @param {SVGAttributes} options - Options to create SVG\n * @return {Element}\n */\n CanvasRenderer.prototype.createSvg = function (options) {\n return null;\n };\n return CanvasRenderer;\n}());\nexport { CanvasRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { SvgRenderer } from '../svg-render/index';\nimport { createElement, remove, merge } from '@syncfusion/ej2-base';\n/**\n * Function to measure the height and width of the text.\n * @param {string} text\n * @param {FontModel} font\n * @param {string} id\n * @returns no\n * @private\n */\nexport function measureText(text, font) {\n var breakText = text || ''; // For avoid NuLL value\n var htmlObject = document.getElementById('chartmeasuretext');\n if (htmlObject === null) {\n htmlObject = createElement('text', { id: 'chartmeasuretext' });\n document.body.appendChild(htmlObject);\n }\n if (typeof (text) === 'string' && (text.indexOf('<') > -1 || text.indexOf('>') > -1)) {\n var textArray = text.split(' ');\n for (var i = 0; i < textArray.length; i++) {\n if (textArray[i].indexOf('
') === -1) {\n textArray[i] = textArray[i].replace(/[<>]/g, '&');\n }\n }\n text = textArray.join(' ');\n }\n htmlObject.innerHTML = (breakText.indexOf('
') > -1 || breakText.indexOf('
') > -1) ? breakText : text;\n htmlObject.style.position = 'fixed';\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.visibility = 'hidden';\n htmlObject.style.top = '-100';\n htmlObject.style.left = '0';\n htmlObject.style.whiteSpace = 'nowrap';\n // For bootstrap line height issue\n htmlObject.style.lineHeight = 'normal';\n return new Size(htmlObject.clientWidth, htmlObject.clientHeight);\n}\n/** @private */\nexport function findDirection(rX, rY, rect, arrowLocation, arrowPadding, top, bottom, left, tipX, tipY, tipRadius) {\n var direction = '';\n var startX = rect.x;\n var startY = rect.y;\n var width = rect.x + rect.width;\n var height = rect.y + rect.height;\n tipRadius = tipRadius ? tipRadius : 0;\n if (top) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + startY + ' ' + (startX + rX) + ' ' + startY + ' ' +\n ' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + width + ' '\n + startY + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height));\n if (arrowPadding !== 0) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (tipX + tipRadius) + ' ' + (height + arrowPadding - tipRadius));\n direction += ' Q' + ' ' + (tipX) + ' ' + (height + arrowPadding) + ' ' + (tipX - tipRadius) +\n ' ' + (height + arrowPadding - tipRadius);\n }\n if ((arrowLocation.x - arrowPadding / 2) > startX) {\n direction = direction.concat(' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + height +\n ' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n if (arrowPadding === 0) {\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + height + ' Q ' + startX + ' '\n + height + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (height + rY) + ' z');\n }\n }\n }\n else if (bottom) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY) + ' L' + ' ' + (arrowLocation.x - arrowPadding / 2) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (tipX - tipRadius) + ' ' + (arrowLocation.y + tipRadius));\n direction += ' Q' + ' ' + (tipX) + ' ' + (arrowLocation.y) + ' ' + (tipX + tipRadius) + ' ' + (arrowLocation.y + tipRadius);\n direction = direction.concat(' L' + ' ' + (arrowLocation.x + arrowPadding / 2) + ' ' + (startY) + ' L' + ' '\n + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' ' + (startY) + ' ' + (width) + ' ' + (startY + rY));\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + (width) + ' '\n + (height) + ' ' + (width - rX) + ' ' + (height) +\n ' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + (startX) + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else if (left) {\n direction = direction.concat('M' + ' ' + (startX) + ' ' + (startY + rY) + ' Q ' + startX + ' '\n + (startY) + ' ' + (startX + rX) + ' ' + (startY));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (startY) + ' Q ' + (width) + ' '\n + (startY) + ' ' + (width) + ' ' + (startY + rY) + ' L' + ' ' + (width) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (width + arrowPadding - tipRadius) + ' ' + (tipY - tipRadius));\n direction += ' Q ' + (width + arrowPadding) + ' ' + (tipY) + ' ' + (width + arrowPadding - tipRadius) + ' ' + (tipY + tipRadius);\n direction = direction.concat(' L' + ' ' + (width) + ' ' + (arrowLocation.y + arrowPadding / 2) +\n ' L' + ' ' + (width) + ' ' + (height - rY) + ' Q ' + width + ' ' + (height) + ' ' + (width - rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (startX + rX) + ' ' + (height) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX) + ' ' + (height - rY) + ' z');\n }\n else {\n direction = direction.concat('M' + ' ' + (startX + rX) + ' ' + (startY) + ' Q ' + (startX) + ' '\n + (startY) + ' ' + (startX) + ' ' + (startY + rY) + ' L' + ' ' + (startX) + ' ' + (arrowLocation.y - arrowPadding / 2));\n direction = direction.concat(' L' + ' ' + (startX - arrowPadding + tipRadius) + ' ' + (tipY - tipRadius));\n direction += ' Q ' + (startX - arrowPadding) + ' ' + (tipY) + ' ' + (startX - arrowPadding + tipRadius) + ' ' + (tipY + tipRadius);\n direction = direction.concat(' L' + ' ' + (startX) + ' ' + (arrowLocation.y + arrowPadding / 2) +\n ' L' + ' ' + (startX) + ' ' + (height - rY) + ' Q ' + startX + ' '\n + (height) + ' ' + (startX + rX) + ' ' + (height));\n direction = direction.concat(' L' + ' ' + (width - rX) + ' ' + (height) + ' Q ' + width + ' '\n + (height) + ' ' + (width) + ' ' + (height - rY) +\n ' L' + ' ' + (width) + ' ' + (startY + rY) + ' Q ' + width + ' '\n + (startY) + ' ' + (width - rX) + ' ' + (startY) + ' z');\n }\n return direction;\n}\n/** @private */\nvar Size = /** @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n return Size;\n}());\nexport { Size };\n/** @private */\nvar Rect = /** @class */ (function () {\n function Rect(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n return Rect;\n}());\nexport { Rect };\nvar Side = /** @class */ (function () {\n function Side(bottom, right) {\n this.isRight = right;\n this.isBottom = bottom;\n }\n return Side;\n}());\nexport { Side };\n/** @private */\nvar CustomizeOption = /** @class */ (function () {\n function CustomizeOption(id) {\n this.id = id;\n }\n return CustomizeOption;\n}());\nexport { CustomizeOption };\n/** @private */\nvar TextOption = /** @class */ (function (_super) {\n __extends(TextOption, _super);\n function TextOption(id, x, y, anchor, text, transform, baseLine, labelRotation) {\n if (transform === void 0) { transform = ''; }\n var _this = _super.call(this, id) || this;\n _this.transform = '';\n _this.baseLine = 'auto';\n _this.labelRotation = 0;\n _this.x = x;\n _this.y = y;\n _this.anchor = anchor;\n _this.text = text;\n _this.transform = transform;\n _this.baseLine = baseLine;\n _this.labelRotation = labelRotation;\n return _this;\n }\n return TextOption;\n}(CustomizeOption));\nexport { TextOption };\n/** @private */\nexport function getElement(id) {\n return document.getElementById(id);\n}\n/** @private */\nexport function removeElement(id) {\n var element = getElement(id);\n if (element) {\n remove(element);\n }\n}\n/** @private */\nexport function drawSymbol(location, shape, size, url, options, label) {\n var functionName = 'Path';\n var renderer = new SvgRenderer('');\n var temp = calculateShapes(location, size, shape, options, url);\n var htmlObject = renderer['draw' + temp.functionName](temp.renderOption);\n htmlObject.setAttribute('aria-label', label);\n return htmlObject;\n}\n/** @private */\nexport function calculateShapes(location, size, shape, options, url) {\n var path;\n var functionName = 'Path';\n var width = size.width;\n var height = size.height;\n var locX = location.x;\n var locY = location.y;\n var x = location.x + (-width / 2);\n var y = location.y + (-height / 2);\n switch (shape) {\n case 'Circle':\n case 'Bubble':\n functionName = 'Ellipse';\n merge(options, { 'rx': width / 2, 'ry': height / 2, 'cx': locX, 'cy': locY });\n break;\n case 'Cross':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' +\n (locY + (-height / 2));\n merge(options, { 'd': path });\n break;\n case 'HorizontalLine':\n path = 'M' + ' ' + x + ' ' + locY + ' ' + 'L' + ' ' + (locX + (width / 2)) + ' ' + locY;\n merge(options, { 'd': path });\n break;\n case 'VerticalLine':\n path = 'M' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' + 'L' + ' ' + locX + ' ' + (locY + (-height / 2));\n merge(options, { 'd': path });\n break;\n case 'Diamond':\n path = 'M' + ' ' + x + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + locY + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + locY + ' z';\n merge(options, { 'd': path });\n break;\n case 'Rectangle':\n path = 'M' + ' ' + x + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (-height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Triangle':\n path = 'M' + ' ' + x + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (-height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + x + ' ' + (locY + (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'InvertedTriangle':\n path = 'M' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + locX + ' ' + (locY + (height / 2)) + ' ' +\n 'L' + ' ' + (locX - (width / 2)) + ' ' + (locY - (height / 2)) + ' ' +\n 'L' + ' ' + (locX + (width / 2)) + ' ' + (locY - (height / 2)) + ' z';\n merge(options, { 'd': path });\n break;\n case 'Pentagon':\n var eq = 72;\n var xValue = void 0;\n var yValue = void 0;\n for (var i = 0; i <= 5; i++) {\n xValue = (width / 2) * Math.cos((Math.PI / 180) * (i * eq));\n yValue = (height / 2) * Math.sin((Math.PI / 180) * (i * eq));\n if (i === 0) {\n path = 'M' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ';\n }\n else {\n path = path.concat('L' + ' ' + (locX + xValue) + ' ' + (locY + yValue) + ' ');\n }\n }\n path = path.concat('Z');\n merge(options, { 'd': path });\n break;\n case 'Image':\n functionName = 'Image';\n merge(options, { 'href': url, 'height': height, 'width': width, x: x, y: y });\n break;\n }\n return { renderOption: options, functionName: functionName };\n}\n/** @private */\nvar PathOption = /** @class */ (function (_super) {\n __extends(PathOption, _super);\n function PathOption(id, fill, width, color, opacity, dashArray, d) {\n var _this = _super.call(this, id) || this;\n _this.opacity = opacity;\n _this.fill = fill;\n _this.stroke = color;\n _this['stroke-width'] = width;\n _this['stroke-dasharray'] = dashArray;\n _this.d = d;\n return _this;\n }\n return PathOption;\n}(CustomizeOption));\nexport { PathOption };\n/** @private */\nexport function textElement(options, font, color, parent) {\n var renderOptions = {};\n var htmlObject;\n var tspanElement;\n var renderer = new SvgRenderer('');\n var text;\n var height;\n renderOptions = {\n 'id': options.id,\n 'x': options.x,\n 'y': options.y,\n 'fill': color,\n 'font-size': font.size,\n 'font-style': font.fontStyle,\n 'font-family': font.fontFamily,\n 'font-weight': font.fontWeight,\n 'text-anchor': options.anchor,\n 'transform': options.transform,\n 'opacity': font.opacity,\n 'dominant-baseline': options.baseLine\n };\n text = typeof options.text === 'string' ? options.text : options.text[0];\n htmlObject = renderer.createText(renderOptions, text);\n htmlObject.style.fontFamily = font.fontFamily;\n htmlObject.style.fontStyle = font.fontStyle;\n htmlObject.style.fontSize = font.size;\n htmlObject.style.fontWeight = font.fontWeight;\n htmlObject.style.color = font.color;\n parent.appendChild(htmlObject);\n return htmlObject;\n}\nvar TooltipLocation = /** @class */ (function () {\n function TooltipLocation(x, y) {\n this.x = x;\n this.y = y;\n }\n return TooltipLocation;\n}());\nexport { TooltipLocation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { NotifyPropertyChanges, Property, Event, Complex, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { extend, compile as templateComplier, Component, resetBlazorTemplate, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '../svg-render/index';\nimport { ChildProperty, createElement, remove, Browser, Animation } from '@syncfusion/ej2-base';\nimport { getTooltipThemeColor } from './interface';\nimport { Size, Rect, Side, measureText, getElement, findDirection, drawSymbol, textElement } from './helper';\nimport { removeElement, TextOption, TooltipLocation, PathOption } from './helper';\n/**\n * Configures the fonts in charts.\n * @private\n */\nvar TextStyle = /** @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], TextStyle.prototype, \"size\", void 0);\n __decorate([\n Property('')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Segoe UI')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('Normal')\n ], TextStyle.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(1)\n ], TextStyle.prototype, \"opacity\", void 0);\n return TextStyle;\n}(ChildProperty));\nexport { TextStyle };\n/**\n * Configures the borders in the chart.\n * @private\n */\nvar TooltipBorder = /** @class */ (function (_super) {\n __extends(TooltipBorder, _super);\n function TooltipBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], TooltipBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], TooltipBorder.prototype, \"width\", void 0);\n return TooltipBorder;\n}(ChildProperty));\nexport { TooltipBorder };\n/**\n * Configures the borders in the chart.\n * @private\n */\nvar AreaBounds = /** @class */ (function (_super) {\n __extends(AreaBounds, _super);\n function AreaBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], AreaBounds.prototype, \"height\", void 0);\n return AreaBounds;\n}(ChildProperty));\nexport { AreaBounds };\n/**\n * Configures the borders in the chart.\n * @private\n */\nvar ToolLocation = /** @class */ (function (_super) {\n __extends(ToolLocation, _super);\n function ToolLocation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], ToolLocation.prototype, \"y\", void 0);\n return ToolLocation;\n}(ChildProperty));\nexport { ToolLocation };\n/**\n * Represents the Tooltip control.\n * ```html\n *
\n * \n * ```\n * @private\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the widget\n * @hidden\n */\n function Tooltip(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler.\n * @private.\n */\n Tooltip.prototype.preRender = function () {\n this.allowServerDataBinding = false;\n this.initPrivateVariable();\n if (!this.isCanvas) {\n this.removeSVG();\n }\n this.createTooltipElement();\n };\n Tooltip.prototype.initPrivateVariable = function () {\n this.renderer = new SvgRenderer(this.element.id);\n this.themeStyle = getTooltipThemeColor(this.theme);\n this.formattedText = [];\n this.padding = 5;\n this.isFirst = true;\n this.markerPoint = [];\n };\n Tooltip.prototype.removeSVG = function () {\n var svgObject = document.getElementById(this.element.id + '_svg');\n var templateObject = document.getElementById(this.element.id + 'parent_template');\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n if (svgObject && svgObject.parentNode) {\n remove(svgObject);\n }\n if (templateObject && templateObject.parentNode) {\n remove(templateObject);\n }\n };\n /**\n * To Initialize the control rendering.\n */\n Tooltip.prototype.render = function () {\n this.fadeOuted = false;\n if (!this.template) {\n this.renderText(this.isFirst);\n var argsData = {\n cancel: false, name: 'tooltipRender', tooltip: this\n };\n this.trigger('tooltipRender', argsData);\n var markerSide = this.renderTooltipElement(this.areaBounds, this.location);\n this.drawMarker(markerSide.isBottom, markerSide.isRight, this.markerSize);\n }\n else {\n this.updateTemplateFn();\n this.createTemplate(this.areaBounds, this.location);\n }\n this.trigger('loaded', { tooltip: this });\n var element = document.getElementById('chartmeasuretext');\n if (element) {\n remove(element);\n }\n this.allowServerDataBinding = true;\n };\n Tooltip.prototype.createTooltipElement = function () {\n this.textElements = [];\n if (!this.template || this.shared) {\n // SVG element for tooltip\n var svgObject = this.renderer.createSvg({ id: this.element.id + '_svg' });\n this.element.appendChild(svgObject);\n // Group to hold text and path.\n var groupElement = document.getElementById(this.element.id + '_group');\n if (!groupElement) {\n groupElement = this.renderer.createGroup({ id: this.element.id + '_group' });\n groupElement.setAttribute('transform', 'translate(0,0)');\n }\n svgObject.appendChild(groupElement);\n var pathElement = this.renderer.drawPath({\n 'id': this.element.id + '_path', 'stroke-width': this.theme === 'Bootstrap4' ? 0 : this.border.width,\n 'fill': this.fill || this.themeStyle.tooltipFill, 'opacity': this.theme === 'Bootstrap4' ? 0.9 : this.opacity,\n 'stroke': this.border.color\n });\n groupElement.appendChild(pathElement);\n }\n };\n Tooltip.prototype.drawMarker = function (isBottom, isRight, size) {\n if (this.shapes.length <= 0) {\n return null;\n }\n var shapeOption;\n var count = 0;\n var markerGroup = this.renderer.createGroup({ id: this.element.id + '_trackball_group' });\n var groupElement = getElement(this.element.id + '_group');\n var x = (this.marginX * 2) + (size / 2) + (isRight ? this.arrowPadding : 0);\n for (var _i = 0, _a = this.shapes; _i < _a.length; _i++) {\n var shape = _a[_i];\n if (shape !== 'None') {\n shapeOption = new PathOption(this.element.id + '_Trackball_' + count, this.palette[count], 1, '#cccccc', 1, null);\n if (this.markerPoint[count]) {\n markerGroup.appendChild(drawSymbol(new TooltipLocation(x, this.markerPoint[count] - this.padding + (isBottom ? this.arrowPadding : 0)), shape, new Size(size, size), '', shapeOption, null));\n }\n count++;\n }\n }\n groupElement.appendChild(markerGroup);\n };\n Tooltip.prototype.renderTooltipElement = function (areaBounds, location) {\n var tooltipDiv = getElement(this.element.id);\n var arrowLocation = new TooltipLocation(0, 0);\n var tipLocation = new TooltipLocation(0, 0);\n var textHeights;\n var svgObject = getElement(this.element.id + '_svg');\n var groupElement = getElement(this.element.id + '_group');\n var pathElement = getElement(this.element.id + '_path');\n var rect;\n var isTop = false;\n var isLeft = false;\n var isBottom = false;\n var x = 0;\n var y = 0;\n this.tipRadius = 1;\n if (this.header !== '') {\n this.elementSize.height += this.marginY;\n }\n if (this.content.length > 1) {\n rect = this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y);\n isTop = true;\n }\n else {\n rect = this.tooltipLocation(areaBounds, location, arrowLocation, tipLocation);\n if (!this.inverted) {\n isTop = (rect.y < (location.y + this.clipBounds.y));\n isBottom = !isTop;\n y = (isTop ? 0 : this.arrowPadding);\n }\n else {\n isLeft = (rect.x < (location.x + this.clipBounds.x));\n x = (isLeft ? 0 : this.arrowPadding);\n }\n }\n if (this.header !== '') {\n var headerSize = measureText(this.isWrap ? this.wrappedText : this.header, this.textStyle).height +\n (this.marginY * 2) + (isBottom ? this.arrowPadding : 0) + (this.isWrap ? 5 : 0); //header padding;\n var xLength = (this.marginX * 3) + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0);\n var direction = 'M ' + xLength + ' ' + headerSize +\n 'L ' + (rect.width + (!isLeft && !isTop && !isBottom ? this.arrowPadding : 0) - (this.marginX * 2)) +\n ' ' + headerSize;\n var pathElement_1 = this.renderer.drawPath({\n 'id': this.element.id + '_header_path', 'stroke-width': 1,\n 'fill': null, 'opacity': 0.8, 'stroke': this.themeStyle.tooltipHeaderLine, 'd': direction\n });\n groupElement.appendChild(pathElement_1);\n }\n var start = this.border.width / 2;\n var pointRect = new Rect(start + x, start + y, rect.width - start, rect.height - start);\n groupElement.setAttribute('opacity', '1');\n if (this.enableAnimation && !this.shared && !this.isFirst) {\n this.animateTooltipDiv(tooltipDiv, rect);\n }\n else {\n this.updateDiv(tooltipDiv, rect.x, rect.y);\n }\n svgObject.setAttribute('height', (rect.height + this.border.width + (!((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('width', (rect.width + this.border.width + (((!this.inverted)) ? 0 : this.arrowPadding) + 5).toString());\n svgObject.setAttribute('opacity', '1');\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n isTop = this.tooltipPlacement.indexOf('Top') > -1;\n isBottom = this.tooltipPlacement.indexOf('Bottom') > -1;\n isLeft = this.tooltipPlacement.indexOf('Left') > -1;\n }\n pathElement.setAttribute('d', findDirection(this.rx, this.ry, pointRect, arrowLocation, this.arrowPadding, isTop, isBottom, isLeft, tipLocation.x, tipLocation.y, this.tipRadius));\n if (this.enableShadow && this.theme !== 'Bootstrap4') {\n // To fix next chart initial tooltip opacity issue in tab control\n var shadowId = this.element.id + '_shadow';\n pathElement.setAttribute('filter', Browser.isIE ? '' : 'url(#' + shadowId + ')');\n var shadow = '';\n shadow += '';\n shadow += '';\n var defElement = this.renderer.createDefs();\n defElement.setAttribute('id', this.element.id + 'SVG_tooltip_definition');\n groupElement.appendChild(defElement);\n defElement.innerHTML = shadow;\n }\n pathElement.setAttribute('stroke', this.border.color);\n this.changeText(new TooltipLocation(x, y), isBottom, !isLeft && !isTop && !isBottom, rect);\n return new Side(isBottom, !isLeft && !isTop && !isBottom);\n };\n Tooltip.prototype.changeText = function (point, isBottom, isRight, rect) {\n var element = document.getElementById(this.element.id + '_text');\n if (isBottom) {\n element.setAttribute('transform', 'translate(0,' + this.arrowPadding + ')');\n }\n if (isRight) {\n element.setAttribute('transform', 'translate(' + this.arrowPadding + ' 0)');\n }\n };\n Tooltip.prototype.findFormattedText = function () {\n this.formattedText = [];\n if (this.header.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '') {\n this.formattedText = this.formattedText.concat(this.header);\n }\n this.formattedText = this.formattedText.concat(this.content);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.renderText = function (isRender) {\n var height = 0;\n var width = 0; // Padding for text;\n var subWidth = 0;\n var lines;\n var key = 'properties';\n var size;\n var font = extend({}, this.textStyle, null, true)[key];\n var groupElement = getElement(this.element.id + '_group');\n var tspanElement;\n var textCollection;\n var tspanStyle = '';\n var line;\n var tspanOption;\n this.findFormattedText();\n var isHeader;\n var isRtlEnabled = document.body.getAttribute('dir') === 'rtl';\n var anchor = isRtlEnabled ? 'end' : 'start';\n this.leftSpace = this.areaBounds.x + this.location.x;\n this.rightSpace = (this.areaBounds.x + this.areaBounds.width) - this.leftSpace;\n var headerContent = this.header.replace(//g, '').replace(/<\\/b>/g, '').trim();\n var isBoldTag = this.header.indexOf('') > -1 && this.header.indexOf('') > -1;\n var headerWidth = measureText(this.formattedText[0], font).width + (2 * this.marginX) + this.arrowPadding;\n var isLeftSpace = (this.location.x - headerWidth) < this.location.x;\n var isRightSpace = (this.areaBounds.x + this.areaBounds.width) < (this.location.x + headerWidth);\n var header;\n var headerSpace = (headerContent !== '') ? this.marginY : 0;\n var isRow = true;\n var isColumn = true;\n this.markerPoint = [];\n var markerSize = (this.shapes.length > 0) ? 10 : 0;\n var markerPadding = (this.shapes.length > 0) ? 5 : 0;\n var spaceWidth = 4;\n var subStringLength;\n var fontSize = '13px';\n var fontWeight = 'Normal';\n var labelColor = this.themeStyle.tooltipLightLabel;\n var dy = (22 / parseFloat(fontSize)) * (parseFloat(font.size));\n if (!isRender || this.isCanvas) {\n removeElement(this.element.id + '_text');\n removeElement(this.element.id + '_header_path');\n removeElement(this.element.id + '_trackball_group');\n removeElement(this.element.id + 'SVG_tooltip_definition');\n }\n var options = new TextOption(this.element.id + '_text', this.marginX * 2, (this.marginY * 2 + this.padding * 2 + (this.marginY === 2 ? 3 : 0)), anchor, '');\n var parentElement = textElement(options, font, null, groupElement);\n var withoutHeader = this.formattedText.length === 1 && this.formattedText[0].indexOf(' : ') > -1;\n isHeader = this.header !== '';\n size = isHeader && isBoldTag ? 16 : 13;\n for (var k = 0, pointsLength = this.formattedText.length; k < pointsLength; k++) {\n textCollection = this.formattedText[k].replace(/<(b|strong)>/g, '')\n .replace(/<\\/(b|strong)>/g, '')\n .split(//g);\n if (k === 0 && !withoutHeader && this.isTextWrap &&\n (this.leftSpace < headerWidth || isLeftSpace) &&\n (this.rightSpace < headerWidth || isRightSpace)) {\n subStringLength = Math.round(this.leftSpace > this.rightSpace ? (this.leftSpace / size) : (this.rightSpace / size));\n header = headerContent !== '' ? headerContent : this.formattedText[k];\n textCollection = header.match(new RegExp('.{1,' + subStringLength + '}', 'g'));\n this.wrappedText = isBoldTag ? '' + textCollection.join('
') + '
' : textCollection.join('
');\n this.isWrap = textCollection.length > 1;\n }\n if (textCollection[0] === '') {\n continue;\n }\n if ((k !== 0) || (headerContent === '')) {\n this.markerPoint.push((headerContent !== '' ? (this.marginY) : 0) + options.y + height);\n }\n for (var i = 0, len = textCollection.length; i < len; i++) { // string value of unicode for LTR is \\u200E\n lines = textCollection[i].replace(//g, '
').replace(/<\\/b>/g, '
').replace(/:/g, '
\\u200E:
')\n .split('
');\n subWidth = 0;\n isColumn = true;\n height += dy;\n for (var j = 0, len_1 = lines.length; j < len_1; j++) {\n line = lines[j];\n if (!/\\S/.test(line) && line !== '') {\n line = ' '; //to trim multiple white spaces to single white space\n }\n if ((!isColumn && line === ' ') || (line.replace(//g, '').replace(/<\\/b>/g, '').trim() !== '')) {\n subWidth += line !== ' ' ? spaceWidth : 0;\n if (isColumn && !isRow) {\n tspanOption = { x: (this.marginX * 2) + (markerSize + markerPadding),\n dy: dy + ((isColumn) ? headerSpace : 0), fill: '' };\n headerSpace = null;\n }\n else {\n if (isRow && isColumn) {\n tspanOption = {\n x: (headerContent === '') ? ((this.marginX * 2) + (markerSize + markerPadding))\n : (this.marginX * 2) + (this.isWrap ? (markerSize + markerPadding) : 0)\n };\n }\n else {\n tspanOption = {};\n }\n }\n isColumn = false;\n tspanElement = this.renderer.createTSpan(tspanOption, '');\n parentElement.appendChild(tspanElement);\n if (line.indexOf('') > -1 || ((isBoldTag && j === 0 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'bold';\n labelColor = this.themeStyle.tooltipBoldLabel;\n tspanStyle = 'font-weight:' + fontWeight;\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n else {\n tspanStyle = fontWeight === 'bold' ? 'font-weight:' + fontWeight : '';\n font.fontWeight = fontWeight;\n (tspanElement).setAttribute('fill', this.textStyle.color || labelColor);\n }\n if (line.indexOf('') > -1 || ((isBoldTag && j === len_1 - 1 && k === 0) && (isHeader || this.isWrap))) {\n fontWeight = 'Normal';\n labelColor = this.themeStyle.tooltipLightLabel;\n }\n var isRtlText = /[\\u0590-\\u07FF\\u200F\\u202B\\u202E\\uFB1D-\\uFDFD\\uFE70-\\uFEFC]/.test(line);\n (tspanElement).textContent = line = line.replace(/<[a-zA-Z\\/](.|\\n)*?>/g, isRtlText ? '\\u200E' : '');\n subWidth += measureText(line, font).width;\n if (tspanStyle !== '') {\n tspanElement.style.fontWeight = tspanStyle.split('font-weight:')[1];\n tspanElement.style.color = tspanElement.getAttribute('fill');\n }\n // 'inherit' will apply css style from parent element.\n tspanElement.style.fontFamily = 'inherit';\n tspanElement.style.fontStyle = 'inherit';\n tspanElement.style.fontSize = 'inherit';\n isRow = false;\n }\n }\n subWidth -= spaceWidth;\n width = Math.max(width, subWidth);\n }\n }\n this.elementSize = new Size(width + (width > 0 ? (2 * this.marginX) : 0), height);\n this.elementSize.width += (markerSize + markerPadding); // marker size + marker Spacing\n var element = (parentElement.childNodes[0]);\n if (headerContent !== '' && element && !this.isWrap) {\n font.fontWeight = 'bold';\n var width_1 = (this.elementSize.width + (2 * this.padding)) / 2 - measureText(headerContent, font).width / 2;\n element.setAttribute('x', width_1.toString());\n }\n };\n Tooltip.prototype.createTemplate = function (areaBounds, location) {\n var argsData = { cancel: false, name: 'tooltipRender', tooltip: this };\n this.trigger('tooltipRender', argsData);\n var parent = document.getElementById(this.element.id);\n if (this.isCanvas) {\n this.removeSVG();\n }\n var firstElement = parent.firstElementChild;\n if (firstElement) {\n remove(firstElement);\n }\n if (!argsData.cancel) {\n var elem = createElement('div', { id: this.element.id + 'parent_template' });\n var templateElement = this.templateFn(this.data, this.controlInstance, elem.id, elem.id + '_blazorTemplate', '');\n while (templateElement && templateElement.length > 0) {\n if (isBlazor() || templateElement.length === 1) {\n elem.appendChild(templateElement[0]);\n templateElement = null;\n }\n else {\n elem.appendChild(templateElement[0]);\n }\n }\n parent.appendChild(elem);\n var element = this.isCanvas ? elem : this.element;\n var rect = element.getBoundingClientRect();\n this.padding = 0;\n this.elementSize = new Size(rect.width, rect.height);\n var tooltipRect = this.shared ? this.sharedTooltipLocation(areaBounds, this.location.x, this.location.y)\n : this.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n if (this.enableAnimation && !this.shared && !this.isFirst) {\n this.animateTooltipDiv(this.element, tooltipRect);\n }\n else {\n this.updateDiv(element, tooltipRect.x, tooltipRect.y);\n }\n if (this.blazorTemplate) {\n //Customer issue - F149037 Call back function to handle the blazor tooltip alignment issues\n var tooltipRendered = function () {\n var rect1 = getElement(thisObject_1.element.id).getBoundingClientRect();\n thisObject_1.elementSize = new Size(rect1.width, rect1.height);\n var tooltipRect1 = thisObject_1.tooltipLocation(areaBounds, location, new TooltipLocation(0, 0), new TooltipLocation(0, 0));\n thisObject_1.updateDiv(getElement(thisObject_1.element.id), tooltipRect1.x, tooltipRect1.y);\n };\n var thisObject_1 = this;\n tooltipRendered.bind(thisObject_1, areaBounds, location);\n updateBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate', this.blazorTemplate.name, this.blazorTemplate.parent, undefined, tooltipRendered);\n }\n }\n else {\n remove(getElement(this.element.id + '_tooltip'));\n }\n };\n Tooltip.prototype.sharedTooltipLocation = function (bounds, x, y) {\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var tooltipRect = new Rect(x + 2 * this.padding, y - height - this.padding, width, height);\n if (tooltipRect.y < bounds.y) {\n tooltipRect.y += (tooltipRect.height + 2 * this.padding);\n }\n if (tooltipRect.x + tooltipRect.width > bounds.x + bounds.width) {\n tooltipRect.x -= (tooltipRect.width + 4 * this.padding);\n }\n return tooltipRect;\n };\n Tooltip.prototype.getCurrentPosition = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n var position = this.tooltipPlacement;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var markerHeight = this.offset;\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n if (position === 'Top' || position === 'Bottom') {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (position === 'Bottom') {\n location.y = symbolLocation.y + clipY + markerHeight;\n }\n if (bounds.x + bounds.width < location.x + width) {\n location.x = (bounds.width > width) ? ((bounds.x + bounds.width) - width + 6) : bounds.x;\n arrowLocation.x = tipLocation.x = (bounds.width > width) ? (bounds.x + symbolLocation.x - location.x) : symbolLocation.x;\n }\n else if (bounds.x > location.x) {\n location.x = bounds.x;\n arrowLocation.x = tipLocation.x = symbolLocation.x;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if (position === 'Left') {\n location.x = symbolLocation.x + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (bounds.y + bounds.height < location.y + height) {\n location.y = (bounds.height > height) ? ((bounds.y + bounds.height) - height + 6) : bounds.y;\n arrowLocation.y = tipLocation.y = (bounds.height > height) ? (bounds.y + symbolLocation.y - location.y) : symbolLocation.y;\n }\n else if (bounds.y > location.y) {\n location.y = bounds.y;\n arrowLocation.y = tipLocation.y = symbolLocation.y;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n // tslint:disable-next-line:max-func-body-length\n Tooltip.prototype.tooltipLocation = function (bounds, symbolLocation, arrowLocation, tipLocation) {\n if (!isNullOrUndefined(this.tooltipPlacement)) {\n var tooltipRect = this.getCurrentPosition(bounds, symbolLocation, arrowLocation, tipLocation);\n return tooltipRect;\n }\n var location = new TooltipLocation(symbolLocation.x, symbolLocation.y);\n var width = this.elementSize.width + (2 * this.marginX);\n var height = this.elementSize.height + (2 * this.marginY);\n var markerHeight = this.offset;\n var clipX = this.clipBounds.x;\n var clipY = this.clipBounds.y;\n var boundsX = bounds.x;\n var boundsY = bounds.y;\n if (!this.inverted) {\n location = new TooltipLocation(location.x + clipX - this.elementSize.width / 2 - this.padding, location.y + clipY - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight);\n arrowLocation.x = tipLocation.x = width / 2;\n if (location.y < boundsY || (this.isNegative)) {\n location.y = (symbolLocation.y < 0 ? 0 : symbolLocation.y) + clipY + markerHeight;\n }\n if (location.y + height + this.arrowPadding > boundsY + bounds.height) {\n location.y = Math.min(symbolLocation.y, boundsY + bounds.height) + clipY\n - this.elementSize.height - (2 * this.padding) - this.arrowPadding - markerHeight;\n }\n tipLocation.x = width / 2;\n if (location.x < boundsX) {\n arrowLocation.x -= (boundsX - location.x);\n tipLocation.x -= (boundsX - location.x);\n location.x = boundsX;\n }\n if (location.x + width > boundsX + bounds.width) {\n arrowLocation.x += ((location.x + width) - (boundsX + bounds.width));\n tipLocation.x += ((location.x + width) - (boundsX + bounds.width));\n location.x -= ((location.x + width) - (boundsX + bounds.width));\n }\n if (arrowLocation.x + this.arrowPadding / 2 > width - this.rx) {\n arrowLocation.x = width - this.rx - this.arrowPadding / 2;\n tipLocation.x = width;\n this.tipRadius = 0;\n }\n if (arrowLocation.x - this.arrowPadding / 2 < this.rx) {\n arrowLocation.x = this.rx + this.arrowPadding / 2;\n tipLocation.x = 0;\n this.tipRadius = 0;\n }\n }\n else {\n location = new TooltipLocation(location.x + clipX + markerHeight, location.y + clipY - this.elementSize.height / 2 - (this.padding));\n arrowLocation.y = tipLocation.y = height / 2;\n if ((location.x + width + this.arrowPadding > boundsX + bounds.width) || (this.isNegative)) {\n location.x = (symbolLocation.x > bounds.width ? bounds.width : symbolLocation.x)\n + clipX - markerHeight - (width + this.arrowPadding);\n }\n if (location.x < boundsX) {\n location.x = (symbolLocation.x < 0 ? 0 : symbolLocation.x) + clipX + markerHeight;\n }\n if (location.y <= boundsY) {\n arrowLocation.y -= (boundsY - location.y);\n tipLocation.y -= (boundsY - location.y);\n location.y = boundsY;\n }\n if (location.y + height >= boundsY + bounds.height) {\n arrowLocation.y += ((location.y + height) - (boundsY + bounds.height));\n tipLocation.y += ((location.y + height) - (boundsY + bounds.height));\n location.y -= ((location.y + height) - (boundsY + bounds.height));\n }\n if (arrowLocation.y + this.arrowPadding / 2 > height - this.ry) {\n arrowLocation.y = height - this.ry - this.arrowPadding / 2;\n tipLocation.y = height;\n this.tipRadius = 0;\n }\n if (arrowLocation.y - this.arrowPadding / 2 < this.ry) {\n arrowLocation.y = this.ry + this.arrowPadding / 2;\n tipLocation.y = 0;\n this.tipRadius = 0;\n }\n }\n return new Rect(location.x, location.y, width, height);\n };\n Tooltip.prototype.animateTooltipDiv = function (tooltipDiv, rect) {\n var _this = this;\n var x = parseFloat(tooltipDiv.style.left);\n var y = parseFloat(tooltipDiv.style.top);\n var currenDiff;\n new Animation({}).animate(tooltipDiv, {\n duration: this.duration,\n progress: function (args) {\n currenDiff = (args.timeStamp / args.duration);\n tooltipDiv.style.animation = null;\n tooltipDiv.style.left = (x + currenDiff * (rect.x - x)) + 'px';\n tooltipDiv.style.top = (y + currenDiff * (rect.y - y)) + 'px';\n },\n end: function (model) {\n _this.updateDiv(tooltipDiv, rect.x, rect.y);\n _this.trigger('animationComplete', { tooltip: _this });\n }\n });\n };\n Tooltip.prototype.updateDiv = function (tooltipDiv, x, y) {\n tooltipDiv.style.left = x + 'px';\n tooltipDiv.style.top = y + 'px';\n };\n Tooltip.prototype.updateTemplateFn = function () {\n if (this.template) {\n var e = void 0;\n try {\n if (document.querySelectorAll(this.template).length) {\n this.templateFn = templateComplier(document.querySelector(this.template).innerHTML.trim());\n }\n }\n catch (e) {\n this.templateFn = templateComplier(this.template);\n }\n }\n };\n /** @private */\n Tooltip.prototype.fadeOut = function () {\n var _this = this;\n var tooltipElement = (this.isCanvas && !this.template) ? getElement(this.element.id + '_svg') :\n getElement(this.element.id);\n if (tooltipElement) {\n var tooltipGroup_1 = tooltipElement.firstChild;\n if (this.isCanvas && !this.template) {\n tooltipGroup_1 = document.getElementById(this.element.id + '_group') ? document.getElementById(this.element.id + '_group') :\n tooltipGroup_1;\n }\n var opacity_1;\n if (tooltipGroup_1) {\n opacity_1 = parseFloat(tooltipGroup_1.getAttribute('opacity')) || 1;\n }\n new Animation({}).animate(tooltipGroup_1, {\n duration: 200,\n progress: function (args) {\n // tooltipGroup.removeAttribute('e-animate');\n _this.progressAnimation(tooltipGroup_1, opacity_1, (args.timeStamp / args.duration));\n },\n end: function (model) {\n _this.fadeOuted = true;\n _this.endAnimation(tooltipGroup_1);\n }\n });\n }\n };\n Tooltip.prototype.progressAnimation = function (tooltipGroup, opacity, timeStamp) {\n tooltipGroup.style.animation = '';\n tooltipGroup.setAttribute('opacity', (opacity - timeStamp).toString());\n };\n /*\n * @hidden\n */\n Tooltip.prototype.endAnimation = function (tooltipGroup) {\n tooltipGroup.setAttribute('opacity', '0');\n if (this.template) {\n tooltipGroup.style.display = 'none';\n }\n this.trigger('animationComplete', { tooltip: this });\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n var keyEntity = [];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Get component name\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * To destroy the accumulationcharts\n * @private\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove('e-tooltip');\n };\n /**\n * Called internally if any of the property value changed.\n * @return {void}\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.blazorTemplate) {\n resetBlazorTemplate(this.element.id + 'parent_template' + '_blazorTemplate');\n }\n this.isFirst = false;\n this.render();\n };\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"shared\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableShadow\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"fill\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], Tooltip.prototype, \"opacity\", void 0);\n __decorate([\n Complex({ size: '13px', fontWeight: 'Normal', color: null, fontStyle: 'Normal', fontFamily: 'Segoe UI' }, TextStyle)\n ], Tooltip.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], Tooltip.prototype, \"duration\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"inverted\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isNegative\", void 0);\n __decorate([\n Complex({ color: '#cccccc', width: 0.5 }, TooltipBorder)\n ], Tooltip.prototype, \"border\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property(10)\n ], Tooltip.prototype, \"markerSize\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"clipBounds\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"palette\", void 0);\n __decorate([\n Property([])\n ], Tooltip.prototype, \"shapes\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, ToolLocation)\n ], Tooltip.prototype, \"location\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offset\", void 0);\n __decorate([\n Property(2)\n ], Tooltip.prototype, \"rx\", void 0);\n __decorate([\n Property(2)\n ], Tooltip.prototype, \"ry\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginX\", void 0);\n __decorate([\n Property(5)\n ], Tooltip.prototype, \"marginY\", void 0);\n __decorate([\n Property(12)\n ], Tooltip.prototype, \"arrowPadding\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"data\", void 0);\n __decorate([\n Property('Material')\n ], Tooltip.prototype, \"theme\", void 0);\n __decorate([\n Complex({ x: 0, y: 0, width: 0, height: 0 }, AreaBounds)\n ], Tooltip.prototype, \"areaBounds\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"availableSize\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"blazorTemplate\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isCanvas\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isTextWrap\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"tooltipPlacement\", void 0);\n __decorate([\n Property(null)\n ], Tooltip.prototype, \"controlInstance\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"tooltipRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"loaded\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"animationComplete\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/** @private */\nexport function getTooltipThemeColor(theme) {\n var style;\n switch (theme) {\n case 'Highcontrast':\n case 'HighContrast':\n style = {\n tooltipFill: '#ffffff',\n tooltipBoldLabel: '#000000',\n tooltipLightLabel: '#000000',\n tooltipHeaderLine: '#969696'\n };\n break;\n case 'MaterialDark':\n case 'FabricDark':\n case 'BootstrapDark':\n style = {\n tooltipFill: '#F4F4F4',\n tooltipBoldLabel: '#282727',\n tooltipLightLabel: '#333232',\n tooltipHeaderLine: '#9A9A9A'\n };\n break;\n case 'Bootstrap4':\n style = {\n tooltipFill: 'rgba(0, 0, 0, 0.9)',\n tooltipBoldLabel: 'rgba(255, 255, 255)',\n tooltipLightLabel: 'rgba(255, 255, 255, 0.9)',\n tooltipHeaderLine: 'rgba(255, 255, 255, 0.2)'\n };\n break;\n default:\n style = {\n tooltipFill: 'rgba(0, 8, 22, 0.75)',\n tooltipBoldLabel: '#ffffff',\n tooltipLightLabel: '#dbdbdb',\n tooltipHeaderLine: '#ffffff'\n };\n break;\n }\n return style;\n}\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string starts with given string.\n * @param {string} str\n * @param {string} startstr\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * To return the sorting function based on the string.\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n return from[nameSpace];\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n * @param {Object[]} json\n * @param {string} field\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n * @param {string} er\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n * @param {Object[]} ds\n * @param {string} field?\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the given input value is not null.\n * @param {string|number} actual\n * @returns boolean\n */\n notnull: function (actual) {\n return actual !== null;\n },\n /**\n * Returns true when the given input value is null.\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null;\n },\n /**\n * Returns true when the actual input starts with the given string\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n * @param {string} value\n */\n isGuid: function (value) {\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n * @param {string} key\n * @param {Object} val\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","import _Symbol$toPrimitive from \"@babel/runtime-corejs2/core-js/symbol/to-primitive\";\nimport _Set from \"@babel/runtime-corejs2/core-js/set\";\nimport _Array$from from \"@babel/runtime-corejs2/core-js/array/from\";\nimport _toConsumableArray from \"@babel/runtime-corejs2/helpers/esm/toConsumableArray\";\nimport _Number$isNaN from \"@babel/runtime-corejs2/core-js/number/is-nan\";\nimport _defineProperty from \"@babel/runtime-corejs2/helpers/esm/defineProperty\";\nimport _Object$keys from \"@babel/runtime-corejs2/core-js/object/keys\";\nimport _Array$isArray from \"@babel/runtime-corejs2/core-js/array/is-array\";\nimport _typeof from \"@babel/runtime-corejs2/helpers/esm/typeof\";\nimport _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime-corejs2/helpers/esm/objectSpread\";\nimport _objectWithoutProperties from \"@babel/runtime-corejs2/helpers/esm/objectWithoutProperties\";\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return _typeof(key) === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (_typeof(input) !== \"object\" || input === null) return input; var prim = input[_Symbol$toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (_typeof(res) !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nimport React from \"react\";\nimport * as ReactIs from \"react-is\";\nimport mergeAllOf from \"json-schema-merge-allof\";\nimport fill from \"core-js/library/fn/array/fill\";\nimport validateFormData, { isValid } from \"./validate\";\nimport union from \"lodash/union\";\nimport jsonpointer from \"jsonpointer\";\nexport var ADDITIONAL_PROPERTY_FLAG = \"__additional_property\";\nvar widgetMap = {\n \"boolean\": {\n checkbox: \"CheckboxWidget\",\n radio: \"RadioWidget\",\n select: \"SelectWidget\",\n hidden: \"HiddenWidget\"\n },\n string: {\n text: \"TextWidget\",\n password: \"PasswordWidget\",\n email: \"EmailWidget\",\n hostname: \"TextWidget\",\n ipv4: \"TextWidget\",\n ipv6: \"TextWidget\",\n uri: \"URLWidget\",\n \"data-url\": \"FileWidget\",\n radio: \"RadioWidget\",\n select: \"SelectWidget\",\n textarea: \"TextareaWidget\",\n hidden: \"HiddenWidget\",\n date: \"DateWidget\",\n datetime: \"DateTimeWidget\",\n \"date-time\": \"DateTimeWidget\",\n \"alt-date\": \"AltDateWidget\",\n \"alt-datetime\": \"AltDateTimeWidget\",\n color: \"ColorWidget\",\n file: \"FileWidget\"\n },\n number: {\n text: \"TextWidget\",\n select: \"SelectWidget\",\n updown: \"UpDownWidget\",\n range: \"RangeWidget\",\n radio: \"RadioWidget\",\n hidden: \"HiddenWidget\"\n },\n integer: {\n text: \"TextWidget\",\n select: \"SelectWidget\",\n updown: \"UpDownWidget\",\n range: \"RangeWidget\",\n radio: \"RadioWidget\",\n hidden: \"HiddenWidget\"\n },\n array: {\n select: \"SelectWidget\",\n checkboxes: \"CheckboxesWidget\",\n files: \"FileWidget\",\n hidden: \"HiddenWidget\"\n }\n};\nexport function getDefaultRegistry() {\n return {\n fields: require(\"./components/fields\")[\"default\"],\n widgets: require(\"./components/widgets\")[\"default\"],\n definitions: {},\n rootSchema: {},\n formContext: {}\n };\n}\n/* Gets the type of a given schema. */\n\nexport function getSchemaType(schema) {\n var type = schema.type;\n\n if (!type && schema[\"const\"]) {\n return guessType(schema[\"const\"]);\n }\n\n if (!type && schema[\"enum\"]) {\n return \"string\";\n }\n\n if (!type && (schema.properties || schema.additionalProperties)) {\n return \"object\";\n }\n\n if (type instanceof Array && type.length === 2 && type.includes(\"null\")) {\n return type.find(function (type) {\n return type !== \"null\";\n });\n }\n\n return type;\n}\nexport function getWidget(schema, widget) {\n var registeredWidgets = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var type = getSchemaType(schema);\n\n function mergeOptions(Widget) {\n // cache return value as property of widget for proper react reconciliation\n if (!Widget.MergedWidget) {\n var defaultOptions = Widget.defaultProps && Widget.defaultProps.options || {};\n\n Widget.MergedWidget = function (_ref) {\n var _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n props = _objectWithoutProperties(_ref, [\"options\"]);\n\n return React.createElement(Widget, _extends({\n options: _objectSpread({}, defaultOptions, options)\n }, props));\n };\n }\n\n return Widget.MergedWidget;\n }\n\n if (typeof widget === \"function\" || ReactIs.isForwardRef(React.createElement(widget)) || ReactIs.isMemo(widget)) {\n return mergeOptions(widget);\n }\n\n if (typeof widget !== \"string\") {\n throw new Error(\"Unsupported widget definition: \".concat(_typeof(widget)));\n }\n\n if (registeredWidgets.hasOwnProperty(widget)) {\n var registeredWidget = registeredWidgets[widget];\n return getWidget(schema, registeredWidget, registeredWidgets);\n }\n\n if (!widgetMap.hasOwnProperty(type)) {\n throw new Error(\"No widget for type \\\"\".concat(type, \"\\\"\"));\n }\n\n if (widgetMap[type].hasOwnProperty(widget)) {\n var _registeredWidget = registeredWidgets[widgetMap[type][widget]];\n return getWidget(schema, _registeredWidget, registeredWidgets);\n }\n\n throw new Error(\"No widget \\\"\".concat(widget, \"\\\" for type \\\"\").concat(type, \"\\\"\"));\n}\nexport function hasWidget(schema, widget) {\n var registeredWidgets = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n try {\n getWidget(schema, widget, registeredWidgets);\n return true;\n } catch (e) {\n if (e.message && (e.message.startsWith(\"No widget\") || e.message.startsWith(\"Unsupported widget\"))) {\n return false;\n }\n\n throw e;\n }\n}\n\nfunction computeDefaults(_schema, parentDefaults, rootSchema) {\n var rawFormData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var includeUndefinedValues = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n var schema = isObject(_schema) ? _schema : {};\n var formData = isObject(rawFormData) ? rawFormData : {}; // Compute the defaults recursively: give highest priority to deepest nodes.\n\n var defaults = parentDefaults;\n\n if (isObject(defaults) && isObject(schema[\"default\"])) {\n // For object defaults, only override parent defaults that are defined in\n // schema.default.\n defaults = mergeObjects(defaults, schema[\"default\"]);\n } else if (\"default\" in schema) {\n // Use schema defaults for this node.\n defaults = schema[\"default\"];\n } else if (\"$ref\" in schema) {\n // Use referenced schema defaults for this node.\n var refSchema = findSchemaDefinition(schema.$ref, rootSchema);\n return computeDefaults(refSchema, defaults, rootSchema, formData, includeUndefinedValues);\n } else if (\"dependencies\" in schema) {\n var resolvedSchema = resolveDependencies(schema, rootSchema, formData);\n return computeDefaults(resolvedSchema, defaults, rootSchema, formData, includeUndefinedValues);\n } else if (isFixedItems(schema)) {\n defaults = schema.items.map(function (itemSchema, idx) {\n return computeDefaults(itemSchema, _Array$isArray(parentDefaults) ? parentDefaults[idx] : undefined, rootSchema, formData, includeUndefinedValues);\n });\n } else if (\"oneOf\" in schema) {\n schema = schema.oneOf[getMatchingOption(undefined, schema.oneOf, rootSchema)];\n } else if (\"anyOf\" in schema) {\n schema = schema.anyOf[getMatchingOption(undefined, schema.anyOf, rootSchema)];\n } // Not defaults defined for this node, fallback to generic typed ones.\n\n\n if (typeof defaults === \"undefined\") {\n defaults = schema[\"default\"];\n }\n\n switch (getSchemaType(schema)) {\n // We need to recur for object schema inner default values.\n case \"object\":\n return _Object$keys(schema.properties || {}).reduce(function (acc, key) {\n // Compute the defaults for this node, with the parent defaults we might\n // have from a previous run: defaults[key].\n var computedDefault = computeDefaults(schema.properties[key], (defaults || {})[key], rootSchema, (formData || {})[key], includeUndefinedValues);\n\n if (includeUndefinedValues || computedDefault !== undefined) {\n acc[key] = computedDefault;\n }\n\n return acc;\n }, {});\n\n case \"array\":\n // Inject defaults into existing array defaults\n if (_Array$isArray(defaults)) {\n defaults = defaults.map(function (item, idx) {\n return computeDefaults(schema.items[idx] || schema.additionalItems || {}, item, rootSchema);\n });\n } // Deeply inject defaults into already existing form data\n\n\n if (_Array$isArray(rawFormData)) {\n defaults = rawFormData.map(function (item, idx) {\n return computeDefaults(schema.items, (defaults || {})[idx], rootSchema, item);\n });\n }\n\n if (schema.minItems) {\n if (!isMultiSelect(schema, rootSchema)) {\n var defaultsLength = defaults ? defaults.length : 0;\n\n if (schema.minItems > defaultsLength) {\n var defaultEntries = defaults || []; // populate the array with the defaults\n\n var fillerSchema = _Array$isArray(schema.items) ? schema.additionalItems : schema.items;\n var fillerEntries = fill(new Array(schema.minItems - defaultsLength), computeDefaults(fillerSchema, fillerSchema.defaults, rootSchema)); // then fill up the rest with either the item default or empty, up to minItems\n\n return defaultEntries.concat(fillerEntries);\n }\n } else {\n return defaults ? defaults : [];\n }\n }\n\n }\n\n return defaults;\n}\n\nexport function getDefaultFormState(_schema, formData) {\n var rootSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var includeUndefinedValues = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;\n\n if (!isObject(_schema)) {\n throw new Error(\"Invalid schema: \" + _schema);\n }\n\n var schema = retrieveSchema(_schema, rootSchema, formData);\n var defaults = computeDefaults(schema, _schema[\"default\"], rootSchema, formData, includeUndefinedValues);\n\n if (typeof formData === \"undefined\") {\n // No form data? Use schema defaults.\n return defaults;\n }\n\n if (isObject(formData) || _Array$isArray(formData)) {\n return mergeDefaultsWithFormData(defaults, formData);\n }\n\n if (formData === 0 || formData === false || formData === \"\") {\n return formData;\n }\n\n return formData || defaults;\n}\n/**\n * When merging defaults and form data, we want to merge in this specific way:\n * - objects are deeply merged\n * - arrays are merged in such a way that:\n * - when the array is set in form data, only array entries set in form data\n * are deeply merged; additional entries from the defaults are ignored\n * - when the array is not set in form data, the default is copied over\n * - scalars are overwritten/set by form data\n */\n\nexport function mergeDefaultsWithFormData(defaults, formData) {\n if (_Array$isArray(formData)) {\n if (!_Array$isArray(defaults)) {\n defaults = [];\n }\n\n return formData.map(function (value, idx) {\n if (defaults[idx]) {\n return mergeDefaultsWithFormData(defaults[idx], value);\n }\n\n return value;\n });\n } else if (isObject(formData)) {\n var acc = _extends({}, defaults); // Prevent mutation of source object.\n\n\n return _Object$keys(formData).reduce(function (acc, key) {\n acc[key] = mergeDefaultsWithFormData(defaults ? defaults[key] : {}, formData[key]);\n return acc;\n }, acc);\n } else {\n return formData;\n }\n}\nexport function getUiOptions(uiSchema) {\n // get all passed options from ui:widget, ui:options, and ui:\n return _Object$keys(uiSchema).filter(function (key) {\n return key.indexOf(\"ui:\") === 0;\n }).reduce(function (options, key) {\n var value = uiSchema[key];\n\n if (key === \"ui:widget\" && isObject(value)) {\n console.warn(\"Setting options via ui:widget object is deprecated, use ui:options instead\");\n return _objectSpread({}, options, value.options || {}, {\n widget: value.component\n });\n }\n\n if (key === \"ui:options\" && isObject(value)) {\n return _objectSpread({}, options, value);\n }\n\n return _objectSpread({}, options, _defineProperty({}, key.substring(3), value));\n }, {});\n}\nexport function getDisplayLabel(schema, uiSchema, rootSchema) {\n var uiOptions = getUiOptions(uiSchema);\n var _uiOptions$label = uiOptions.label,\n displayLabel = _uiOptions$label === void 0 ? true : _uiOptions$label;\n\n if (schema.type === \"array\") {\n displayLabel = isMultiSelect(schema, rootSchema) || isFilesArray(schema, uiSchema, rootSchema);\n }\n\n if (schema.type === \"object\") {\n displayLabel = false;\n }\n\n if (schema.type === \"boolean\" && !uiSchema[\"ui:widget\"]) {\n displayLabel = false;\n }\n\n if (uiSchema[\"ui:field\"]) {\n displayLabel = false;\n }\n\n return displayLabel;\n}\nexport function isObject(thing) {\n if (typeof File !== \"undefined\" && thing instanceof File) {\n return false;\n }\n\n return _typeof(thing) === \"object\" && thing !== null && !_Array$isArray(thing);\n}\nexport function mergeObjects(obj1, obj2) {\n var concatArrays = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n // Recursively merge deeply nested objects.\n var acc = _extends({}, obj1); // Prevent mutation of source object.\n\n\n return _Object$keys(obj2).reduce(function (acc, key) {\n var left = obj1 ? obj1[key] : {},\n right = obj2[key];\n\n if (obj1 && obj1.hasOwnProperty(key) && isObject(right)) {\n acc[key] = mergeObjects(left, right, concatArrays);\n } else if (concatArrays && _Array$isArray(left) && _Array$isArray(right)) {\n acc[key] = left.concat(right);\n } else {\n acc[key] = right;\n }\n\n return acc;\n }, acc);\n}\nexport function asNumber(value) {\n if (value === \"\") {\n return undefined;\n }\n\n if (value === null) {\n return null;\n }\n\n if (/\\.$/.test(value)) {\n // \"3.\" can't really be considered a number even if it parses in js. The\n // user is most likely entering a float.\n return value;\n }\n\n if (/\\.0$/.test(value)) {\n // we need to return this as a string here, to allow for input like 3.07\n return value;\n }\n\n var n = Number(value);\n var valid = typeof n === \"number\" && !_Number$isNaN(n);\n\n if (/\\.\\d*0$/.test(value)) {\n // It's a number, that's cool - but we need it as a string so it doesn't screw\n // with the user when entering dollar amounts or other values (such as those with\n // specific precision or number of significant digits)\n return value;\n }\n\n return valid ? n : value;\n}\nexport function orderProperties(properties, order) {\n if (!_Array$isArray(order)) {\n return properties;\n }\n\n var arrayToHash = function arrayToHash(arr) {\n return arr.reduce(function (prev, curr) {\n prev[curr] = true;\n return prev;\n }, {});\n };\n\n var errorPropList = function errorPropList(arr) {\n return arr.length > 1 ? \"properties '\".concat(arr.join(\"', '\"), \"'\") : \"property '\".concat(arr[0], \"'\");\n };\n\n var propertyHash = arrayToHash(properties);\n var orderFiltered = order.filter(function (prop) {\n return prop === \"*\" || propertyHash[prop];\n });\n var orderHash = arrayToHash(orderFiltered);\n var rest = properties.filter(function (prop) {\n return !orderHash[prop];\n });\n var restIndex = orderFiltered.indexOf(\"*\");\n\n if (restIndex === -1) {\n if (rest.length) {\n throw new Error(\"uiSchema order list does not contain \".concat(errorPropList(rest)));\n }\n\n return orderFiltered;\n }\n\n if (restIndex !== orderFiltered.lastIndexOf(\"*\")) {\n throw new Error(\"uiSchema order list contains more than one wildcard item\");\n }\n\n var complete = _toConsumableArray(orderFiltered);\n\n complete.splice.apply(complete, [restIndex, 1].concat(_toConsumableArray(rest)));\n return complete;\n}\n/**\n * This function checks if the given schema matches a single\n * constant value.\n */\n\nexport function isConstant(schema) {\n return _Array$isArray(schema[\"enum\"]) && schema[\"enum\"].length === 1 || schema.hasOwnProperty(\"const\");\n}\nexport function toConstant(schema) {\n if (_Array$isArray(schema[\"enum\"]) && schema[\"enum\"].length === 1) {\n return schema[\"enum\"][0];\n } else if (schema.hasOwnProperty(\"const\")) {\n return schema[\"const\"];\n } else {\n throw new Error(\"schema cannot be inferred as a constant\");\n }\n}\nexport function isSelect(_schema) {\n var rootSchema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var schema = retrieveSchema(_schema, rootSchema);\n var altSchemas = schema.oneOf || schema.anyOf;\n\n if (_Array$isArray(schema[\"enum\"])) {\n return true;\n } else if (_Array$isArray(altSchemas)) {\n return altSchemas.every(function (altSchemas) {\n return isConstant(altSchemas);\n });\n }\n\n return false;\n}\nexport function isMultiSelect(schema) {\n var rootSchema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!schema.uniqueItems || !schema.items) {\n return false;\n }\n\n return isSelect(schema.items, rootSchema);\n}\nexport function isFilesArray(schema, uiSchema) {\n var rootSchema = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (uiSchema[\"ui:widget\"] === \"files\") {\n return true;\n } else if (schema.items) {\n var itemsSchema = retrieveSchema(schema.items, rootSchema);\n return itemsSchema.type === \"string\" && itemsSchema.format === \"data-url\";\n }\n\n return false;\n}\nexport function isFixedItems(schema) {\n return _Array$isArray(schema.items) && schema.items.length > 0 && schema.items.every(function (item) {\n return isObject(item);\n });\n}\nexport function allowAdditionalItems(schema) {\n if (schema.additionalItems === true) {\n console.warn(\"additionalItems=true is currently not supported\");\n }\n\n return isObject(schema.additionalItems);\n}\nexport function optionsList(schema) {\n if (schema[\"enum\"]) {\n return schema[\"enum\"].map(function (value, i) {\n var label = schema.enumNames && schema.enumNames[i] || String(value);\n return {\n label: label,\n value: value\n };\n });\n } else {\n var altSchemas = schema.oneOf || schema.anyOf;\n return altSchemas.map(function (schema, i) {\n var value = toConstant(schema);\n var label = schema.title || String(value);\n return {\n label: label,\n value: value\n };\n });\n }\n}\nexport function findSchemaDefinition($ref) {\n var rootSchema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var origRef = $ref;\n\n if ($ref.startsWith(\"#\")) {\n // Decode URI fragment representation.\n $ref = decodeURIComponent($ref.substring(1));\n } else {\n throw new Error(\"Could not find a definition for \".concat(origRef, \".\"));\n }\n\n var current = jsonpointer.get(rootSchema, $ref);\n\n if (current === undefined) {\n throw new Error(\"Could not find a definition for \".concat(origRef, \".\"));\n }\n\n if (current.hasOwnProperty(\"$ref\")) {\n return findSchemaDefinition(current.$ref, rootSchema);\n }\n\n return current;\n} // In the case where we have to implicitly create a schema, it is useful to know what type to use\n// based on the data we are defining\n\nexport var guessType = function guessType(value) {\n if (_Array$isArray(value)) {\n return \"array\";\n } else if (typeof value === \"string\") {\n return \"string\";\n } else if (value == null) {\n return \"null\";\n } else if (typeof value === \"boolean\") {\n return \"boolean\";\n } else if (!isNaN(value)) {\n return \"number\";\n } else if (_typeof(value) === \"object\") {\n return \"object\";\n } // Default to string if we can't figure it out\n\n\n return \"string\";\n}; // This function will create new \"properties\" items for each key in our formData\n\nexport function stubExistingAdditionalProperties(schema) {\n var rootSchema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var formData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n // Clone the schema so we don't ruin the consumer's original\n schema = _objectSpread({}, schema, {\n properties: _objectSpread({}, schema.properties)\n });\n\n _Object$keys(formData).forEach(function (key) {\n if (schema.properties.hasOwnProperty(key)) {\n // No need to stub, our schema already has the property\n return;\n }\n\n var additionalProperties;\n\n if (schema.additionalProperties.hasOwnProperty(\"$ref\")) {\n additionalProperties = retrieveSchema({\n $ref: schema.additionalProperties[\"$ref\"]\n }, rootSchema, formData);\n } else if (schema.additionalProperties.hasOwnProperty(\"type\")) {\n additionalProperties = _objectSpread({}, schema.additionalProperties);\n } else {\n additionalProperties = {\n type: guessType(formData[key])\n };\n } // The type of our new key should match the additionalProperties value;\n\n\n schema.properties[key] = additionalProperties; // Set our additional property flag so we know it was dynamically added\n\n schema.properties[key][ADDITIONAL_PROPERTY_FLAG] = true;\n });\n\n return schema;\n}\nexport function resolveSchema(schema) {\n var rootSchema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var formData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (schema.hasOwnProperty(\"$ref\")) {\n return resolveReference(schema, rootSchema, formData);\n } else if (schema.hasOwnProperty(\"dependencies\")) {\n var resolvedSchema = resolveDependencies(schema, rootSchema, formData);\n return retrieveSchema(resolvedSchema, rootSchema, formData);\n } else if (schema.hasOwnProperty(\"allOf\")) {\n return _objectSpread({}, schema, {\n allOf: schema.allOf.map(function (allOfSubschema) {\n return retrieveSchema(allOfSubschema, rootSchema, formData);\n })\n });\n } else {\n // No $ref or dependencies attribute found, returning the original schema.\n return schema;\n }\n}\n\nfunction resolveReference(schema, rootSchema, formData) {\n // Retrieve the referenced schema definition.\n var $refSchema = findSchemaDefinition(schema.$ref, rootSchema); // Drop the $ref property of the source schema.\n\n var $ref = schema.$ref,\n localSchema = _objectWithoutProperties(schema, [\"$ref\"]); // Update referenced schema definition with local schema properties.\n\n\n return retrieveSchema(_objectSpread({}, $refSchema, localSchema), rootSchema, formData);\n}\n\nexport function retrieveSchema(schema) {\n var rootSchema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var formData = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (!isObject(schema)) {\n return {};\n }\n\n var resolvedSchema = resolveSchema(schema, rootSchema, formData);\n\n if (\"allOf\" in schema) {\n try {\n resolvedSchema = mergeAllOf(_objectSpread({}, resolvedSchema, {\n allOf: resolvedSchema.allOf\n }));\n } catch (e) {\n console.warn(\"could not merge subschemas in allOf:\\n\" + e);\n\n var _resolvedSchema = resolvedSchema,\n allOf = _resolvedSchema.allOf,\n resolvedSchemaWithoutAllOf = _objectWithoutProperties(_resolvedSchema, [\"allOf\"]);\n\n return resolvedSchemaWithoutAllOf;\n }\n }\n\n var hasAdditionalProperties = resolvedSchema.hasOwnProperty(\"additionalProperties\") && resolvedSchema.additionalProperties !== false;\n\n if (hasAdditionalProperties) {\n return stubExistingAdditionalProperties(resolvedSchema, rootSchema, formData);\n }\n\n return resolvedSchema;\n}\n\nfunction resolveDependencies(schema, rootSchema, formData) {\n // Drop the dependencies from the source schema.\n var _schema$dependencies = schema.dependencies,\n dependencies = _schema$dependencies === void 0 ? {} : _schema$dependencies,\n resolvedSchema = _objectWithoutProperties(schema, [\"dependencies\"]);\n\n if (\"oneOf\" in resolvedSchema) {\n resolvedSchema = resolvedSchema.oneOf[getMatchingOption(formData, resolvedSchema.oneOf, rootSchema)];\n } else if (\"anyOf\" in resolvedSchema) {\n resolvedSchema = resolvedSchema.anyOf[getMatchingOption(formData, resolvedSchema.anyOf, rootSchema)];\n }\n\n return processDependencies(dependencies, resolvedSchema, rootSchema, formData);\n}\n\nfunction processDependencies(dependencies, resolvedSchema, rootSchema, formData) {\n // Process dependencies updating the local schema properties as appropriate.\n for (var dependencyKey in dependencies) {\n // Skip this dependency if its trigger property is not present.\n if (formData[dependencyKey] === undefined) {\n continue;\n } // Skip this dependency if it is not included in the schema (such as when dependencyKey is itself a hidden dependency.)\n\n\n if (resolvedSchema.properties && !(dependencyKey in resolvedSchema.properties)) {\n continue;\n }\n\n var dependencyValue = dependencies[dependencyKey],\n remainingDependencies = _objectWithoutProperties(dependencies, [dependencyKey].map(_toPropertyKey));\n\n if (_Array$isArray(dependencyValue)) {\n resolvedSchema = withDependentProperties(resolvedSchema, dependencyValue);\n } else if (isObject(dependencyValue)) {\n resolvedSchema = withDependentSchema(resolvedSchema, rootSchema, formData, dependencyKey, dependencyValue);\n }\n\n return processDependencies(remainingDependencies, resolvedSchema, rootSchema, formData);\n }\n\n return resolvedSchema;\n}\n\nfunction withDependentProperties(schema, additionallyRequired) {\n if (!additionallyRequired) {\n return schema;\n }\n\n var required = _Array$isArray(schema.required) ? _Array$from(new _Set([].concat(_toConsumableArray(schema.required), _toConsumableArray(additionallyRequired)))) : additionallyRequired;\n return _objectSpread({}, schema, {\n required: required\n });\n}\n\nfunction withDependentSchema(schema, rootSchema, formData, dependencyKey, dependencyValue) {\n var _retrieveSchema = retrieveSchema(dependencyValue, rootSchema, formData),\n oneOf = _retrieveSchema.oneOf,\n dependentSchema = _objectWithoutProperties(_retrieveSchema, [\"oneOf\"]);\n\n schema = mergeSchemas(schema, dependentSchema); // Since it does not contain oneOf, we return the original schema.\n\n if (oneOf === undefined) {\n return schema;\n } else if (!_Array$isArray(oneOf)) {\n throw new Error(\"invalid: it is some \".concat(_typeof(oneOf), \" instead of an array\"));\n } // Resolve $refs inside oneOf.\n\n\n var resolvedOneOf = oneOf.map(function (subschema) {\n return subschema.hasOwnProperty(\"$ref\") ? resolveReference(subschema, rootSchema, formData) : subschema;\n });\n return withExactlyOneSubschema(schema, rootSchema, formData, dependencyKey, resolvedOneOf);\n}\n\nfunction withExactlyOneSubschema(schema, rootSchema, formData, dependencyKey, oneOf) {\n var validSubschemas = oneOf.filter(function (subschema) {\n if (!subschema.properties) {\n return false;\n }\n\n var conditionPropertySchema = subschema.properties[dependencyKey];\n\n if (conditionPropertySchema) {\n var conditionSchema = {\n type: \"object\",\n properties: _defineProperty({}, dependencyKey, conditionPropertySchema)\n };\n\n var _validateFormData = validateFormData(formData, conditionSchema),\n errors = _validateFormData.errors;\n\n return errors.length === 0;\n }\n });\n\n if (validSubschemas.length !== 1) {\n console.warn(\"ignoring oneOf in dependencies because there isn't exactly one subschema that is valid\");\n return schema;\n }\n\n var subschema = validSubschemas[0];\n\n var _subschema$properties = subschema.properties,\n conditionPropertySchema = _subschema$properties[dependencyKey],\n dependentSubschema = _objectWithoutProperties(_subschema$properties, [dependencyKey].map(_toPropertyKey));\n\n var dependentSchema = _objectSpread({}, subschema, {\n properties: dependentSubschema\n });\n\n return mergeSchemas(schema, retrieveSchema(dependentSchema, rootSchema, formData));\n} // Recursively merge deeply nested schemas.\n// The difference between mergeSchemas and mergeObjects\n// is that mergeSchemas only concats arrays for\n// values under the \"required\" keyword, and when it does,\n// it doesn't include duplicate values.\n\n\nexport function mergeSchemas(obj1, obj2) {\n var acc = _extends({}, obj1); // Prevent mutation of source object.\n\n\n return _Object$keys(obj2).reduce(function (acc, key) {\n var left = obj1 ? obj1[key] : {},\n right = obj2[key];\n\n if (obj1 && obj1.hasOwnProperty(key) && isObject(right)) {\n acc[key] = mergeSchemas(left, right);\n } else if (obj1 && obj2 && (getSchemaType(obj1) === \"object\" || getSchemaType(obj2) === \"object\") && key === \"required\" && _Array$isArray(left) && _Array$isArray(right)) {\n // Don't include duplicate values when merging\n // \"required\" fields.\n acc[key] = union(left, right);\n } else {\n acc[key] = right;\n }\n\n return acc;\n }, acc);\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) === \"[object Arguments]\";\n}\n\nexport function deepEquals(a, b) {\n var ca = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var cb = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : [];\n\n // Partially extracted from node-deeper and adapted to exclude comparison\n // checks for functions.\n // https://github.com/othiym23/node-deeper\n if (a === b) {\n return true;\n } else if (typeof a === \"function\" || typeof b === \"function\") {\n // Assume all functions are equivalent\n // see https://github.com/rjsf-team/react-jsonschema-form/issues/255\n return true;\n } else if (_typeof(a) !== \"object\" || _typeof(b) !== \"object\") {\n return false;\n } else if (a === null || b === null) {\n return false;\n } else if (a instanceof Date && b instanceof Date) {\n return a.getTime() === b.getTime();\n } else if (a instanceof RegExp && b instanceof RegExp) {\n return a.source === b.source && a.global === b.global && a.multiline === b.multiline && a.lastIndex === b.lastIndex && a.ignoreCase === b.ignoreCase;\n } else if (isArguments(a) || isArguments(b)) {\n if (!(isArguments(a) && isArguments(b))) {\n return false;\n }\n\n var slice = Array.prototype.slice;\n return deepEquals(slice.call(a), slice.call(b), ca, cb);\n } else {\n if (a.constructor !== b.constructor) {\n return false;\n }\n\n var ka = _Object$keys(a);\n\n var kb = _Object$keys(b); // don't bother with stack acrobatics if there's nothing there\n\n\n if (ka.length === 0 && kb.length === 0) {\n return true;\n }\n\n if (ka.length !== kb.length) {\n return false;\n }\n\n var cal = ca.length;\n\n while (cal--) {\n if (ca[cal] === a) {\n return cb[cal] === b;\n }\n }\n\n ca.push(a);\n cb.push(b);\n ka.sort();\n kb.sort();\n\n for (var j = ka.length - 1; j >= 0; j--) {\n if (ka[j] !== kb[j]) {\n return false;\n }\n }\n\n var key;\n\n for (var k = ka.length - 1; k >= 0; k--) {\n key = ka[k];\n\n if (!deepEquals(a[key], b[key], ca, cb)) {\n return false;\n }\n }\n\n ca.pop();\n cb.pop();\n return true;\n }\n}\nexport function shouldRender(comp, nextProps, nextState) {\n var props = comp.props,\n state = comp.state;\n return !deepEquals(props, nextProps) || !deepEquals(state, nextState);\n}\nexport function toIdSchema(schema, id, rootSchema) {\n var formData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var idPrefix = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : \"root\";\n var idSchema = {\n $id: id || idPrefix\n };\n\n if (\"$ref\" in schema || \"dependencies\" in schema || \"allOf\" in schema) {\n var _schema = retrieveSchema(schema, rootSchema, formData);\n\n return toIdSchema(_schema, id, rootSchema, formData, idPrefix);\n }\n\n if (\"items\" in schema && !schema.items.$ref) {\n return toIdSchema(schema.items, id, rootSchema, formData, idPrefix);\n }\n\n if (schema.type !== \"object\") {\n return idSchema;\n }\n\n for (var name in schema.properties || {}) {\n var field = schema.properties[name];\n var fieldId = idSchema.$id + \"_\" + name;\n idSchema[name] = toIdSchema(isObject(field) ? field : {}, fieldId, rootSchema, // It's possible that formData is not an object -- this can happen if an\n // array item has just been added, but not populated with data yet\n (formData || {})[name], idPrefix);\n }\n\n return idSchema;\n}\nexport function toPathSchema(schema) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n var rootSchema = arguments.length > 2 ? arguments[2] : undefined;\n var formData = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var pathSchema = {\n $name: name.replace(/^\\./, \"\")\n };\n\n if (\"$ref\" in schema || \"dependencies\" in schema || \"allOf\" in schema) {\n var _schema = retrieveSchema(schema, rootSchema, formData);\n\n return toPathSchema(_schema, name, rootSchema, formData);\n }\n\n if (schema.hasOwnProperty(\"additionalProperties\")) {\n pathSchema.__rjsf_additionalProperties = true;\n }\n\n if (schema.hasOwnProperty(\"items\") && _Array$isArray(formData)) {\n formData.forEach(function (element, i) {\n pathSchema[i] = toPathSchema(schema.items, \"\".concat(name, \".\").concat(i), rootSchema, element);\n });\n } else if (schema.hasOwnProperty(\"properties\")) {\n for (var property in schema.properties) {\n pathSchema[property] = toPathSchema(schema.properties[property], \"\".concat(name, \".\").concat(property), rootSchema, // It's possible that formData is not an object -- this can happen if an\n // array item has just been added, but not populated with data yet\n (formData || {})[property]);\n }\n }\n\n return pathSchema;\n}\nexport function parseDateString(dateString) {\n var includeTime = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n if (!dateString) {\n return {\n year: -1,\n month: -1,\n day: -1,\n hour: includeTime ? -1 : 0,\n minute: includeTime ? -1 : 0,\n second: includeTime ? -1 : 0\n };\n }\n\n var date = new Date(dateString);\n\n if (_Number$isNaN(date.getTime())) {\n throw new Error(\"Unable to parse date \" + dateString);\n }\n\n return {\n year: date.getUTCFullYear(),\n month: date.getUTCMonth() + 1,\n // oh you, javascript.\n day: date.getUTCDate(),\n hour: includeTime ? date.getUTCHours() : 0,\n minute: includeTime ? date.getUTCMinutes() : 0,\n second: includeTime ? date.getUTCSeconds() : 0\n };\n}\nexport function toDateString(_ref2) {\n var year = _ref2.year,\n month = _ref2.month,\n day = _ref2.day,\n _ref2$hour = _ref2.hour,\n hour = _ref2$hour === void 0 ? 0 : _ref2$hour,\n _ref2$minute = _ref2.minute,\n minute = _ref2$minute === void 0 ? 0 : _ref2$minute,\n _ref2$second = _ref2.second,\n second = _ref2$second === void 0 ? 0 : _ref2$second;\n var time = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var utcTime = Date.UTC(year, month - 1, day, hour, minute, second);\n var datetime = new Date(utcTime).toJSON();\n return time ? datetime : datetime.slice(0, 10);\n}\nexport function utcToLocal(jsonDate) {\n if (!jsonDate) {\n return \"\";\n } // required format of `\"yyyy-MM-ddThh:mm\" followed by optional \":ss\" or \":ss.SSS\"\n // https://html.spec.whatwg.org/multipage/input.html#local-date-and-time-state-(type%3Ddatetime-local)\n // > should be a _valid local date and time string_ (not GMT)\n // Note - date constructor passed local ISO-8601 does not correctly\n // change time to UTC in node pre-8\n\n\n var date = new Date(jsonDate);\n var yyyy = pad(date.getFullYear(), 4);\n var MM = pad(date.getMonth() + 1, 2);\n var dd = pad(date.getDate(), 2);\n var hh = pad(date.getHours(), 2);\n var mm = pad(date.getMinutes(), 2);\n var ss = pad(date.getSeconds(), 2);\n var SSS = pad(date.getMilliseconds(), 3);\n return \"\".concat(yyyy, \"-\").concat(MM, \"-\").concat(dd, \"T\").concat(hh, \":\").concat(mm, \":\").concat(ss, \".\").concat(SSS);\n}\nexport function localToUTC(dateString) {\n if (dateString) {\n return new Date(dateString).toJSON();\n }\n}\nexport function pad(num, size) {\n var s = String(num);\n\n while (s.length < size) {\n s = \"0\" + s;\n }\n\n return s;\n}\nexport function dataURItoBlob(dataURI) {\n // Split metadata from data\n var splitted = dataURI.split(\",\"); // Split params\n\n var params = splitted[0].split(\";\"); // Get mime-type from params\n\n var type = params[0].replace(\"data:\", \"\"); // Filter the name property from params\n\n var properties = params.filter(function (param) {\n return param.split(\"=\")[0] === \"name\";\n }); // Look for the name and use unknown if no name property.\n\n var name;\n\n if (properties.length !== 1) {\n name = \"unknown\";\n } else {\n // Because we filtered out the other property,\n // we only have the name case here.\n name = properties[0].split(\"=\")[1];\n } // Built the Uint8Array Blob parameter from the base64 string.\n\n\n var binary = atob(splitted[1]);\n var array = [];\n\n for (var i = 0; i < binary.length; i++) {\n array.push(binary.charCodeAt(i));\n } // Create the blob object\n\n\n var blob = new window.Blob([new Uint8Array(array)], {\n type: type\n });\n return {\n blob: blob,\n name: name\n };\n}\nexport function rangeSpec(schema) {\n var spec = {};\n\n if (schema.multipleOf) {\n spec.step = schema.multipleOf;\n }\n\n if (schema.minimum || schema.minimum === 0) {\n spec.min = schema.minimum;\n }\n\n if (schema.maximum || schema.maximum === 0) {\n spec.max = schema.maximum;\n }\n\n return spec;\n}\nexport function getMatchingOption(formData, options, rootSchema) {\n for (var i = 0; i < options.length; i++) {\n var option = options[i]; // If the schema describes an object then we need to add slightly more\n // strict matching to the schema, because unless the schema uses the\n // \"requires\" keyword, an object will match the schema as long as it\n // doesn't have matching keys with a conflicting type. To do this we use an\n // \"anyOf\" with an array of requires. This augmentation expresses that the\n // schema should match if any of the keys in the schema are present on the\n // object and pass validation.\n\n if (option.properties) {\n // Create an \"anyOf\" schema that requires at least one of the keys in the\n // \"properties\" object\n var requiresAnyOf = {\n anyOf: _Object$keys(option.properties).map(function (key) {\n return {\n required: [key]\n };\n })\n };\n var augmentedSchema = void 0; // If the \"anyOf\" keyword already exists, wrap the augmentation in an \"allOf\"\n\n if (option.anyOf) {\n // Create a shallow clone of the option\n var shallowClone = _extends({}, option);\n\n if (!shallowClone.allOf) {\n shallowClone.allOf = [];\n } else {\n // If \"allOf\" already exists, shallow clone the array\n shallowClone.allOf = shallowClone.allOf.slice();\n }\n\n shallowClone.allOf.push(requiresAnyOf);\n augmentedSchema = shallowClone;\n } else {\n augmentedSchema = _extends({}, option, requiresAnyOf);\n } // Remove the \"required\" field as it's likely that not all fields have\n // been filled in yet, which will mean that the schema is not valid\n\n\n delete augmentedSchema.required;\n\n if (isValid(augmentedSchema, formData)) {\n return i;\n }\n } else if (isValid(options[i], formData)) {\n return i;\n }\n }\n\n return 0;\n}","/**\n * Defines types of Cell\n * @hidden\n */\nexport var CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n * @hidden\n */\nexport var RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n * @hidden\n */\nexport var ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n * @hidden\n */\nexport var ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n * @hidden\n */\nexport var ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n","module.exports = require(\"regenerator-runtime\");\n","/**\n * Specifies the chart constant value\n */\n/** @private */\nexport var loaded = 'loaded';\n/** @private */\nexport var legendClick = 'legendClick';\n/** @private */\nexport var load = 'load';\n/** @private */\nexport var animationComplete = 'animationComplete';\n/** @private */\nexport var legendRender = 'legendRender';\n/** @private */\nexport var textRender = 'textRender';\n/** @private */\nexport var pointRender = 'pointRender';\n/** @private */\nexport var sharedTooltipRender = 'sharedTooltipRender';\n/** @private */\nexport var seriesRender = 'seriesRender';\n/** @private */\nexport var axisLabelRender = 'axisLabelRender';\n/** @private */\nexport var axisLabelClick = 'axisLabelClick';\n/** @private */\nexport var axisRangeCalculated = 'axisRangeCalculated';\n/** @private */\nexport var axisMultiLabelRender = 'axisMultiLabelRender';\n/** @private */\nexport var tooltipRender = 'tooltipRender';\n/** @private */\nexport var chartMouseMove = 'chartMouseMove';\n/** @private */\nexport var chartMouseClick = 'chartMouseClick';\n/** @private */\nexport var pointClick = 'pointClick';\n/** @private */\nexport var pointDoubleClick = 'pointDoubleClick';\n/** @private */\nexport var pointMove = 'pointMove';\n/** @private */\nexport var chartMouseLeave = 'chartMouseLeave';\n/** @private */\nexport var chartMouseDown = 'chartMouseDown';\n/** @private */\nexport var chartMouseUp = 'chartMouseUp';\n/** @private */\nexport var zoomComplete = 'zoomComplete';\n/** @private */\nexport var dragComplete = 'dragComplete';\n/** @private */\nexport var selectionComplete = 'selectionComplete';\n/** @private */\nexport var resized = 'resized';\n/** @private */\nexport var beforeResize = 'beforeResize';\n/** @private */\nexport var beforePrint = 'beforePrint';\n/** @private */\nexport var annotationRender = 'annotationRender';\n/** @private */\nexport var scrollStart = 'scrollStart';\n/** @private */\nexport var scrollEnd = 'scrollEnd';\n/** @private */\nexport var scrollChanged = 'scrollChanged';\n/** @private */\nexport var stockEventRender = 'stockEventRender';\n/** @private */\nexport var multiLevelLabelClick = 'multiLevelLabelClick';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragEnd = 'dragEnd';\n/*** @private*/\nexport var regSub = /~\\d+~/g;\n/*** @private*/\nexport var regSup = /\\^\\d+\\^/g;\n/** @private */\nexport var beforeExport = 'beforeExport';\n/** @private */\nexport var afterExport = 'afterExport';\n/** @private */\nexport var bulletChartMouseClick = 'chartMouseClick';\n/** @private */\nexport var onZooming = 'onZooming';\n","import defineProperty from \"./defineProperty\";\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nexport default function _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Theme } from '../model/theme';\n/**\n * Defines the appearance of the connectors\n */\nvar Connector = /** @class */ (function (_super) {\n __extends(Connector, _super);\n function Connector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Line')\n ], Connector.prototype, \"type\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Connector.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Connector.prototype, \"length\", void 0);\n __decorate([\n Property('')\n ], Connector.prototype, \"dashArray\", void 0);\n return Connector;\n}(ChildProperty));\nexport { Connector };\n/**\n * Configures the fonts in charts.\n */\nvar Font = /** @class */ (function (_super) {\n __extends(Font, _super);\n function Font() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('16px')\n ], Font.prototype, \"size\", void 0);\n __decorate([\n Property('Normal')\n ], Font.prototype, \"fontWeight\", void 0);\n __decorate([\n Property('')\n ], Font.prototype, \"color\", void 0);\n __decorate([\n Property('Center')\n ], Font.prototype, \"textAlignment\", void 0);\n __decorate([\n Property('Segoe UI')\n ], Font.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(1)\n ], Font.prototype, \"opacity\", void 0);\n __decorate([\n Property('Trim')\n ], Font.prototype, \"textOverflow\", void 0);\n return Font;\n}(ChildProperty));\nexport { Font };\n/**\n * Configures the borders in the chart.\n */\nvar Border = /** @class */ (function (_super) {\n __extends(Border, _super);\n function Border() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Border.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], Border.prototype, \"width\", void 0);\n return Border;\n}(ChildProperty));\nexport { Border };\n/**\n * Configures the marker position in the chart.\n */\nvar Offset = /** @class */ (function (_super) {\n __extends(Offset, _super);\n function Offset() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Offset.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Offset.prototype, \"y\", void 0);\n return Offset;\n}(ChildProperty));\nexport { Offset };\n/**\n * Configures the chart area.\n */\nvar ChartArea = /** @class */ (function (_super) {\n __extends(ChartArea, _super);\n function ChartArea() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({}, Border)\n ], ChartArea.prototype, \"border\", void 0);\n __decorate([\n Property('transparent')\n ], ChartArea.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], ChartArea.prototype, \"opacity\", void 0);\n __decorate([\n Property(null)\n ], ChartArea.prototype, \"backgroundImage\", void 0);\n return ChartArea;\n}(ChildProperty));\nexport { ChartArea };\n/**\n * Configures the chart margins.\n */\nvar Margin = /** @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(10)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(10)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\nexport { Margin };\n/**\n * Configures the chart Legend Container Padding.\n */\nvar ContainerPadding = /** @class */ (function (_super) {\n __extends(ContainerPadding, _super);\n function ContainerPadding() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], ContainerPadding.prototype, \"bottom\", void 0);\n return ContainerPadding;\n}(ChildProperty));\nexport { ContainerPadding };\n/**\n * Configures the animation behavior for chart series.\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], Animation.prototype, \"enable\", void 0);\n __decorate([\n Property(1000)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Series and point index\n * @public\n */\nvar Indexes = /** @class */ (function (_super) {\n __extends(Indexes, _super);\n function Indexes() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Indexes.prototype, \"series\", void 0);\n __decorate([\n Property(0)\n ], Indexes.prototype, \"point\", void 0);\n return Indexes;\n}(ChildProperty));\nexport { Indexes };\n/**\n * Column series rounded corner options\n */\nvar CornerRadius = /** @class */ (function (_super) {\n __extends(CornerRadius, _super);\n function CornerRadius() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"topRight\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomLeft\", void 0);\n __decorate([\n Property(0)\n ], CornerRadius.prototype, \"bottomRight\", void 0);\n return CornerRadius;\n}(ChildProperty));\nexport { CornerRadius };\n/**\n * @private\n */\nvar Index = /** @class */ (function () {\n function Index(seriesIndex, pointIndex) {\n this.series = seriesIndex;\n this.point = pointIndex;\n }\n return Index;\n}());\nexport { Index };\n/**\n * Configures the Empty Points of series\n */\nvar EmptyPointSettings = /** @class */ (function (_super) {\n __extends(EmptyPointSettings, _super);\n function EmptyPointSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], EmptyPointSettings.prototype, \"fill\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 0 }, Border)\n ], EmptyPointSettings.prototype, \"border\", void 0);\n __decorate([\n Property('Gap')\n ], EmptyPointSettings.prototype, \"mode\", void 0);\n return EmptyPointSettings;\n}(ChildProperty));\nexport { EmptyPointSettings };\n/**\n * Configures the drag settings of series\n */\nvar DragSettings = /** @class */ (function (_super) {\n __extends(DragSettings, _super);\n function DragSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], DragSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"minY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"maxY\", void 0);\n __decorate([\n Property(null)\n ], DragSettings.prototype, \"fill\", void 0);\n return DragSettings;\n}(ChildProperty));\nexport { DragSettings };\n/**\n * Configures the ToolTips in the chart.\n * @public\n */\nvar TooltipSettings = /** @class */ (function (_super) {\n __extends(TooltipSettings, _super);\n function TooltipSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableMarker\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"shared\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"fill\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"header\", void 0);\n __decorate([\n Property(0.75)\n ], TooltipSettings.prototype, \"opacity\", void 0);\n __decorate([\n Complex(Theme.tooltipLabelFont, Font)\n ], TooltipSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], TooltipSettings.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], TooltipSettings.prototype, \"enableAnimation\", void 0);\n __decorate([\n Property(300)\n ], TooltipSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(1000)\n ], TooltipSettings.prototype, \"fadeOutDuration\", void 0);\n __decorate([\n Property(false)\n ], TooltipSettings.prototype, \"enableTextWrap\", void 0);\n __decorate([\n Complex({ color: '#cccccc', width: 0.5 }, Border)\n ], TooltipSettings.prototype, \"border\", void 0);\n return TooltipSettings;\n}(ChildProperty));\nexport { TooltipSettings };\n/**\n * button settings in period selector\n */\nvar Periods = /** @class */ (function (_super) {\n __extends(Periods, _super);\n function Periods() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Years')\n ], Periods.prototype, \"intervalType\", void 0);\n __decorate([\n Property(1)\n ], Periods.prototype, \"interval\", void 0);\n __decorate([\n Property(null)\n ], Periods.prototype, \"text\", void 0);\n __decorate([\n Property(false)\n ], Periods.prototype, \"selected\", void 0);\n return Periods;\n}(ChildProperty));\nexport { Periods };\n/**\n * Period Selector Settings\n */\nvar PeriodSelectorSettings = /** @class */ (function (_super) {\n __extends(PeriodSelectorSettings, _super);\n function PeriodSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(43)\n ], PeriodSelectorSettings.prototype, \"height\", void 0);\n __decorate([\n Property('Bottom')\n ], PeriodSelectorSettings.prototype, \"position\", void 0);\n __decorate([\n Collection([], Periods)\n ], PeriodSelectorSettings.prototype, \"periods\", void 0);\n return PeriodSelectorSettings;\n}(ChildProperty));\nexport { PeriodSelectorSettings };\n","import _Object$defineProperty from \"../../core-js/object/define-property\";\nexport default function _defineProperty(obj, key, value) {\n if (key in obj) {\n _Object$defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Date.prototype.toString.call(Reflect.construct(Date, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import getPrototypeOf from \"./getPrototypeOf\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn\";\nexport default function _createSuper(Derived) {\n return function () {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (isNativeReflectConstruct()) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}","import _Object$getOwnPropertyDescriptor from \"../../core-js/object/get-own-property-descriptor\";\nimport _Object$getOwnPropertySymbols from \"../../core-js/object/get-own-property-symbols\";\nimport _Object$keys from \"../../core-js/object/keys\";\nimport defineProperty from \"./defineProperty\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n\n var ownKeys = _Object$keys(source);\n\n if (typeof _Object$getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(_Object$getOwnPropertySymbols(source).filter(function (sym) {\n return _Object$getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","import _Object$assign from \"../../core-js/object/assign\";\nexport default function _extends() {\n _extends = _Object$assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","module.exports = require(\"core-js/library/fn/array/is-array\");","/* \n(The MIT License)\nCopyright (c) 2014-2021 Halász Ádám \nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n// Unique Hexatridecimal ID Generator\n// ================================================\n\n// Dependencies\n// ================================================\nvar pid = typeof process !== 'undefined' && process.pid ? process.pid.toString(36) : '' ;\nvar address = '';\nif(typeof __webpack_require__ !== 'function'){\n var mac = '', networkInterfaces = require('os').networkInterfaces();\n loop:\n for(let interface_key in networkInterfaces){\n const networkInterface = networkInterfaces[interface_key];\n const length = networkInterface.length;\n for(var i = 0; i < length; i++){\n if(networkInterface[i] !== undefined && networkInterface[i].mac && networkInterface[i].mac != '00:00:00:00:00:00'){\n mac = networkInterface[i].mac; break loop;\n }\n }\n }\n address = mac ? parseInt(mac.replace(/\\:|\\D+/gi, '')).toString(36) : '' ;\n} \n\n// Exports\n// ================================================\nmodule.exports = module.exports.default = function(prefix, suffix){ return (prefix ? prefix : '') + address + pid + now().toString(36) + (suffix ? suffix : ''); }\nmodule.exports.process = function(prefix, suffix){ return (prefix ? prefix : '') + pid + now().toString(36) + (suffix ? suffix : ''); }\nmodule.exports.time = function(prefix, suffix){ return (prefix ? prefix : '') + now().toString(36) + (suffix ? suffix : ''); }\n\n// Helpers\n// ================================================\nfunction now(){\n var time = Date.now();\n var last = now.last || time;\n return now.last = time > last ? time : last + 1;\n}\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","module.exports = require(\"core-js/library/fn/object/keys\");","import { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n * @param {string|string[]} from?\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var isAnd;\n var ret;\n if (!this.isComplex && this.comparer) {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n isAnd = this.condition === 'and';\n for (var i = 0; i < predicate.length; i++) {\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","var core = module.exports = { version: '2.6.11' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n","import _Object$getOwnPropertySymbols from \"../../core-js/object/get-own-property-symbols\";\nimport objectWithoutPropertiesLoose from \"./objectWithoutPropertiesLoose\";\nexport default function _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (_Object$getOwnPropertySymbols) {\n var sourceSymbolKeys = _Object$getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}","import _Object$keys from \"../../core-js/object/keys\";\nexport default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n\n var sourceKeys = _Object$keys(source);\n\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","import createNamedContext from \"./createNameContext\";\n\nconst historyContext = /*#__PURE__*/ createNamedContext(\"Router-History\");\nexport default historyContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nexport default createNamedContext;\n","// TODO: Replace with React.createContext once we can assume React 16+\nimport createContext from \"mini-create-react-context\";\n\nconst createNamedContext = name => {\n const context = createContext();\n context.displayName = name;\n\n return context;\n};\n\nconst context = /*#__PURE__*/ createNamedContext(\"Router\");\nexport default context;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\nimport HistoryContext from \"./HistoryContext.js\";\nimport RouterContext from \"./RouterContext.js\";\n\n/**\n * The public API for putting history on context.\n */\nclass Router extends React.Component {\n static computeRootMatch(pathname) {\n return { path: \"/\", url: \"/\", params: {}, isExact: pathname === \"/\" };\n }\n\n constructor(props) {\n super(props);\n\n this.state = {\n location: props.history.location\n };\n\n // This is a bit of a hack. We have to start listening for location\n // changes here in the constructor in case there are any s\n // on the initial render. If there are, they will replace/push when\n // they mount and since cDM fires in children before parents, we may\n // get a new location before the is mounted.\n this._isMounted = false;\n this._pendingLocation = null;\n\n if (!props.staticContext) {\n this.unlisten = props.history.listen(location => {\n if (this._isMounted) {\n this.setState({ location });\n } else {\n this._pendingLocation = location;\n }\n });\n }\n }\n\n componentDidMount() {\n this._isMounted = true;\n\n if (this._pendingLocation) {\n this.setState({ location: this._pendingLocation });\n }\n }\n\n componentWillUnmount() {\n if (this.unlisten) this.unlisten();\n }\n\n render() {\n return (\n \n \n \n );\n }\n}\n\nif (__DEV__) {\n Router.propTypes = {\n children: PropTypes.node,\n history: PropTypes.object.isRequired,\n staticContext: PropTypes.object\n };\n\n Router.prototype.componentDidUpdate = function(prevProps) {\n warning(\n prevProps.history === this.props.history,\n \"You cannot change \"\n );\n };\n}\n\nexport default Router;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createMemoryHistory as createHistory } from \"history\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\n/**\n * The public API for a that stores location in memory.\n */\nclass MemoryRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n MemoryRouter.propTypes = {\n initialEntries: PropTypes.array,\n initialIndex: PropTypes.number,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number,\n children: PropTypes.node\n };\n\n MemoryRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { MemoryRouter as Router }`.\"\n );\n };\n}\n\nexport default MemoryRouter;\n","import React from \"react\";\n\nclass Lifecycle extends React.Component {\n componentDidMount() {\n if (this.props.onMount) this.props.onMount.call(this, this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.onUpdate) this.props.onUpdate.call(this, this, prevProps);\n }\n\n componentWillUnmount() {\n if (this.props.onUnmount) this.props.onUnmount.call(this, this);\n }\n\n render() {\n return null;\n }\n}\n\nexport default Lifecycle;\n","import pathToRegexp from \"path-to-regexp\";\n\nconst cache = {};\nconst cacheLimit = 10000;\nlet cacheCount = 0;\n\nfunction compilePath(path, options) {\n const cacheKey = `${options.end}${options.strict}${options.sensitive}`;\n const pathCache = cache[cacheKey] || (cache[cacheKey] = {});\n\n if (pathCache[path]) return pathCache[path];\n\n const keys = [];\n const regexp = pathToRegexp(path, keys, options);\n const result = { regexp, keys };\n\n if (cacheCount < cacheLimit) {\n pathCache[path] = result;\n cacheCount++;\n }\n\n return result;\n}\n\n/**\n * Public API for matching a URL pathname to a path.\n */\nfunction matchPath(pathname, options = {}) {\n if (typeof options === \"string\" || Array.isArray(options)) {\n options = { path: options };\n }\n\n const { path, exact = false, strict = false, sensitive = false } = options;\n\n const paths = [].concat(path);\n\n return paths.reduce((matched, path) => {\n if (!path && path !== \"\") return null;\n if (matched) return matched;\n\n const { regexp, keys } = compilePath(path, {\n end: exact,\n strict,\n sensitive\n });\n const match = regexp.exec(pathname);\n\n if (!match) return null;\n\n const [url, ...values] = match;\n const isExact = pathname === url;\n\n if (exact && !isExact) return null;\n\n return {\n path, // the path used to match\n url: path === \"/\" && url === \"\" ? \"/\" : url, // the matched portion of the URL\n isExact, // whether or not we matched exactly\n params: keys.reduce((memo, key, index) => {\n memo[key.name] = values[index];\n return memo;\n }, {})\n };\n }, null);\n}\n\nexport default matchPath;\n","import React from \"react\";\nimport { isValidElementType } from \"react-is\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nfunction isEmptyChildren(children) {\n return React.Children.count(children) === 0;\n}\n\nfunction evalChildrenDev(children, props, path) {\n const value = children(props);\n\n warning(\n value !== undefined,\n \"You returned `undefined` from the `children` function of \" +\n `, but you ` +\n \"should have returned a React element or `null`\"\n );\n\n return value || null;\n}\n\n/**\n * The public API for matching a single path and rendering.\n */\nclass Route extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n const match = this.props.computedMatch\n ? this.props.computedMatch // already computed the match for us\n : this.props.path\n ? matchPath(location.pathname, this.props)\n : context.match;\n\n const props = { ...context, location, match };\n\n let { children, component, render } = this.props;\n\n // Preact uses an empty array as children by\n // default, so use null if that's the case.\n if (Array.isArray(children) && children.length === 0) {\n children = null;\n }\n\n return (\n \n {props.match\n ? children\n ? typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : children\n : component\n ? React.createElement(component, props)\n : render\n ? render(props)\n : null\n : typeof children === \"function\"\n ? __DEV__\n ? evalChildrenDev(children, props, this.props.path)\n : children(props)\n : null}\n \n );\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Route.propTypes = {\n children: PropTypes.oneOfType([PropTypes.func, PropTypes.node]),\n component: (props, propName) => {\n if (props[propName] && !isValidElementType(props[propName])) {\n return new Error(\n `Invalid prop 'component' supplied to 'Route': the prop is not a valid React component`\n );\n }\n },\n exact: PropTypes.bool,\n location: PropTypes.object,\n path: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string)\n ]),\n render: PropTypes.func,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool\n };\n\n Route.prototype.componentDidMount = function() {\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.component\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(\n this.props.children &&\n !isEmptyChildren(this.props.children) &&\n this.props.render\n ),\n \"You should not use and in the same route; will be ignored\"\n );\n\n warning(\n !(this.props.component && this.props.render),\n \"You should not use and in the same route; will be ignored\"\n );\n };\n\n Route.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Route;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { createLocation, createPath } from \"history\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport Router from \"./Router.js\";\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === \"/\" ? path : \"/\" + path;\n}\n\nfunction addBasename(basename, location) {\n if (!basename) return location;\n\n return {\n ...location,\n pathname: addLeadingSlash(basename) + location.pathname\n };\n}\n\nfunction stripBasename(basename, location) {\n if (!basename) return location;\n\n const base = addLeadingSlash(basename);\n\n if (location.pathname.indexOf(base) !== 0) return location;\n\n return {\n ...location,\n pathname: location.pathname.substr(base.length)\n };\n}\n\nfunction createURL(location) {\n return typeof location === \"string\" ? location : createPath(location);\n}\n\nfunction staticHandler(methodName) {\n return () => {\n invariant(false, \"You cannot %s with \", methodName);\n };\n}\n\nfunction noop() {}\n\n/**\n * The public top-level API for a \"static\" , so-called because it\n * can't actually change the current location. Instead, it just records\n * location changes in a context object. Useful mainly in testing and\n * server-rendering scenarios.\n */\nclass StaticRouter extends React.Component {\n navigateTo(location, action) {\n const { basename = \"\", context = {} } = this.props;\n context.action = action;\n context.location = addBasename(basename, createLocation(location));\n context.url = createURL(context.location);\n }\n\n handlePush = location => this.navigateTo(location, \"PUSH\");\n handleReplace = location => this.navigateTo(location, \"REPLACE\");\n handleListen = () => noop;\n handleBlock = () => noop;\n\n render() {\n const { basename = \"\", context = {}, location = \"/\", ...rest } = this.props;\n\n const history = {\n createHref: path => addLeadingSlash(basename + createURL(path)),\n action: \"POP\",\n location: stripBasename(basename, createLocation(location)),\n push: this.handlePush,\n replace: this.handleReplace,\n go: staticHandler(\"go\"),\n goBack: staticHandler(\"goBack\"),\n goForward: staticHandler(\"goForward\"),\n listen: this.handleListen,\n block: this.handleBlock\n };\n\n return ;\n }\n}\n\nif (__DEV__) {\n StaticRouter.propTypes = {\n basename: PropTypes.string,\n context: PropTypes.object,\n location: PropTypes.oneOfType([PropTypes.string, PropTypes.object])\n };\n\n StaticRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { StaticRouter as Router }`.\"\n );\n };\n}\n\nexport default StaticRouter;\n","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport warning from \"tiny-warning\";\n\nimport RouterContext from \"./RouterContext.js\";\nimport matchPath from \"./matchPath.js\";\n\n/**\n * The public API for rendering the first that matches.\n */\nclass Switch extends React.Component {\n render() {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const location = this.props.location || context.location;\n\n let element, match;\n\n // We use React.Children.forEach instead of React.Children.toArray().find()\n // here because toArray adds keys to all child elements and we do not want\n // to trigger an unmount/remount for two s that render the same\n // component at different URLs.\n React.Children.forEach(this.props.children, child => {\n if (match == null && React.isValidElement(child)) {\n element = child;\n\n const path = child.props.path || child.props.from;\n\n match = path\n ? matchPath(location.pathname, { ...child.props, path })\n : context.match;\n }\n });\n\n return match\n ? React.cloneElement(element, { location, computedMatch: match })\n : null;\n }}\n \n );\n }\n}\n\nif (__DEV__) {\n Switch.propTypes = {\n children: PropTypes.node,\n location: PropTypes.object\n };\n\n Switch.prototype.componentDidUpdate = function(prevProps) {\n warning(\n !(this.props.location && !prevProps.location),\n ' elements should not change from uncontrolled to controlled (or vice versa). You initially used no \"location\" prop and then provided one on a subsequent render.'\n );\n\n warning(\n !(!this.props.location && prevProps.location),\n ' elements should not change from controlled to uncontrolled (or vice versa). You provided a \"location\" prop initially but omitted it on a subsequent render.'\n );\n };\n}\n\nexport default Switch;\n","import React from \"react\";\nimport invariant from \"tiny-invariant\";\n\nimport Context from \"./RouterContext.js\";\nimport HistoryContext from \"./HistoryContext.js\";\nimport matchPath from \"./matchPath.js\";\n\nconst useContext = React.useContext;\n\nexport function useHistory() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useHistory()\"\n );\n }\n\n return useContext(HistoryContext);\n}\n\nexport function useLocation() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useLocation()\"\n );\n }\n\n return useContext(Context).location;\n}\n\nexport function useParams() {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useParams()\"\n );\n }\n\n const match = useContext(Context).match;\n return match ? match.params : {};\n}\n\nexport function useRouteMatch(path) {\n if (__DEV__) {\n invariant(\n typeof useContext === \"function\",\n \"You must use React >= 16.8 in order to use useRouteMatch()\"\n );\n }\n\n const location = useLocation();\n const match = useContext(Context).match;\n\n return path ? matchPath(location.pathname, path) : match;\n}\n","!function(t,e){if(\"object\"==typeof exports&&\"object\"==typeof module)module.exports=e();else if(\"function\"==typeof define&&define.amd)define([],e);else{var n=e();for(var i in n)(\"object\"==typeof exports?exports:t)[i]=n[i]}}(this,function(){return function(t){var e={};function n(i){if(e[i])return e[i].exports;var r=e[i]={i:i,l:!1,exports:{}};return t[i].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var r in t)n.d(i,r,function(e){return t[e]}.bind(null,r));return i},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=2)}([function(t,e,n){t.exports=n(3)()},function(t,e){t.exports=require(\"react\")},function(t,e,n){\"use strict\";n.r(e),n.d(e,\"default\",function(){return f});var i=n(1),r=n.n(i),o=n(0),s=n.n(o);function a(t){return(a=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function l(t,e){for(var n=0;n= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { merge, isNullOrUndefined, extend, Property } from '@syncfusion/ej2-base';\nimport { isBlazor } from '@syncfusion/ej2-base';\nimport { Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getUid, templateCompiler, getForeignData, getObject } from '../base/util';\n/**\n * Represents Grid `Column` model class.\n */\nvar Column = /** @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/#custom-component-in-filter-menu) for its customization.\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /** @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /** @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = (isBlazor() && !isNullOrUndefined(this.template) && isNullOrUndefined(this.field)) ? 'none' : null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || options.format.format)) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', isBlazor() ? ' ' : 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] === 'columns') {\n col[keys[i]] = [];\n for (var j = 0; j < _this[keys[i]].length; j++) {\n col[keys[i]].push(_this[keys[i]][j].toJSON());\n }\n }\n else if (skip.indexOf(keys[i]) < 0) {\n col[keys[i]] = _this[keys[i]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function comparer(x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /** @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /** @hidden */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /** @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /** @hidden */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[i]] = column[keys[i]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact && keys[i] === 'template') {\n this.parent.refreshReactColumnTemplateByUid(this.uid);\n }\n }\n };\n /**\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /** @hidden */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /** @hidden */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /** @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /** @hidden */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /** @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /** @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /** @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /** @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\nexport { Column };\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\nexport { CommandColumnModel };\n","export default function _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import _Object$defineProperty from \"../../core-js/object/define-property\";\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n\n _Object$defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","import _typeof from \"../../helpers/esm/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","import _Object$getPrototypeOf from \"../../core-js/object/get-prototype-of\";\nimport _Object$setPrototypeOf from \"../../core-js/object/set-prototype-of\";\nexport default function _getPrototypeOf(o) {\n _getPrototypeOf = _Object$setPrototypeOf ? _Object$getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || _Object$getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import _Object$setPrototypeOf from \"../../core-js/object/set-prototype-of\";\nexport default function _setPrototypeOf(o, p) {\n _setPrototypeOf = _Object$setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import _Object$create from \"../../core-js/object/create\";\nimport setPrototypeOf from \"./setPrototypeOf\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = _Object$create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar reactUid = 0;\nvar isColEName = new RegExp('\\]');\n// tslint:disable\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n // tslint:disable-next-line:no-any\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.renderReactTemplates();\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n // tslint:disable-next-line:no-any\n /**\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n /**\n * @private\n */\n ComponentBase.prototype.updateProperties = function (nextProps, silent) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[propkey]) &&\n this.htmlattributes[propkey] !== dProps[propkey]) {\n this.htmlattributes[propkey] = dProps[propkey];\n }\n if (this.compareValues(this.props[propkey], nextProps[propkey])) {\n delete dProps[propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.element.classList.remove(this.props[propkey]);\n this.element.classList.add(dProps[propkey]);\n }\n else if (propkey !== 'disabled') {\n delete dProps[propkey];\n }\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || this.props.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n if (Object.keys(dProps).length) {\n if (!silent) {\n // tslint:disable-next-line:no-any\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n this.refreshChild(silent, nextProps);\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n var PropVal = compTemplate[prop];\n if (curObject[prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1) {\n if (this.htmlattributes[prop] !== this.props[prop]) {\n this.htmlattributes[prop] = this.props[prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n }\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n });\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[i];\n var newProp = newProps[i];\n var keys = Object.keys(newProp);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[key];\n var newValue = newProp[key];\n if (!oldProp.hasOwnProperty(key) || !this.compareValues(newValue, oldValue)) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[key] = newValue;\n }\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n var key = dKeys[i];\n if (!directiveValue.hasOwnProperty(key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[key], directiveValue[key], key);\n if (compareOutput.status) {\n delete directiveValue[key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[key] = directiveValue[key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance = getValue(changes.key + '.' + changes.index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changes.value);\n }\n else {\n extend(propInstance, changes.value);\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && document.body.contains(this.element) && !this.isDestroyed) {\n this.destroy();\n }\n };\n // tslint:disable:no-any \n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n ;\n // tslint:disable:no-any \n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var indexCount = 0;\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (index && _this.portals[tempPortal[index[indexCount]]].propName == propName) {\n _this.portals.splice(index, 1);\n indexCount++;\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[i].propName == propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n ;\n /* tslint:disable:no-any */\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[ifield];\n if (ifield && mapper) {\n // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n /* tslint:disable:no-any */\n if (child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n/* tslint:enable:no-any */\n","// tslint:disable-next-line:no-any\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState') {\n derivedClass.prototype[name] = baseClass.prototype[name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // tslint:disable-next-line:no-any\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, detach, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n// tslint:disable:no-any\nvar stringCompiler = getTemplateEngine();\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string') {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n if (component && component.isLegacyTemplate) {\n ReactDOM.render(actTemplate(actData), cEle);\n if (!element) {\n detach(cEle);\n }\n }\n else {\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n (positionY + positionX === 'topright') ? popupRect = undefined : popupRect = targetValues;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\nfunction setPosx(value, pos) {\n pos.left = value;\n}\nfunction setPosy(value, pos) {\n pos.top = value;\n}\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n return pos;\n}\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\nfunction getElementRight() {\n return elementRect.right + getBodyScrollLeft() - (popupRect ? popupRect.width : 0);\n}\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n","import _Symbol$iterator from \"../../core-js/symbol/iterator\";\nimport _Symbol from \"../../core-js/symbol\";\nexport default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof _Symbol === \"function\" && typeof _Symbol$iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof _Symbol === \"function\" && obj.constructor === _Symbol && obj !== _Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n return store[name] || (store[name] =\n USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","/**\n * Numeric Range.\n * @private\n */\nvar DoubleRange = /** @class */ (function () {\n function DoubleRange(start, end) {\n /*\n if (!isNaN(start) && !isNaN(end)) {\n this.mIsEmpty = true;\n } else {\n this.mIsEmpty = false;\n }*/\n if (start < end) {\n this.mStart = start;\n this.mEnd = end;\n }\n else {\n this.mStart = end;\n this.mEnd = start;\n }\n }\n Object.defineProperty(DoubleRange.prototype, \"start\", {\n //private mIsEmpty: boolean;\n /** @private */\n get: function () {\n return this.mStart;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"end\", {\n /** @private */\n get: function () {\n return this.mEnd;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"delta\", {\n /*\n get isEmpty(): boolean {\n return this.mIsEmpty;\n }*/\n /** @private */\n get: function () {\n return (this.mEnd - this.mStart);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DoubleRange.prototype, \"median\", {\n /** @private */\n get: function () {\n return this.mStart + (this.mEnd - this.mStart) / 2;\n },\n enumerable: true,\n configurable: true\n });\n return DoubleRange;\n}());\nexport { DoubleRange };\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import _Array$isArray from \"../../core-js/array/is-array\";\nimport arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (_Array$isArray(arr)) return arrayLikeToArray(arr);\n}","import _Array$from from \"../../core-js/array/from\";\nimport _isIterable from \"../../core-js/is-iterable\";\nimport _Symbol from \"../../core-js/symbol\";\nexport default function _iterableToArray(iter) {\n if (typeof _Symbol !== \"undefined\" && _isIterable(Object(iter))) return _Array$from(iter);\n}","import _Array$from from \"../../core-js/array/from\";\nimport arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return _Array$from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","export default function _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n throw new Error(prefix + \": \" + (message || ''));\n}\n\nexport default invariant;\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/**\n * AccumulationChart base file\n */\nimport { Property, ChildProperty, Complex, createElement } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue } from '@syncfusion/ej2-base';\nimport { DataManager } from '@syncfusion/ej2-data';\nimport { Border, Font, Animation, EmptyPointSettings, Connector } from '../../common/model/base';\nimport { Rect, PathOption } from '@syncfusion/ej2-svg-base';\nimport { stringToNumber, appendChildElement } from '../../common/utils/helper';\nimport { seriesRender, pointRender } from '../../common/model/constants';\nimport { getSeriesColor } from '../../common/model/theme';\nimport { getElement, firstToLowerCase } from '../../common/utils/helper';\n/**\n * Annotation for accumulation series\n */\nvar AccumulationAnnotationSettings = /** @class */ (function (_super) {\n __extends(AccumulationAnnotationSettings, _super);\n function AccumulationAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AccumulationAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('0')\n ], AccumulationAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], AccumulationAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property('Pixel')\n ], AccumulationAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], AccumulationAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], AccumulationAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property('Center')\n ], AccumulationAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property(null)\n ], AccumulationAnnotationSettings.prototype, \"description\", void 0);\n return AccumulationAnnotationSettings;\n}(ChildProperty));\nexport { AccumulationAnnotationSettings };\n/**\n * Configures the dataLabel in accumulation chart.\n */\nvar AccumulationDataLabelSettings = /** @class */ (function (_super) {\n __extends(AccumulationDataLabelSettings, _super);\n function AccumulationDataLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], AccumulationDataLabelSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(true)\n ], AccumulationDataLabelSettings.prototype, \"showZero\", void 0);\n __decorate([\n Property(null)\n ], AccumulationDataLabelSettings.prototype, \"name\", void 0);\n __decorate([\n Property('transparent')\n ], AccumulationDataLabelSettings.prototype, \"fill\", void 0);\n __decorate([\n Property('Inside')\n ], AccumulationDataLabelSettings.prototype, \"position\", void 0);\n __decorate([\n Property(5)\n ], AccumulationDataLabelSettings.prototype, \"rx\", void 0);\n __decorate([\n Property(5)\n ], AccumulationDataLabelSettings.prototype, \"ry\", void 0);\n __decorate([\n Property(0)\n ], AccumulationDataLabelSettings.prototype, \"angle\", void 0);\n __decorate([\n Property(false)\n ], AccumulationDataLabelSettings.prototype, \"enableRotation\", void 0);\n __decorate([\n Complex({ width: null, color: null }, Border)\n ], AccumulationDataLabelSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ size: '11px', color: '', fontStyle: 'Normal', fontWeight: 'Normal', fontFamily: 'Segoe UI' }, Font)\n ], AccumulationDataLabelSettings.prototype, \"font\", void 0);\n __decorate([\n Complex({}, Connector)\n ], AccumulationDataLabelSettings.prototype, \"connectorStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationDataLabelSettings.prototype, \"template\", void 0);\n return AccumulationDataLabelSettings;\n}(ChildProperty));\nexport { AccumulationDataLabelSettings };\n/**\n * Center value of the Pie series.\n */\nvar PieCenter = /** @class */ (function (_super) {\n __extends(PieCenter, _super);\n function PieCenter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('50%')\n ], PieCenter.prototype, \"x\", void 0);\n __decorate([\n Property('50%')\n ], PieCenter.prototype, \"y\", void 0);\n return PieCenter;\n}(ChildProperty));\nexport { PieCenter };\n/**\n * Points model for the series.\n * @public\n */\nvar AccPoints = /** @class */ (function () {\n function AccPoints() {\n /** accumulation point visibility */\n this.visible = true;\n /** accumulation point symbol location */\n this.symbolLocation = null;\n /** @private */\n this.region = null;\n /** @private */\n this.labelRegion = null;\n /** @private */\n this.labelVisible = true;\n this.regions = null;\n /** @private */\n this.isExplode = false;\n /** @private */\n this.isClubbed = false;\n /** @private */\n this.isSliced = false;\n /** @private */\n this.argsData = null;\n /** @private */\n this.isLabelUpdated = null;\n /** @private */\n this.initialLabelRegion = null;\n }\n return AccPoints;\n}());\nexport { AccPoints };\n/**\n * Configures the series in accumulation chart.\n */\nvar AccumulationSeries = /** @class */ (function (_super) {\n __extends(AccumulationSeries, _super);\n function AccumulationSeries() {\n /**\n * Specifies the dataSource for the series. It can be an array of JSON objects or an instance of DataManager.\n * ```html\n *
\n * ```\n * ```typescript\n * let dataManager: DataManager = new DataManager({\n * url: 'http://mvc.syncfusion.com/Services/Northwnd.svc/Tasks/'\n * });\n * let query: Query = new Query().take(50).where('Estimate', 'greaterThan', 0, false);\n * let pie: AccumulationChart = new AccumulationChart({\n * ...\n * series: [{\n * dataSource: dataManager,\n * xName: 'Id',\n * yName: 'Estimate',\n * query: query\n * }],\n * ...\n * });\n * pie.appendTo('#Pie');\n * ```\n * @default ''\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.points = [];\n /** @private */\n _this.clubbedPoints = [];\n /** @private */\n _this.sumOfPoints = 0;\n /** @private */\n _this.isRectSeries = true;\n /** @private */\n _this.clipRect = new Rect(0, 0, 0, 0);\n /** @private */\n _this.category = 'Series';\n /** @private */\n _this.rightSidePoints = [];\n /** @private */\n _this.leftSidePoints = [];\n return _this;\n }\n /** @private To refresh the Datamanager for series */\n AccumulationSeries.prototype.refreshDataManager = function (accumulation, render) {\n var _this = this;\n var dateSource = this.dataSource || accumulation.dataSource;\n if (!(dateSource instanceof DataManager) && isNullOrUndefined(this.query)) {\n this.dataManagerSuccess({ result: dateSource, count: dateSource.length }, accumulation, render);\n return;\n }\n var dataManager = this.dataModule.getData(this.dataModule.generateQuery().requiresCount());\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, accumulation); });\n };\n /**\n * To get points on dataManager is success\n * @private\n */\n AccumulationSeries.prototype.dataManagerSuccess = function (e, accumulation, render) {\n if (render === void 0) { render = true; }\n var argsData = {\n name: seriesRender, series: this, data: e.result,\n };\n accumulation.allowServerDataBinding = false;\n accumulation.trigger(seriesRender, argsData);\n this.resultData = e.result !== '' ? e.result : [];\n if (!accumulation.isBlazor && !render) {\n this.getPoints(this.resultData, accumulation); // To update datasource using onPropertyChanged method. incident id: 290690\n }\n // tslint:disable\n if ((++accumulation.seriesCounts === accumulation.visibleSeries.length && render) || (window['Blazor'] && !render && accumulation.seriesCounts === 1)) {\n this.getPoints(this.resultData, accumulation);\n accumulation.refreshChart();\n }\n };\n /** @private To find points from result data */\n AccumulationSeries.prototype.getPoints = function (result, accumulation) {\n var length = Object.keys(result).length;\n this.sumOfPoints = 0;\n if (length === 0) {\n return null;\n }\n this.findSumOfPoints(result);\n this.points = [];\n this.clubbedPoints = [];\n this.sumOfClub = 0;\n var point;\n var colors = this.palettes.length ? this.palettes : getSeriesColor(accumulation.theme);\n var clubValue = stringToNumber(this.groupTo, this.sumOfPoints);\n for (var i = 0; i < length; i++) {\n point = this.setPoints(result, i, colors, accumulation);\n var currentY = point.y;\n if (!this.isClub(point, clubValue, i)) {\n if (isNullOrUndefined(point.y)) {\n point.visible = false;\n }\n this.pushPoints(point, colors);\n }\n else {\n point.index = this.clubbedPoints.length;\n point.isExplode = true;\n this.clubbedPoints.push(point);\n point.isSliced = true;\n }\n }\n this.lastGroupTo = this.groupTo;\n if (this.sumOfClub > 0) {\n var clubPoint_1 = this.generateClubPoint();\n this.pushPoints(clubPoint_1, colors);\n var pointsLength_1 = this.points.length - 1;\n this.clubbedPoints.map(function (point) {\n point.index += pointsLength_1;\n point.color = clubPoint_1.color;\n });\n }\n if (this.clubbedPoints.length && this.explode && this.type === 'Pie'\n && (this.explodeAll || this.points[this.points.length - 1].index === this.explodeIndex)) {\n this.points.splice(this.points.length - 1, 1);\n this.points = this.points.concat(this.clubbedPoints);\n }\n };\n AccumulationSeries.prototype.generateClubPoint = function () {\n var clubPoint = new AccPoints();\n clubPoint.isClubbed = true;\n clubPoint.x = 'Others';\n clubPoint.y = this.sumOfClub;\n clubPoint.text = clubPoint.originalText = clubPoint.x + ': ' + this.sumOfClub;\n clubPoint.sliceRadius = '80%';\n return clubPoint;\n };\n /**\n * Method to set point index and color\n */\n AccumulationSeries.prototype.pushPoints = function (point, colors) {\n point.index = this.points.length;\n point.isExplode = this.explodeAll || (point.index === this.explodeIndex);\n point.color = point.color || colors[point.index % colors.length];\n this.points.push(point);\n };\n /**\n * Method to find club point\n */\n AccumulationSeries.prototype.isClub = function (point, clubValue, index) {\n if (!isNullOrUndefined(clubValue)) {\n if (this.groupMode === 'Value' && Math.abs(point.y) <= clubValue) {\n this.sumOfClub += Math.abs(point.y);\n return true;\n }\n else if (this.groupMode === 'Point' && index >= clubValue) {\n this.sumOfClub += Math.abs(point.y);\n return true;\n }\n }\n return false;\n };\n /**\n * Method to find sum of points in the series\n */\n AccumulationSeries.prototype.findSumOfPoints = function (result) {\n var length = Object.keys(result).length;\n for (var i = 0; i < length; i++) {\n if (!isNullOrUndefined(result[i]) && !isNullOrUndefined(result[i][this.yName]) && !isNaN(result[i][this.yName])) {\n this.sumOfPoints += Math.abs(result[i][this.yName]);\n }\n }\n };\n /**\n * Method to set points x, y and text from data source\n */\n AccumulationSeries.prototype.setPoints = function (data, i, colors, accumulation) {\n var point = new AccPoints();\n point.x = getValue(this.xName, data[i]);\n point.y = getValue(this.yName, data[i]);\n point.percentage = (+(point.y / this.sumOfPoints * 100).toFixed(2));\n point.legendImageUrl = getValue(this.legendImageUrl, data[i]);\n point.color = getValue(this.pointColorMapping, data[i]);\n point.text = point.originalText = getValue(this.dataLabel.name || '', data[i]);\n point.tooltip = getValue(this.tooltipMappingName || '', data[i]);\n point.sliceRadius = getValue(this.radius, data[i]);\n point.sliceRadius = isNullOrUndefined(point.sliceRadius) ? '80%' : point.sliceRadius;\n point.separatorY = accumulation.intl.formatNumber(point.y, { useGrouping: accumulation.useGroupingSeparator });\n this.setAccEmptyPoint(point, i, data, colors);\n return point;\n };\n /**\n * Method render the series elements for accumulation chart\n * @private\n */\n AccumulationSeries.prototype.renderSeries = function (accumulation, redraw) {\n var seriesGroup = redraw ? getElement(accumulation.element.id + '_Series_' + this.index) :\n accumulation.renderer.createGroup({ id: accumulation.element.id + '_Series_' + this.index });\n this.renderPoints(accumulation, seriesGroup, redraw);\n var datalabelGroup;\n if (accumulation.accumulationDataLabelModule && this.dataLabel.visible) {\n datalabelGroup = accumulation.renderer.createGroup({ id: accumulation.element.id + '_datalabel_Series_' + this.index });\n datalabelGroup.style.visibility =\n (this.animation.enable && accumulation.animateSeries && this.type === 'Pie') ? 'hidden' : 'visible';\n this.renderDataLabel(accumulation, datalabelGroup, redraw);\n }\n if (this.type === 'Pie') {\n this.findMaxBounds(this.labelBound, this.accumulationBound);\n accumulation.pieSeriesModule.animateSeries(accumulation, this.animation, this, seriesGroup);\n }\n if (accumulation.accumulationLegendModule) {\n this.labelBound.x -= accumulation.explodeDistance;\n this.labelBound.y -= accumulation.explodeDistance;\n this.labelBound.height += (accumulation.explodeDistance - this.labelBound.y);\n this.labelBound.width += (accumulation.explodeDistance - this.labelBound.x);\n }\n };\n /**\n * Method render the points elements for accumulation chart series.\n */\n AccumulationSeries.prototype.renderPoints = function (accumulation, seriesGroup, redraw) {\n var pointId = accumulation.element.id + '_Series_' + this.index + '_Point_';\n var option;\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n var argsData = {\n cancel: false, name: pointRender, series: this, point: point, fill: point.color,\n border: this.isEmpty(point) ? { width: this.emptyPointSettings.border.width, color: this.emptyPointSettings.border.color } :\n { width: this.border.width, color: this.border.color }\n };\n accumulation.trigger(pointRender, argsData);\n point.color = argsData.fill;\n option = new PathOption(pointId + point.index, point.color, argsData.border.width || 1, argsData.border.color || point.color, this.opacity, '', '');\n accumulation[(firstToLowerCase(this.type) + 'SeriesModule')].\n renderPoint(point, this, accumulation, option, seriesGroup, redraw);\n }\n appendChildElement(false, accumulation.getSeriesElement(), seriesGroup, redraw);\n };\n /**\n * Method render the datalabel elements for accumulation chart.\n */\n AccumulationSeries.prototype.renderDataLabel = function (accumulation, datalabelGroup, redraw) {\n accumulation.accumulationDataLabelModule.findAreaRect();\n var element = createElement('div', {\n id: accumulation.element.id + '_Series_0' + '_DataLabelCollections'\n });\n this.leftSidePoints = [], this.rightSidePoints = [];\n var firstQuarter = [];\n var secondQuarter = [];\n for (var _i = 0, _a = this.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (point.visible) {\n if (this.dataLabel.showZero || (!this.dataLabel.showZero && ((point.y !== 0) || (point.y === 0 &&\n this.emptyPointSettings.mode === 'Zero')))) {\n accumulation.accumulationDataLabelModule.renderDataLabel(point, this.dataLabel, datalabelGroup, this.points, this.index, element, redraw);\n }\n }\n if (point.midAngle >= 90 && point.midAngle <= 270) {\n this.leftSidePoints.push(point);\n }\n else {\n if (point.midAngle >= 0 && point.midAngle <= 90) {\n secondQuarter.push(point);\n }\n else {\n firstQuarter.push(point);\n }\n }\n }\n firstQuarter.sort(function (a, b) { return a.midAngle - b.midAngle; });\n secondQuarter.sort(function (a, b) { return a.midAngle - b.midAngle; });\n this.leftSidePoints.sort(function (a, b) { return a.midAngle - b.midAngle; });\n this.rightSidePoints = firstQuarter.concat(secondQuarter);\n accumulation.accumulationDataLabelModule.drawDataLabels(this, this.dataLabel, datalabelGroup, element, redraw);\n if (this.dataLabel.template !== null && element.childElementCount) {\n var dataLabelCallBack = accumulation.accumulationDataLabelModule.drawDataLabels.bind(accumulation.accumulationDataLabelModule, this, this.dataLabel, datalabelGroup, element, redraw);\n // tslint:disable-next-line:no-any\n if (accumulation.isReact) {\n accumulation.renderReactTemplates(dataLabelCallBack);\n }\n appendChildElement(false, getElement(accumulation.element.id + '_Secondary_Element'), element, redraw);\n }\n appendChildElement(false, accumulation.getSeriesElement(), datalabelGroup, redraw);\n };\n /**\n * To find maximum bounds for smart legend placing\n * @private\n */\n AccumulationSeries.prototype.findMaxBounds = function (totalbound, bound) {\n totalbound.x = bound.x < totalbound.x ? bound.x : totalbound.x;\n totalbound.y = bound.y < totalbound.y ? bound.y : totalbound.y;\n totalbound.height = (bound.y + bound.height) > totalbound.height ? (bound.y + bound.height) : totalbound.height;\n totalbound.width = (bound.x + bound.width) > totalbound.width ? (bound.x + bound.width) : totalbound.width;\n };\n /**\n * To set empty point value for null points\n * @private\n */\n AccumulationSeries.prototype.setAccEmptyPoint = function (point, i, data, colors) {\n if (!(isNullOrUndefined(point.y) || isNaN(point.y))) {\n return null;\n }\n point.color = this.emptyPointSettings.fill || point.color;\n switch (this.emptyPointSettings.mode) {\n case 'Zero':\n point.y = 0;\n point.visible = true;\n break;\n case 'Average':\n var previous = data[i - 1] ? (data[i - 1][this.yName] || 0) : 0;\n var next = data[i + 1] ? (data[i + 1][this.yName] || 0) : 0;\n point.y = (Math.abs(previous) + Math.abs(next)) / 2;\n this.sumOfPoints += point.y;\n point.visible = true;\n break;\n default:\n point.visible = false;\n break;\n }\n };\n /**\n * To find point is empty\n */\n AccumulationSeries.prototype.isEmpty = function (point) {\n return point.color === this.emptyPointSettings.fill;\n };\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], AccumulationSeries.prototype, \"query\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"xName\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"tooltipMappingName\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"yName\", void 0);\n __decorate([\n Property(true)\n ], AccumulationSeries.prototype, \"visible\", void 0);\n __decorate([\n Complex({ color: null, width: 0 }, Border)\n ], AccumulationSeries.prototype, \"border\", void 0);\n __decorate([\n Complex(null, Animation)\n ], AccumulationSeries.prototype, \"animation\", void 0);\n __decorate([\n Property('SeriesType')\n ], AccumulationSeries.prototype, \"legendShape\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"legendImageUrl\", void 0);\n __decorate([\n Property('')\n ], AccumulationSeries.prototype, \"pointColorMapping\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"selectionStyle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"groupTo\", void 0);\n __decorate([\n Property('Value')\n ], AccumulationSeries.prototype, \"groupMode\", void 0);\n __decorate([\n Complex({}, AccumulationDataLabelSettings)\n ], AccumulationSeries.prototype, \"dataLabel\", void 0);\n __decorate([\n Property([])\n ], AccumulationSeries.prototype, \"palettes\", void 0);\n __decorate([\n Property(0)\n ], AccumulationSeries.prototype, \"startAngle\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"endAngle\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"radius\", void 0);\n __decorate([\n Property('0')\n ], AccumulationSeries.prototype, \"innerRadius\", void 0);\n __decorate([\n Property('Pie')\n ], AccumulationSeries.prototype, \"type\", void 0);\n __decorate([\n Property(true)\n ], AccumulationSeries.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property(false)\n ], AccumulationSeries.prototype, \"explode\", void 0);\n __decorate([\n Property('30%')\n ], AccumulationSeries.prototype, \"explodeOffset\", void 0);\n __decorate([\n Property(false)\n ], AccumulationSeries.prototype, \"explodeAll\", void 0);\n __decorate([\n Property(null)\n ], AccumulationSeries.prototype, \"explodeIndex\", void 0);\n __decorate([\n Complex({ mode: 'Drop' }, EmptyPointSettings)\n ], AccumulationSeries.prototype, \"emptyPointSettings\", void 0);\n __decorate([\n Property(0)\n ], AccumulationSeries.prototype, \"gapRatio\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"width\", void 0);\n __decorate([\n Property('80%')\n ], AccumulationSeries.prototype, \"height\", void 0);\n __decorate([\n Property('20%')\n ], AccumulationSeries.prototype, \"neckWidth\", void 0);\n __decorate([\n Property('20%')\n ], AccumulationSeries.prototype, \"neckHeight\", void 0);\n __decorate([\n Property('Linear')\n ], AccumulationSeries.prototype, \"pyramidMode\", void 0);\n __decorate([\n Property(1)\n ], AccumulationSeries.prototype, \"opacity\", void 0);\n return AccumulationSeries;\n}(ChildProperty));\nexport { AccumulationSeries };\n/**\n * method to get series from index\n * @private\n */\nexport function getSeriesFromIndex(index, visibleSeries) {\n for (var _i = 0, visibleSeries_1 = visibleSeries; _i < visibleSeries_1.length; _i++) {\n var series = visibleSeries_1[_i];\n if (index === series.index) {\n return series;\n }\n }\n return visibleSeries[0];\n}\n/**\n * method to get point from index\n * @private\n */\nexport function pointByIndex(index, points) {\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n if (point.index === index) {\n return point;\n }\n }\n return null;\n}\n","import _toConsumableArray from \"@babel/runtime-corejs2/helpers/esm/toConsumableArray\";\nimport _defineProperty from \"@babel/runtime-corejs2/helpers/esm/defineProperty\";\nimport _objectSpread from \"@babel/runtime-corejs2/helpers/esm/objectSpread\";\nimport _Object$keys from \"@babel/runtime-corejs2/core-js/object/keys\";\nimport _getIterator from \"@babel/runtime-corejs2/core-js/get-iterator\";\nimport _Array$isArray from \"@babel/runtime-corejs2/core-js/array/is-array\";\nimport toPath from \"lodash/toPath\";\nimport Ajv from \"ajv\";\nvar ajv = createAjvInstance();\nimport { deepEquals, getDefaultFormState } from \"./utils\";\nvar formerCustomFormats = null;\nvar formerMetaSchema = null;\nimport { isObject, mergeObjects } from \"./utils\";\n\nfunction createAjvInstance() {\n var ajv = new Ajv({\n errorDataPath: \"property\",\n allErrors: true,\n multipleOfPrecision: 8,\n schemaId: \"auto\",\n unknownFormats: \"ignore\"\n }); // add custom formats\n\n ajv.addFormat(\"data-url\", /^data:([a-z]+\\/[a-z0-9-+.]+)?;(?:name=(.*);)?base64,(.*)$/);\n ajv.addFormat(\"color\", /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/);\n return ajv;\n}\n\nfunction toErrorSchema(errors) {\n // Transforms a ajv validation errors list:\n // [\n // {property: \".level1.level2[2].level3\", message: \"err a\"},\n // {property: \".level1.level2[2].level3\", message: \"err b\"},\n // {property: \".level1.level2[4].level3\", message: \"err b\"},\n // ]\n // Into an error tree:\n // {\n // level1: {\n // level2: {\n // 2: {level3: {errors: [\"err a\", \"err b\"]}},\n // 4: {level3: {errors: [\"err b\"]}},\n // }\n // }\n // };\n if (!errors.length) {\n return {};\n }\n\n return errors.reduce(function (errorSchema, error) {\n var property = error.property,\n message = error.message;\n var path = toPath(property);\n var parent = errorSchema; // If the property is at the root (.level1) then toPath creates\n // an empty array element at the first index. Remove it.\n\n if (path.length > 0 && path[0] === \"\") {\n path.splice(0, 1);\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _getIterator(path.slice(0)), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var segment = _step.value;\n\n if (!(segment in parent)) {\n parent[segment] = {};\n }\n\n parent = parent[segment];\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n if (_Array$isArray(parent.__errors)) {\n // We store the list of errors for this node in a property named __errors\n // to avoid name collision with a possible sub schema field named\n // \"errors\" (see `validate.createErrorHandler`).\n parent.__errors = parent.__errors.concat(message);\n } else {\n if (message) {\n parent.__errors = [message];\n }\n }\n\n return errorSchema;\n }, {});\n}\n\nexport function toErrorList(errorSchema) {\n var fieldName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"root\";\n // XXX: We should transform fieldName as a full field path string.\n var errorList = [];\n\n if (\"__errors\" in errorSchema) {\n errorList = errorList.concat(errorSchema.__errors.map(function (stack) {\n return {\n stack: \"\".concat(fieldName, \": \").concat(stack)\n };\n }));\n }\n\n return _Object$keys(errorSchema).reduce(function (acc, key) {\n if (key !== \"__errors\") {\n acc = acc.concat(toErrorList(errorSchema[key], key));\n }\n\n return acc;\n }, errorList);\n}\n\nfunction createErrorHandler(formData) {\n var handler = {\n // We store the list of errors for this node in a property named __errors\n // to avoid name collision with a possible sub schema field named\n // \"errors\" (see `utils.toErrorSchema`).\n __errors: [],\n addError: function addError(message) {\n this.__errors.push(message);\n }\n };\n\n if (isObject(formData)) {\n return _Object$keys(formData).reduce(function (acc, key) {\n return _objectSpread({}, acc, _defineProperty({}, key, createErrorHandler(formData[key])));\n }, handler);\n }\n\n if (_Array$isArray(formData)) {\n return formData.reduce(function (acc, value, key) {\n return _objectSpread({}, acc, _defineProperty({}, key, createErrorHandler(value)));\n }, handler);\n }\n\n return handler;\n}\n\nfunction unwrapErrorHandler(errorHandler) {\n return _Object$keys(errorHandler).reduce(function (acc, key) {\n if (key === \"addError\") {\n return acc;\n } else if (key === \"__errors\") {\n return _objectSpread({}, acc, _defineProperty({}, key, errorHandler[key]));\n }\n\n return _objectSpread({}, acc, _defineProperty({}, key, unwrapErrorHandler(errorHandler[key])));\n }, {});\n}\n/**\n * Transforming the error output from ajv to format used by jsonschema.\n * At some point, components should be updated to support ajv.\n */\n\n\nfunction transformAjvErrors() {\n var errors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (errors === null) {\n return [];\n }\n\n return errors.map(function (e) {\n var dataPath = e.dataPath,\n keyword = e.keyword,\n message = e.message,\n params = e.params,\n schemaPath = e.schemaPath;\n var property = \"\".concat(dataPath); // put data in expected format\n\n return {\n name: keyword,\n property: property,\n message: message,\n params: params,\n // specific to ajv\n stack: \"\".concat(property, \" \").concat(message).trim(),\n schemaPath: schemaPath\n };\n });\n}\n/**\n * This function processes the formData with a user `validate` contributed\n * function, which receives the form data and an `errorHandler` object that\n * will be used to add custom validation errors for each field.\n */\n\n\nexport default function validateFormData(formData, schema, customValidate, transformErrors) {\n var additionalMetaSchemas = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var customFormats = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n // Include form data with undefined values, which is required for validation.\n var rootSchema = schema;\n formData = getDefaultFormState(schema, formData, rootSchema, true);\n var newMetaSchemas = !deepEquals(formerMetaSchema, additionalMetaSchemas);\n var newFormats = !deepEquals(formerCustomFormats, customFormats);\n\n if (newMetaSchemas || newFormats) {\n ajv = createAjvInstance();\n } // add more schemas to validate against\n\n\n if (additionalMetaSchemas && newMetaSchemas && _Array$isArray(additionalMetaSchemas)) {\n ajv.addMetaSchema(additionalMetaSchemas);\n formerMetaSchema = additionalMetaSchemas;\n } // add more custom formats to validate against\n\n\n if (customFormats && newFormats && isObject(customFormats)) {\n _Object$keys(customFormats).forEach(function (formatName) {\n ajv.addFormat(formatName, customFormats[formatName]);\n });\n\n formerCustomFormats = customFormats;\n }\n\n var validationError = null;\n\n try {\n ajv.validate(schema, formData);\n } catch (err) {\n validationError = err;\n }\n\n var errors = transformAjvErrors(ajv.errors); // Clear errors to prevent persistent errors, see #1104\n\n ajv.errors = null;\n var noProperMetaSchema = validationError && validationError.message && typeof validationError.message === \"string\" && validationError.message.includes(\"no schema with key or ref \");\n\n if (noProperMetaSchema) {\n errors = [].concat(_toConsumableArray(errors), [{\n stack: validationError.message\n }]);\n }\n\n if (typeof transformErrors === \"function\") {\n errors = transformErrors(errors);\n }\n\n var errorSchema = toErrorSchema(errors);\n\n if (noProperMetaSchema) {\n errorSchema = _objectSpread({}, errorSchema, {\n $schema: {\n __errors: [validationError.message]\n }\n });\n }\n\n if (typeof customValidate !== \"function\") {\n return {\n errors: errors,\n errorSchema: errorSchema\n };\n }\n\n var errorHandler = customValidate(formData, createErrorHandler(formData));\n var userErrorSchema = unwrapErrorHandler(errorHandler);\n var newErrorSchema = mergeObjects(errorSchema, userErrorSchema, true); // XXX: The errors list produced is not fully compliant with the format\n // exposed by the jsonschema lib, which contains full field paths and other\n // properties.\n\n var newErrors = toErrorList(newErrorSchema);\n return {\n errors: newErrors,\n errorSchema: newErrorSchema\n };\n}\n/**\n * Validates data against a schema, returning true if the data is valid, or\n * false otherwise. If the schema is invalid, then this function will return\n * false.\n */\n\nexport function isValid(schema, data) {\n try {\n return ajv.validate(schema, data);\n } catch (e) {\n return false;\n }\n}","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { Internationalization, setCulture } from '@syncfusion/ej2-base';\n/**\n * ValueFormatter class to globalize the value.\n * @hidden\n */\nvar ValueFormatter = /** @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n if (isBlazor()) {\n var isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n if (isBlazor()) {\n var isServerRendered = 'isServerRendered';\n format[isServerRendered] = true;\n }\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\n}());\nexport { ValueFormatter };\n","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, Complex, ChildProperty, Collection, extend } from '@syncfusion/ej2-base';\nimport { Font, Border } from '../../common/model/base';\nimport { rotateTextSize, firstToLowerCase, valueToCoefficient, inside, isBreakLabel, isZoomSet, getTitle } from '../../common/utils/helper';\nimport { Size, Rect, measureText } from '@syncfusion/ej2-svg-base';\nimport { DoubleRange } from '../utils/double-range';\nimport { Double } from '../axis/double-axis';\nimport { Theme } from '../../common/model/theme';\nimport { axisRangeCalculated } from '../../common/model/constants';\nimport { StripLineSettings, MultiLevelLabels, LabelBorder, ScrollbarSettings } from '../model/chart-base';\nimport { textWrap } from '../../common/utils/helper';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Configures the `rows` of the chart.\n */\nvar Row = /** @class */ (function (_super) {\n __extends(Row, _super);\n function Row() {\n /**\n * The height of the row as a string accept input both as '100px' and '100%'.\n * If specified as '100%, row renders to the full height of its chart.\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n return _this;\n }\n /**\n * Measure the row size\n * @return {void}\n * @private\n */\n Row.prototype.computeSize = function (axis, clipRect, scrollBarHeight) {\n var width = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n width += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding) + axis.lineStyle.width * 0.5);\n }\n if (axis.opposedPosition) {\n this.farSizes.push(width);\n }\n else {\n this.nearSizes.push(width);\n }\n };\n __decorate([\n Property('100%')\n ], Row.prototype, \"height\", void 0);\n __decorate([\n Complex({}, Border)\n ], Row.prototype, \"border\", void 0);\n return Row;\n}(ChildProperty));\nexport { Row };\n/**\n * Configures the `columns` of the chart.\n */\nvar Column = /** @class */ (function (_super) {\n __extends(Column, _super);\n function Column() {\n /**\n * The width of the column as a string accepts input both as like '100px' or '100%'.\n * If specified as '100%, column renders to the full width of its chart.\n * @default '100%'\n */\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /** @private */\n _this.axes = [];\n /** @private */\n _this.nearSizes = [];\n /** @private */\n _this.farSizes = [];\n /** @private */\n _this.padding = 0;\n return _this;\n }\n /**\n * Measure the column size\n * @return {void}\n * @private\n */\n Column.prototype.computeSize = function (axis, clipRect, scrollBarHeight) {\n var height = 0;\n var innerPadding = 5;\n if (axis.visible && axis.internalVisibility) {\n height += (axis.findTickSize(axis.crossInAxis) + scrollBarHeight +\n axis.findLabelSize(axis.crossInAxis, innerPadding) + axis.lineStyle.width * 0.5);\n }\n if (axis.opposedPosition) {\n this.farSizes.push(height);\n }\n else {\n this.nearSizes.push(height);\n }\n };\n __decorate([\n Property('100%')\n ], Column.prototype, \"width\", void 0);\n __decorate([\n Complex({}, Border)\n ], Column.prototype, \"border\", void 0);\n return Column;\n}(ChildProperty));\nexport { Column };\n/**\n * Configures the major grid lines in the `axis`.\n */\nvar MajorGridLines = /** @class */ (function (_super) {\n __extends(MajorGridLines, _super);\n function MajorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MajorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MajorGridLines.prototype, \"color\", void 0);\n return MajorGridLines;\n}(ChildProperty));\nexport { MajorGridLines };\n/**\n * Configures the minor grid lines in the `axis`.\n */\nvar MinorGridLines = /** @class */ (function (_super) {\n __extends(MinorGridLines, _super);\n function MinorGridLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorGridLines.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], MinorGridLines.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], MinorGridLines.prototype, \"color\", void 0);\n return MinorGridLines;\n}(ChildProperty));\nexport { MinorGridLines };\n/**\n * Configures the axis line of a chart.\n */\nvar AxisLine = /** @class */ (function (_super) {\n __extends(AxisLine, _super);\n function AxisLine() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], AxisLine.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], AxisLine.prototype, \"dashArray\", void 0);\n __decorate([\n Property(null)\n ], AxisLine.prototype, \"color\", void 0);\n return AxisLine;\n}(ChildProperty));\nexport { AxisLine };\n/**\n * Configures the major tick lines.\n */\nvar MajorTickLines = /** @class */ (function (_super) {\n __extends(MajorTickLines, _super);\n function MajorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(1)\n ], MajorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MajorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MajorTickLines.prototype, \"color\", void 0);\n return MajorTickLines;\n}(ChildProperty));\nexport { MajorTickLines };\n/**\n * Configures the minor tick lines.\n */\nvar MinorTickLines = /** @class */ (function (_super) {\n __extends(MinorTickLines, _super);\n function MinorTickLines() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0.7)\n ], MinorTickLines.prototype, \"width\", void 0);\n __decorate([\n Property(5)\n ], MinorTickLines.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], MinorTickLines.prototype, \"color\", void 0);\n return MinorTickLines;\n}(ChildProperty));\nexport { MinorTickLines };\n/**\n * Configures the crosshair ToolTip.\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], CrosshairTooltip.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], CrosshairTooltip.prototype, \"fill\", void 0);\n __decorate([\n Complex(Theme.crosshairLabelFont, Font)\n ], CrosshairTooltip.prototype, \"textStyle\", void 0);\n return CrosshairTooltip;\n}(ChildProperty));\nexport { CrosshairTooltip };\n/**\n * Configures the axes in the chart.\n * @public\n */\nvar Axis = /** @class */ (function (_super) {\n __extends(Axis, _super);\n // tslint:disable-next-line:no-any\n function Axis(parent, propName, defaultValue, isArray) {\n var _this = _super.call(this, parent, propName, defaultValue, isArray) || this;\n /** @private */\n _this.visibleLabels = [];\n /** @private */\n _this.series = [];\n /** @private */\n _this.rect = new Rect(undefined, undefined, 0, 0);\n /** @private */\n _this.axisBottomLine = null;\n /** @private */\n _this.intervalDivs = [10, 5, 2, 1];\n /** @private */\n _this.angle = _this.labelRotation;\n /** @private */\n _this.isStack100 = false;\n /** @private */\n _this.crossAt = null;\n /** @private */\n _this.updatedRect = null;\n /** @private */\n _this.multiLevelLabelHeight = 0;\n /** @private */\n _this.isChart = true;\n /** @private */\n _this.isIntervalInDecimal = true;\n /** @private */\n _this.titleCollection = [];\n /** @private */\n _this.titleSize = new Size(0, 0);\n /**\n * @private\n * Task: BLAZ-2044\n * This property used to hide the axis when series hide from legend click\n */\n _this.internalVisibility = true;\n return _this;\n }\n /**\n * The function used to find tick size.\n * @return {number}\n * @private\n */\n Axis.prototype.findTickSize = function (crossAxis) {\n if (this.tickPosition === 'Inside') {\n return 0;\n }\n if (crossAxis && (!crossAxis.visibleRange || this.isInside(crossAxis.visibleRange))) {\n return 0;\n }\n return this.majorTickLines.height;\n };\n /**\n * The function used to find axis position.\n * @return {number}\n * @private\n */\n Axis.prototype.isInside = function (range) {\n return (inside(this.crossAt, range) ||\n (!this.opposedPosition && this.crossAt >= range.max) || (this.opposedPosition && this.crossAt <= range.min));\n };\n /**\n * The function used to find label Size.\n * @return {number}\n * @private\n */\n Axis.prototype.findLabelSize = function (crossAxis, innerPadding) {\n var titleSize = 0;\n var isHorizontal = this.orientation === 'Horizontal';\n if (this.title) {\n this.titleSize = measureText(this.title, this.titleStyle);\n titleSize = this.titleSize.height + innerPadding;\n if (this.rect.width || this.rect.height) {\n var length_1 = isHorizontal ? this.rect.width : this.rect.height;\n this.titleCollection = getTitle(this.title, this.titleStyle, length_1);\n titleSize = (titleSize * this.titleCollection.length);\n }\n }\n if (this.labelPosition === 'Inside') {\n return titleSize + innerPadding;\n }\n var diff;\n var value;\n var labelSize = titleSize + innerPadding + this.titlePadding + this.labelPadding +\n ((this.orientation === 'Vertical') ? this.maxLabelSize.width : this.maxLabelSize.height) + this.multiLevelLabelHeight;\n if (crossAxis && this.placeNextToAxisLine) {\n var range = crossAxis.visibleRange;\n var size = (crossAxis.orientation === 'Horizontal') ? crossAxis.rect.width : crossAxis.rect.height;\n if (!range || !size) {\n return 0;\n }\n else if (this.isInside(range)) {\n value = this.findDifference(crossAxis);\n diff = (value) * (size / range.delta);\n diff = (value) * ((size - (diff < labelSize ? (labelSize - diff) : 0)) / range.delta);\n labelSize = (diff < labelSize) ? (labelSize - diff) : 0;\n }\n }\n return labelSize;\n };\n /**\n * The function used to find axis position.\n * @return {number}\n * @private\n */\n Axis.prototype.updateCrossValue = function (chart) {\n var value = this.crossAt;\n if (value === null || !this.isInside(this.crossInAxis.visibleRange)) {\n this.updatedRect = this.rect;\n return null;\n }\n var range = this.crossInAxis.visibleRange;\n if (!this.opposedPosition) {\n if (this.crossAt > range.max) {\n value = range.max;\n }\n }\n else {\n if (this.crossAt < range.min) {\n value = range.min;\n }\n }\n this.updatedRect = extend({}, this.rect, null, true);\n if (this.orientation === 'Horizontal') {\n value = this.crossInAxis.rect.height - (valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.height);\n this.updatedRect.y = this.crossInAxis.rect.y + value;\n }\n else {\n value = valueToCoefficient(value, this.crossInAxis) * this.crossInAxis.rect.width;\n this.updatedRect.x = this.crossInAxis.rect.x + value;\n }\n };\n Axis.prototype.findDifference = function (crossAxis) {\n var value = 0;\n if (this.opposedPosition) {\n value = crossAxis.isInversed ? crossAxis.visibleRange.min : crossAxis.visibleRange.max;\n }\n else {\n value = crossAxis.isInversed ? crossAxis.visibleRange.max : crossAxis.visibleRange.min;\n }\n return Math.abs(this.crossAt - value);\n };\n /**\n * Calculate visible range for axis.\n * @return {void}\n * @private\n */\n Axis.prototype.calculateVisibleRangeOnZooming = function (chart) {\n if (isZoomSet(this)) {\n var baseRange = this.actualRange;\n var start = void 0;\n var end = void 0;\n if (!this.isInversed || chart.zoomModule) {\n start = this.actualRange.min + this.zoomPosition * this.actualRange.delta;\n end = start + this.zoomFactor * this.actualRange.delta;\n }\n else {\n start = this.actualRange.max - (this.zoomPosition * this.actualRange.delta);\n end = start - (this.zoomFactor * this.actualRange.delta);\n }\n if (start < baseRange.min) {\n end = end + (baseRange.min - start);\n start = baseRange.min;\n }\n if (end > baseRange.max) {\n start = start - (end - baseRange.max);\n end = baseRange.max;\n }\n this.doubleRange = new DoubleRange(start, end);\n this.visibleRange = { min: this.doubleRange.start, max: this.doubleRange.end,\n delta: this.doubleRange.delta, interval: this.visibleRange.interval };\n }\n };\n /**\n * Calculate range for x and y axis after zoom.\n * @return {void}\n * @private\n */\n Axis.prototype.calculateAxisRange = function (size, chart) {\n if (chart.enableAutoIntervalOnBothAxis) {\n if (this.orientation === 'Horizontal' && chart.zoomSettings.mode === 'X') {\n for (var i = 0; i < this.series.length; i++) {\n var yValue = [];\n for (var _i = 0, _a = this.series[i].visiblePoints; _i < _a.length; _i++) {\n var points = _a[_i];\n if ((points.xValue > this.visibleRange.min) && (points.xValue < this.visibleRange.max)) {\n yValue.push(points.yValue);\n }\n }\n for (var _b = 0, _c = chart.axisCollections; _b < _c.length; _b++) {\n var axis = _c[_b];\n if (axis.orientation === 'Vertical' && !isNullOrUndefined(axis.series[i])) {\n axis.series[i].yMin = Math.min.apply(Math, yValue);\n axis.series[i].yMax = Math.max.apply(Math, yValue);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n }\n }\n }\n }\n if (this.orientation === 'Vertical' && chart.zoomSettings.mode === 'Y') {\n for (var i = 0; i < this.series.length; i++) {\n var xValue = [];\n for (var _d = 0, _e = this.series[i].visiblePoints; _d < _e.length; _d++) {\n var points = _e[_d];\n if ((points.yValue > this.visibleRange.min) && (points.yValue < this.visibleRange.max)) {\n xValue.push(points.xValue);\n }\n }\n for (var _f = 0, _g = chart.axisCollections; _f < _g.length; _f++) {\n var axis = _g[_f];\n if (axis.orientation === 'Horizontal' && !isNullOrUndefined(axis.series[i])) {\n axis.series[i].xMin = Math.min.apply(Math, xValue);\n axis.series[i].xMax = Math.max.apply(Math, xValue);\n axis.baseModule.calculateRangeAndInterval(size, axis);\n }\n }\n }\n }\n }\n };\n /**\n * Triggers the event.\n * @return {void}\n * @private\n */\n Axis.prototype.triggerRangeRender = function (chart, minimum, maximum, interval) {\n var argsData;\n argsData = {\n cancel: false, name: axisRangeCalculated, axis: this,\n minimum: minimum, maximum: maximum, interval: interval\n };\n chart.trigger(axisRangeCalculated, argsData);\n if (!argsData.cancel) {\n this.visibleRange = { min: argsData.minimum, max: argsData.maximum, interval: argsData.interval,\n delta: argsData.maximum - argsData.minimum };\n }\n };\n /**\n * Calculate padding for the axis.\n * @return {string}\n * @private\n */\n Axis.prototype.getRangePadding = function (chart) {\n var padding = this.rangePadding;\n if (padding !== 'Auto') {\n return padding;\n }\n switch (this.orientation) {\n case 'Horizontal':\n if (chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n case 'Vertical':\n if (!chart.requireInvertedAxis) {\n padding = (this.isStack100 || this.baseModule.chart.stockChart ? 'Round' : 'Normal');\n }\n else {\n padding = 'None';\n }\n break;\n }\n return padding;\n };\n /**\n * Calculate maximum label width for the axis.\n * @return {void}\n * @private\n */\n // tslint:disable-next-line:max-func-body-length\n Axis.prototype.getMaxLabelWidth = function (chart) {\n var pointX;\n var previousEnd = 0;\n var isIntersect = false;\n var isAxisLabelBreak;\n this.angle = this.labelRotation;\n this.maxLabelSize = new Size(0, 0);\n var action = this.labelIntersectAction;\n var label;\n for (var i = 0, len = this.visibleLabels.length; i < len; i++) {\n label = this.visibleLabels[i];\n isAxisLabelBreak = isBreakLabel(label.originalText);\n if (isAxisLabelBreak) {\n label.size = measureText(label.originalText.replace(/
/g, ' '), this.labelStyle);\n label.breakLabelSize = measureText(this.enableTrim ? label.text.join('
') : label.originalText, this.labelStyle);\n }\n else {\n label.size = measureText(label.text, this.labelStyle);\n }\n var width = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n if (width > this.maxLabelSize.width) {\n this.maxLabelSize.width = width;\n this.rotatedLabel = label.text;\n }\n var height = isAxisLabelBreak ? label.breakLabelSize.height : label.size.height;\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n if (isAxisLabelBreak) {\n label.text = this.enableTrim ? label.text : label.originalText.split('
');\n }\n if (action === 'None' || action === 'Hide' || action === 'Trim') {\n continue;\n }\n if ((action !== 'None' || this.angle % 360 === 0) && this.orientation === 'Horizontal' &&\n this.rect.width > 0 && !isIntersect) {\n var width1 = isAxisLabelBreak ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n pointX -= width1 / 2;\n if (this.edgeLabelPlacement === 'Shift') {\n if (i === 0 && pointX < this.rect.x) {\n pointX = this.rect.x;\n }\n if (i === this.visibleLabels.length - 1 && ((pointX + width1) > (this.rect.x + this.rect.width))) {\n pointX = this.rect.x + this.rect.width - width1;\n }\n }\n switch (action) {\n case 'MultipleRows':\n if (i > 0) {\n this.findMultiRows(i, pointX, label, isAxisLabelBreak);\n }\n break;\n case 'Rotate45':\n case 'Rotate90':\n if (i > 0 && (!this.isInversed ? pointX <= previousEnd : pointX + width1 >= previousEnd)) {\n this.angle = (action === 'Rotate45') ? 45 : 90;\n isIntersect = true;\n }\n break;\n default:\n if (isAxisLabelBreak) {\n var result = void 0;\n var result1 = [];\n var str = void 0;\n for (var index = 0; index < label.text.length; index++) {\n result = textWrap(label.text[index], this.rect.width / this.visibleLabels.length, this.labelStyle);\n if (result.length > 1) {\n for (var j = 0; j < result.length; j++) {\n str = result[j];\n result1.push(str);\n }\n }\n else {\n result1.push(result[0]);\n }\n }\n label.text = result1;\n }\n else {\n label.text = textWrap(label.text, this.rect.width / this.visibleLabels.length, this.labelStyle);\n }\n var height_1 = (label.size.height * label.text.length);\n if (height_1 > this.maxLabelSize.height) {\n this.maxLabelSize.height = height_1;\n }\n break;\n }\n previousEnd = this.isInversed ? pointX : pointX + width1;\n }\n }\n if (this.angle !== 0 && this.orientation === 'Horizontal') {\n //I264474: Fix for datasource bind im mounted console error ocurred\n this.rotatedLabel = isNullOrUndefined(this.rotatedLabel) ? '' : this.rotatedLabel;\n var isHorizontalAngle = this.angle === -360 || this.angle === 0 || this.angle === -180 ||\n this.angle === 180 || this.angle === 360;\n // To avoid overlap axis label with chart title or chart legend when it is outside. \n if (this.labelPosition === 'Outside' && !isHorizontalAngle && isBreakLabel(this.rotatedLabel)) {\n this.maxLabelSize = new Size(this.maxLabelSize.height, this.maxLabelSize.width);\n }\n else {\n this.maxLabelSize = rotateTextSize(this.labelStyle, this.rotatedLabel, this.angle, chart);\n }\n }\n if (chart.multiLevelLabelModule && this.multiLevelLabels.length > 0) {\n chart.multiLevelLabelModule.getMultilevelLabelsHeight(this);\n }\n };\n /**\n * Finds the multiple rows for axis.\n * @return {void}\n */\n Axis.prototype.findMultiRows = function (length, currentX, currentLabel, isBreakLabels) {\n var label;\n var pointX;\n var width2;\n var store = [];\n var isMultiRows;\n for (var i = length - 1; i >= 0; i--) {\n label = this.visibleLabels[i];\n width2 = isBreakLabels ? label.breakLabelSize.width : label.size.width;\n pointX = (valueToCoefficient(label.value, this) * this.rect.width) + this.rect.x;\n isMultiRows = !this.isInversed ? currentX < (pointX + width2 * 0.5) :\n currentX + currentLabel.size.width > (pointX - width2 * 0.5);\n if (isMultiRows) {\n store.push(label.index);\n currentLabel.index = (currentLabel.index > label.index) ? currentLabel.index : label.index + 1;\n }\n else {\n currentLabel.index = store.indexOf(label.index) > -1 ? currentLabel.index : label.index;\n }\n }\n var height = ((isBreakLabels ? currentLabel.breakLabelSize.height : currentLabel.size.height) * currentLabel.index) +\n (5 * (currentLabel.index - 1));\n if (height > this.maxLabelSize.height) {\n this.maxLabelSize.height = height;\n }\n };\n /**\n * Finds the default module for axis.\n * @return {void}\n * @private\n */\n Axis.prototype.getModule = function (chart) {\n if (this.valueType === 'Double') {\n this.baseModule = new Double(chart);\n }\n else {\n this.baseModule = chart[firstToLowerCase(this.valueType) + 'Module'];\n }\n };\n __decorate([\n Complex(Theme.axisLabelFont, Font)\n ], Axis.prototype, \"labelStyle\", void 0);\n __decorate([\n Complex({}, CrosshairTooltip)\n ], Axis.prototype, \"crosshairTooltip\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"title\", void 0);\n __decorate([\n Complex(Theme.axisTitleFont, Font)\n ], Axis.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"labelFormat\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"skeleton\", void 0);\n __decorate([\n Property('DateTime')\n ], Axis.prototype, \"skeletonType\", void 0);\n __decorate([\n Property('Center')\n ], Axis.prototype, \"lineBreakAlignment\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"plotOffset\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetLeft\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetTop\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetRight\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"plotOffsetBottom\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isIndexed\", void 0);\n __decorate([\n Property(10)\n ], Axis.prototype, \"logBase\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"columnIndex\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"rowIndex\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"span\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"desiredIntervals\", void 0);\n __decorate([\n Property(3)\n ], Axis.prototype, \"maximumLabels\", void 0);\n __decorate([\n Property(1)\n ], Axis.prototype, \"zoomFactor\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"zoomPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableScrollbarOnZooming\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"opposedPosition\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"enableAutoIntervalOnZooming\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"rangePadding\", void 0);\n __decorate([\n Property('Double')\n ], Axis.prototype, \"valueType\", void 0);\n __decorate([\n Property('None')\n ], Axis.prototype, \"edgeLabelPlacement\", void 0);\n __decorate([\n Property('Auto')\n ], Axis.prototype, \"intervalType\", void 0);\n __decorate([\n Property('BetweenTicks')\n ], Axis.prototype, \"labelPlacement\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"tickPosition\", void 0);\n __decorate([\n Property('Outside')\n ], Axis.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], Axis.prototype, \"name\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"visible\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"minorTicksPerInterval\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"labelRotation\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesAt\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"placeNextToAxisLine\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"crossesInAxis\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"maximum\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"interval\", void 0);\n __decorate([\n Property(34)\n ], Axis.prototype, \"maximumLabelWidth\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"enableTrim\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"labelPadding\", void 0);\n __decorate([\n Property(5)\n ], Axis.prototype, \"titlePadding\", void 0);\n __decorate([\n Complex({}, MajorTickLines)\n ], Axis.prototype, \"majorTickLines\", void 0);\n __decorate([\n Complex({}, MinorTickLines)\n ], Axis.prototype, \"minorTickLines\", void 0);\n __decorate([\n Complex({}, MajorGridLines)\n ], Axis.prototype, \"majorGridLines\", void 0);\n __decorate([\n Complex({}, MinorGridLines)\n ], Axis.prototype, \"minorGridLines\", void 0);\n __decorate([\n Complex({}, AxisLine)\n ], Axis.prototype, \"lineStyle\", void 0);\n __decorate([\n Property('Trim')\n ], Axis.prototype, \"labelIntersectAction\", void 0);\n __decorate([\n Property(false)\n ], Axis.prototype, \"isInversed\", void 0);\n __decorate([\n Property(100)\n ], Axis.prototype, \"coefficient\", void 0);\n __decorate([\n Property(0)\n ], Axis.prototype, \"startAngle\", void 0);\n __decorate([\n Property(true)\n ], Axis.prototype, \"startFromZero\", void 0);\n __decorate([\n Property(null)\n ], Axis.prototype, \"description\", void 0);\n __decorate([\n Property(2)\n ], Axis.prototype, \"tabIndex\", void 0);\n __decorate([\n Collection([], StripLineSettings)\n ], Axis.prototype, \"stripLines\", void 0);\n __decorate([\n Collection([], MultiLevelLabels)\n ], Axis.prototype, \"multiLevelLabels\", void 0);\n __decorate([\n Complex({ color: null, width: 0, type: 'Rectangle' }, LabelBorder)\n ], Axis.prototype, \"border\", void 0);\n __decorate([\n Complex({}, ScrollbarSettings)\n ], Axis.prototype, \"scrollbarSettings\", void 0);\n return Axis;\n}(ChildProperty));\nexport { Axis };\n/** @private */\nvar VisibleLabels = /** @class */ (function () {\n function VisibleLabels(text, value, labelStyle, originalText, size, breakLabelSize, index) {\n if (size === void 0) { size = new Size(0, 0); }\n if (breakLabelSize === void 0) { breakLabelSize = new Size(0, 0); }\n if (index === void 0) { index = 1; }\n this.text = text;\n this.originalText = originalText;\n this.value = value;\n this.labelStyle = labelStyle;\n this.size = size;\n this.breakLabelSize = breakLabelSize;\n this.index = 1;\n }\n return VisibleLabels;\n}());\nexport { VisibleLabels };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n * @param {DataOptions} ds?\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors \n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n * @param {Object[]} ds\n * @param {{field:string} e\n * @param {string}} type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n * @param {Object[]} ds\n * @param {{comparer:(a:Object} e\n * @param {Object} b\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n * @param {Object[]} ds\n * @param {{pageSize:number} e\n * @param {number}} pageIndex\n * @param {Query} query\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n * @param {Object[]} ds\n * @param {{start:number} e\n * @param {number}} end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query));\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n operator = DataUtil.odBiOperator[predicate.operator];\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n selected[splits[0]].push(splits[1]);\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + _this.options.select + \"=\" + selected[expand].join(',') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n /**\n * Returns the groupby query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaName]) {\n var dataUrl = data[metaName].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation \n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n data = request ? JSON.parse(request.data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n * @hidden\n */\nvar AjaxAdaptor = /** @class */ (function (_super) {\n __extends(AjaxAdaptor, _super);\n function AjaxAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n AjaxAdaptor.prototype.getModuleName = function () {\n return 'AjaxAdaptor';\n };\n return AjaxAdaptor;\n}(UrlAdaptor));\nexport { AjaxAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data;\n data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n * @param {string} url\n * @param {Query} query?\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems;\n cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","var identity = require('./identity'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\nfunction baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n}\n\nmodule.exports = baseRest;\n","import { Ajax } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, AjaxAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.requests = [];\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof AjaxAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Overrides DataManager's default query with given query.\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isAjaxAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isAjaxAdaptor(this.adaptor)) {\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n (window.setImmediate || window.setTimeout)(fn, 0);\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isAjaxAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isAjaxAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests. \n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isAjaxAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests. \n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isAjaxAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'AjaxAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isAjaxAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n ;\n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n ;\n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isAjaxAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, Complex, ChildProperty } from '@syncfusion/ej2-base';\nimport { measureText, Rect, TextOption, Size, PathOption } from '@syncfusion/ej2-svg-base';\nimport { Font, Border, Margin, ContainerPadding } from '../model/base';\nimport { Theme } from '../model/theme';\nimport { subtractThickness, Thickness, drawSymbol, ChartLocation, titlePositionX, getTitle, textTrim } from '../utils/helper';\nimport { RectOption, textElement, stringToNumber } from '../utils/helper';\nimport { removeElement, showTooltip, getElement, appendChildElement } from '../utils/helper';\n/**\n * Configures the location for the legend.\n */\nvar Location = /** @class */ (function (_super) {\n __extends(Location, _super);\n function Location() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Location.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], Location.prototype, \"y\", void 0);\n return Location;\n}(ChildProperty));\nexport { Location };\n/**\n * Configures the legends in charts.\n */\nvar LegendSettings = /** @class */ (function (_super) {\n __extends(LegendSettings, _super);\n function LegendSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"width\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Location)\n ], LegendSettings.prototype, \"location\", void 0);\n __decorate([\n Property('Auto')\n ], LegendSettings.prototype, \"position\", void 0);\n __decorate([\n Property(8)\n ], LegendSettings.prototype, \"padding\", void 0);\n __decorate([\n Property('Center')\n ], LegendSettings.prototype, \"alignment\", void 0);\n __decorate([\n Complex(Theme.legendLabelFont, Font)\n ], LegendSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeHeight\", void 0);\n __decorate([\n Property(10)\n ], LegendSettings.prototype, \"shapeWidth\", void 0);\n __decorate([\n Complex({}, Border)\n ], LegendSettings.prototype, \"border\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, Margin)\n ], LegendSettings.prototype, \"margin\", void 0);\n __decorate([\n Complex({ left: 0, right: 0, top: 0, bottom: 0 }, ContainerPadding)\n ], LegendSettings.prototype, \"containerPadding\", void 0);\n __decorate([\n Property(5)\n ], LegendSettings.prototype, \"shapePadding\", void 0);\n __decorate([\n Property('transparent')\n ], LegendSettings.prototype, \"background\", void 0);\n __decorate([\n Property(1)\n ], LegendSettings.prototype, \"opacity\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"toggleVisibility\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"description\", void 0);\n __decorate([\n Property(3)\n ], LegendSettings.prototype, \"tabIndex\", void 0);\n __decorate([\n Property(null)\n ], LegendSettings.prototype, \"title\", void 0);\n __decorate([\n Complex(Theme.legendTitleFont, Font)\n ], LegendSettings.prototype, \"titleStyle\", void 0);\n __decorate([\n Property('Top')\n ], LegendSettings.prototype, \"titlePosition\", void 0);\n __decorate([\n Property(100)\n ], LegendSettings.prototype, \"maximumTitleWidth\", void 0);\n __decorate([\n Property(true)\n ], LegendSettings.prototype, \"enablePages\", void 0);\n return LegendSettings;\n}(ChildProperty));\nexport { LegendSettings };\n/**\n * Legend base class for Chart and Accumulation chart.\n * @private\n */\nvar BaseLegend = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n * @private\n */\n function BaseLegend(chart) {\n this.fivePixel = 5;\n this.rowCount = 0; // legend row counts per page\n this.columnCount = 0; // legend column counts per page\n this.pageButtonSize = 8;\n this.pageXCollections = []; // pages of x locations\n this.maxColumns = 0;\n this.isTrimmed = false;\n this.maxWidth = 0;\n this.currentPage = 1;\n this.backwardArrowOpacity = 0;\n this.forwardArrowOpacity = 1;\n this.arrowWidth = (2 * (this.fivePixel + this.pageButtonSize + this.fivePixel));\n this.arrowHeight = this.arrowWidth;\n this.legendTitleCollections = [];\n this.isTop = false;\n this.isTitle = false;\n this.currentPageNumber = 1;\n this.legendRegions = [];\n this.pagingRegions = [];\n this.chart = chart;\n this.legend = chart.legendSettings;\n this.legendID = chart.element.id + '_chart_legend';\n this.isChartControl = (chart.getModuleName() === 'chart');\n this.isBulletChartControl = (chart.getModuleName() === 'bulletChart');\n this.bulletChart = this.chart;\n }\n /**\n * Calculate the bounds for the legends.\n * @return {void}\n * @private\n */\n BaseLegend.prototype.calculateLegendBounds = function (rect, availableSize, maxLabelSize) {\n var legend = this.legend;\n this.getPosition(legend.position, availableSize);\n this.legendBounds = new Rect(rect.x, rect.y, 0, 0);\n var defaultValue = (this.isBulletChartControl) ? '40%' : '20%';\n this.isVertical = (this.position === 'Left' || this.position === 'Right');\n if (this.isVertical) {\n this.legendBounds.height = stringToNumber(legend.height, availableSize.height - (rect.y - this.chart.margin.top)) || rect.height;\n this.legendBounds.width = stringToNumber(legend.width || defaultValue, availableSize.width);\n }\n else {\n this.legendBounds.width = stringToNumber(legend.width, availableSize.width) || rect.width;\n this.legendBounds.height = stringToNumber(legend.height || defaultValue, availableSize.height);\n }\n this.library.getLegendBounds(availableSize, this.legendBounds, legend);\n if (!this.isBulletChartControl) {\n this.legendBounds.width += (this.legend.containerPadding.left + this.legend.containerPadding.right);\n this.legendBounds.height += (this.legend.containerPadding.top + this.legend.containerPadding.bottom);\n }\n this.getLocation(this.position, legend.alignment, this.legendBounds, rect, availableSize, maxLabelSize);\n };\n /**\n * To find legend position based on available size for chart and accumulation chart\n */\n BaseLegend.prototype.getPosition = function (position, availableSize) {\n var chart = this.chart;\n var accumulation = this.chart;\n if (this.isChartControl || this.isBulletChartControl) {\n this.position = (position !== 'Auto') ? position : 'Bottom';\n }\n else {\n if (position === 'Auto' && ((chart || accumulation).visibleSeries && (chart || accumulation).visibleSeries[0].type === 'Funnel' || (chart || accumulation).visibleSeries[0].type === 'Pyramid')) {\n position = 'Top';\n }\n this.position = (position !== 'Auto') ? position :\n (availableSize.width > availableSize.height ? 'Right' : 'Bottom');\n }\n };\n /**\n * To set bounds for chart and accumulation chart\n */\n BaseLegend.prototype.setBounds = function (computedWidth, computedHeight, legend, legendBounds) {\n var titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n if (this.isVertical && this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n titleHeight = legend.title && legend.titlePosition === 'Top' ? this.legendTitleSize.height + this.fivePixel : 0;\n titleHeight += (this.pageButtonSize + this.fivePixel);\n }\n computedWidth = Math.min(computedWidth, legendBounds.width);\n computedHeight = Math.min(computedHeight, legendBounds.height);\n legendBounds.width = !legend.width ? computedWidth : legendBounds.width;\n legendBounds.height = !legend.height ? computedHeight : legendBounds.height;\n if (!this.isBulletChartControl) {\n if (this.isTop && legend.titleStyle.textOverflow !== 'None') {\n this.calculateLegendTitle(legend, legendBounds);\n legendBounds.height += legend.titleStyle.textOverflow === 'Wrap' && this.legendTitleCollections.length > 1 ?\n (this.legendTitleSize.height - (this.legendTitleSize.height / this.legendTitleCollections.length)) : 0;\n }\n }\n this.rowCount = Math.max(1, Math.ceil((legendBounds.height - legend.padding - titleHeight) /\n (this.maxItemHeight + legend.padding)));\n };\n /**\n * To find legend location based on position, alignment for chart and accumulation chart\n */\n BaseLegend.prototype.getLocation = function (position, alignment, legendBounds, rect, availableSize, maxLabelSize) {\n var padding = this.legend.border.width;\n var isBulletChart = this.isBulletChartControl;\n var bulletChart = this.bulletChart;\n var labelIns = bulletChart.labelPosition === 'Inside';\n var ticklIns = bulletChart.tickPosition === 'Inside';\n var isVertical = bulletChart.orientation === 'Vertical';\n // tslint:disable-next-line:max-line-length\n var categoryFieldValue = (isBulletChart && bulletChart.categoryField !== '') ? maxLabelSize.width + this.chart.border.width + padding * 3 : 0;\n var legendHeight = legendBounds.height + padding + this.legend.margin.top + this.legend.margin.bottom;\n var legendWidth = legendBounds.width + padding + this.legend.margin.left + this.legend.margin.right;\n var marginBottom = this.chart.margin.bottom;\n if (position === 'Bottom') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n // tslint:disable-next-line:max-line-length\n legendBounds.y = rect.y + (rect.height - legendHeight) + padding + this.legend.margin.top;\n legendBounds.y += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns\n // tslint:disable-next-line:max-line-length\n //tslint:disable-next-line:max-line-length\n && !isVertical) ? bulletChart.majorTickLines.height + marginBottom + this.legend.border.width + padding * 2 :\n (isVertical && bulletChart.categoryField !== '') ? maxLabelSize.height + padding * 2 : 0;\n subtractThickness(rect, new Thickness(0, 0, 0, legendHeight));\n }\n else if (position === 'Top') {\n legendBounds.x = this.alignLegend(legendBounds.x, availableSize.width, legendBounds.width, alignment);\n legendBounds.y = rect.y + padding + this.legend.margin.top;\n legendBounds.y -= (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n // // tslint:disable-next-line:max-line-length\n !isVertical) ? bulletChart.majorTickLines.height + this.chart.margin.top : 0;\n legendHeight -= (isBulletChart) ? -padding * 2 : 0;\n subtractThickness(rect, new Thickness(0, 0, legendHeight, 0));\n }\n else if (position === 'Right') {\n legendBounds.x = rect.x + (rect.width - legendBounds.width) - this.legend.margin.right;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && bulletChart.opposedPosition && !labelIns && !ticklIns &&\n isVertical) ? (this.chart.margin.left + this.chart.margin.right + bulletChart.majorTickLines.height) : 0;\n subtractThickness(rect, new Thickness(0, legendWidth, 0, 0));\n }\n else if (position === 'Left') {\n legendBounds.x = legendBounds.x + this.legend.margin.left;\n legendBounds.y = rect.y + this.alignLegend(0, availableSize.height - (rect.y + marginBottom), legendBounds.height, alignment);\n legendWidth += (isBulletChart && !bulletChart.opposedPosition && !labelIns && !ticklIns &&\n // tslint:disable-next-line:max-line-length\n // tslint:disable-next-line:max-line-length\n isVertical) ? (legendBounds.x - this.chart.margin.left + padding + bulletChart.majorTickLines.height) :\n (bulletChart.orientation !== 'Vertical' && bulletChart.categoryField !== '') ? categoryFieldValue : 0;\n subtractThickness(rect, new Thickness(legendWidth, 0, 0, 0));\n }\n else {\n legendBounds.x = this.legend.location.x;\n legendBounds.y = this.legend.location.y;\n subtractThickness(rect, new Thickness(0, 0, 0, 0));\n }\n };\n /**\n * To find legend alignment for chart and accumulation chart\n */\n BaseLegend.prototype.alignLegend = function (start, size, legendSize, alignment) {\n switch (alignment) {\n case 'Far':\n start = (size - legendSize) - start;\n break;\n case 'Center':\n start = ((size - legendSize) / 2);\n break;\n }\n return start;\n };\n /**\n * Renders the legend.\n * @return {void}\n * @private\n */\n BaseLegend.prototype.renderLegend = function (chart, legend, legendBounds, redraw) {\n var firstLegend = this.findFirstLegendPosition(this.legendCollections);\n var padding = legend.padding;\n var titleHeight = 0;\n var titlePlusArrowWidth = 0;\n var isPaging = legend.enablePages;\n var titlePosition = legend.titlePosition;\n var upArrowHeight = this.isPaging && !legend.enablePages && this.isVertical ? this.pageButtonSize : 0;\n this.legendRegions = [];\n this.maxItemHeight = Math.max(this.legendCollections[0].textSize.height, legend.shapeHeight);\n var legendGroup = chart.renderer.createGroup({ id: this.legendID + '_g' });\n var legendTranslateGroup = this.createLegendElements(chart, legendBounds, legendGroup, legend, this.legendID, redraw);\n // For new legend navigation\n if (!isPaging && this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = !this.isTitle ? 0 : titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n titlePlusArrowWidth += (this.pageButtonSize + (2 * this.fivePixel));\n }\n else if (!this.isPaging && !this.isVertical) {\n titlePlusArrowWidth = this.isTitle && titlePosition === 'Left' ? (this.fivePixel + this.legendTitleSize.width) : 0;\n }\n titleHeight = !this.isTitle ? 0 : (this.isTop || this.isVertical ? this.legendTitleSize.height : 0);\n var pagingLegendBounds = new Rect(0, 0, 0, 0);\n var requireLegendBounds = new Rect(0, 0, 0, 0);\n if (firstLegend !== this.legendCollections.length) {\n var legendSeriesGroup = void 0; // legendItem group for each series group element\n var start = void 0; // starting shape center x,y position && to resolve lint error used new line for declaration\n start = new ChartLocation(this.isBulletChartControl ? legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) :\n legendBounds.x + titlePlusArrowWidth + padding + (legend.shapeWidth / 2) + legend.containerPadding.left, this.isBulletChartControl ? legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) :\n legendBounds.y + titleHeight + upArrowHeight + padding + (this.maxItemHeight / 2) + legend.containerPadding.top);\n var anchor = chart.isRtlEnabled ? 'end' : 'start';\n var textOptions = new TextOption('', start.x, start.y, anchor);\n // initialization for totalPages legend click totalpage again calculate\n this.totalPages = this.totalPages = (this.isChartControl || this.isBulletChartControl) ? this.totalPages : 0;\n var textPadding = legend.shapePadding + padding + legend.shapeWidth;\n var count = 0;\n this.pageXCollections = [];\n this.legendCollections[firstLegend].location = start;\n var previousLegend = this.legendCollections[firstLegend];\n if (!legend.enablePages && this.isPaging) {\n var x = start.x - this.fivePixel;\n var y = start.y - this.fivePixel;\n var rightSpace = this.isTitle && !this.isVertical && titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n var leftSpace = this.isTitle && !this.isVertical && titlePosition === 'Left' ?\n this.legendTitleSize.width + this.fivePixel : 0;\n rightSpace += this.isVertical ? 0 : (this.fivePixel + this.pageButtonSize + this.fivePixel);\n var bottomSapce = this.isVertical ? (this.pageButtonSize) + Math.abs(y - legendBounds.y) : 0;\n pagingLegendBounds = new Rect(x, y, legendBounds.width - rightSpace - leftSpace, legendBounds.height - bottomSapce);\n requireLegendBounds = pagingLegendBounds;\n }\n else {\n requireLegendBounds = legendBounds;\n }\n for (var _i = 0, _a = this.legendCollections; _i < _a.length; _i++) {\n var legendOption = _a[_i];\n if (this.chart.getModuleName() === 'accumulationchart') {\n // tslint:disable-next-line:max-line-length\n legendOption.fill = (this.chart || this.chart).visibleSeries[0].points[legendOption.pointIndex].color;\n }\n this.accessbilityText = (this.isBulletChartControl) ? 'Legend of bullet chart' + '' + legendOption.text\n : 'Click to show or hide the ' + legendOption.text + ' series';\n if (legendOption.render && legendOption.text !== '') {\n legendSeriesGroup = chart.renderer.createGroup({\n id: this.legendID + this.generateId(legendOption, '_g_', count)\n });\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('tabindex', legend.tabIndex.toString());\n legendSeriesGroup.setAttribute('aria-label', legend.description ||\n this.accessbilityText);\n }\n this.library.getRenderPoint(legendOption, start, textPadding, previousLegend, requireLegendBounds, count, firstLegend);\n this.renderSymbol(legendOption, legendSeriesGroup, count);\n this.renderText(chart, legendOption, legendSeriesGroup, textOptions, count);\n if (legendSeriesGroup) {\n legendSeriesGroup.setAttribute('style', 'cursor: ' + ((!legend.toggleVisibility && (chart.selectionMode === 'None' ||\n chart.highlightMode === 'None' ||\n chart.selectionMode === 'None') || this.isBulletChartControl) ? 'auto' : 'pointer'));\n }\n if (legendTranslateGroup) {\n legendTranslateGroup.appendChild(legendSeriesGroup);\n }\n previousLegend = legendOption;\n }\n count++;\n }\n if (this.isPaging) {\n this.renderPagingElements(chart, legendBounds, textOptions, legendGroup);\n }\n else {\n this.totalPages = 1;\n }\n }\n appendChildElement(chart.enableCanvas, chart.svgObject, legendGroup, redraw);\n };\n /**\n * To find first valid legend text index for chart and accumulation chart\n */\n BaseLegend.prototype.findFirstLegendPosition = function (legendCollection) {\n var count = 0;\n for (var _i = 0, legendCollection_1 = legendCollection; _i < legendCollection_1.length; _i++) {\n var legend = legendCollection_1[_i];\n if (legend.render && legend.text !== '') {\n break;\n }\n count++;\n }\n return count;\n };\n /**\n * To get the legend title text width and height.\n * @param legend\n * @param legendBounds\n */\n BaseLegend.prototype.calculateLegendTitle = function (legend, legendBounds) {\n if (legend.title) {\n this.isTop = legend.titlePosition === 'Top';\n var padding = legend.titleStyle.textOverflow === 'Trim' ? 2 * legend.padding : 0;\n if (this.isTop || this.isVertical) {\n this.legendTitleCollections = getTitle(legend.title, legend.titleStyle, (legendBounds.width - padding));\n }\n else {\n this.legendTitleCollections[0] = textTrim(legend.maximumTitleWidth, legend.title, legend.titleStyle);\n }\n var text = this.isTop ? legend.title : this.legendTitleCollections[0];\n this.legendTitleSize = measureText(text, legend.titleStyle);\n this.legendTitleSize.height *= this.legendTitleCollections.length;\n }\n else {\n this.legendTitleSize = new Size(0, 0);\n }\n };\n /**\n * Render the legend title\n * @param chart\n * @param legend\n * @param legendBounds\n * @param legendGroup\n */\n BaseLegend.prototype.renderLegendTitle = function (chart, legend, legendBounds, legendGroup) {\n var padding = legend.padding;\n this.isTop = legend.titlePosition === 'Top';\n var alignment = legend.titleStyle.textAlignment;\n var anchor = alignment === 'Near' ? 'start' : alignment === 'Far' ? 'end' : 'middle';\n anchor = this.isTop || this.isVertical ? anchor : '';\n var x = titlePositionX(legendBounds, legend.titleStyle);\n x = alignment === 'Near' ? (x + padding) : alignment === 'Far' ? (x - padding) : x;\n x = (this.isTop || this.isVertical) ? x : ((legendBounds.x) + (legend.titlePosition === 'Left' ? 5 :\n (legendBounds.width - this.legendTitleSize.width - 5)));\n var topPadding = (legendBounds.height / 2) + (this.legendTitleSize.height / 4);\n var y = legendBounds.y + (!this.isTop && !this.isVertical ? topPadding :\n (this.legendTitleSize.height / this.legendTitleCollections.length));\n var legendTitleTextOptions = new TextOption(this.legendID + '_title', x, y, anchor, this.legendTitleCollections);\n textElement(chart.renderer, legendTitleTextOptions, legend.titleStyle, legend.titleStyle.color, legendGroup);\n };\n /**\n * To create legend rendering elements for chart and accumulation chart\n * @param chart\n * @param legendBounds\n * @param legendGroup\n * @param legend\n * @param id\n * @param redraw\n */\n BaseLegend.prototype.createLegendElements = function (chart, legendBounds, legendGroup, legend, id, redraw) {\n var padding = legend.padding;\n var options = new RectOption(id + '_element', legend.background, legend.border, legend.opacity, legendBounds);\n legendGroup ? legendGroup.appendChild(chart.renderer.drawRectangle(options)) : chart.renderer.drawRectangle(options);\n if (legend.title) {\n this.renderLegendTitle(chart, legend, legendBounds, legendGroup);\n }\n var legendItemsGroup = chart.renderer.createGroup({ id: id + '_collections' });\n var isCanvas = chart.enableCanvas;\n if (!isCanvas) {\n legendGroup.appendChild(legendItemsGroup);\n }\n this.legendTranslateGroup = chart.renderer.createGroup({ id: id + '_translate_g' });\n if (!isCanvas) {\n legendItemsGroup.appendChild(this.legendTranslateGroup);\n }\n var clippath = chart.renderer.createClipPath({ id: id + '_clipPath' });\n options.y += padding + (this.isTop ? this.legendTitleSize.height : 0);\n options.id += '_clipPath_rect';\n options.width = ((!this.isChartControl && chart.getModuleName() !== 'bulletChart') && this.isVertical) ? this.maxWidth - padding + legend.containerPadding.left + legend.containerPadding.right\n : legendBounds.width;\n if (!isCanvas) {\n this.clipRect = chart.renderer.drawRectangle(options);\n clippath.appendChild(this.clipRect);\n }\n else {\n this.pagingClipRect = options;\n }\n appendChildElement(isCanvas, chart.svgObject, clippath, redraw);\n if (!isCanvas) {\n legendItemsGroup.setAttribute('style', 'clip-path:url(#' + clippath.id + ')');\n }\n return this.legendTranslateGroup;\n };\n /**\n * To render legend symbols for chart and accumulation chart\n */\n BaseLegend.prototype.renderSymbol = function (legendOption, group, i) {\n var borderColor;\n var control = this.isBulletChartControl ? this.chart : null;\n var symbolColor = legendOption.visible ? legendOption.fill : '#D3D3D3';\n var shape = (legendOption.shape === 'SeriesType') ? legendOption.type : legendOption.shape;\n shape = shape === 'Scatter' ? legendOption.markerShape : shape;\n var isStrokeWidth = (this.chart.getModuleName() === 'chart' && (legendOption.shape === 'SeriesType') &&\n (legendOption.type.toLowerCase().indexOf('line') > -1) && (legendOption.type.toLowerCase().indexOf('area') === -1));\n var strokewidth = isStrokeWidth ? this.chart.visibleSeries[i].width :\n (this.isBulletChartControl && legendOption.shape === 'Multiply') ? 4 : 1;\n var isCustomBorder = this.chart.getModuleName() === 'chart' &&\n (legendOption.type === 'Scatter' || legendOption.type === 'Bubble');\n if (isCustomBorder && i < this.chart.visibleSeries.length) {\n var seriesBorder = this.chart.visibleSeries[i].border;\n borderColor = seriesBorder.color ? seriesBorder.color : symbolColor;\n strokewidth = seriesBorder.width ? seriesBorder.width : 1;\n }\n var symbolOption = new PathOption(this.legendID + this.generateId(legendOption, '_shape_', i), symbolColor, strokewidth, (isCustomBorder ? borderColor : symbolColor), 1, '', '');\n var regionPadding;\n var isCanvas = this.chart.enableCanvas;\n if (!isCanvas) {\n group.appendChild(drawSymbol(legendOption.location, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), \n // tslint:disable-next-line:max-line-length\n // tslint:disable-next-line:align\n legendOption.url, symbolOption, this.accessbilityText, this.chart.renderer, null, this.isBulletChartControl, control));\n }\n else {\n regionPadding = -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber);\n drawSymbol(legendOption.location, shape, new Size(this.legend.shapeWidth, this.legend.shapeHeight), '', \n // tslint:disable-next-line:align\n symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ? new Rect(0, regionPadding, 0, 0) : null, this.isBulletChartControl, control);\n this.legendRegions.push({\n rect: new Rect(legendOption.location.x, legendOption.location.y, \n // tslint:disable-next-line:align\n this.legend.shapeWidth, this.legend.shapeHeight + regionPadding), index: i\n });\n }\n if (shape === 'Line' && legendOption.markerVisibility && legendOption.markerShape !== 'Image' ||\n legendOption.type === 'Doughnut') {\n symbolOption.id = this.legendID + this.generateId(legendOption, '_shape_marker_', i);\n shape = legendOption.type === 'Doughnut' ? 'Circle' : legendOption.markerShape;\n symbolOption.fill = legendOption.type === 'Doughnut' ? '#FFFFFF' : symbolOption.fill;\n if (!isCanvas) {\n // tslint:disable-next-line:max-line-length\n group.appendChild(drawSymbol(legendOption.location, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), \n // tslint:disable-next-line:align\n '', symbolOption, this.accessbilityText, null, null, this.isBulletChartControl, control));\n }\n else {\n drawSymbol(legendOption.location, shape, new Size(this.legend.shapeWidth / 2, this.legend.shapeHeight / 2), \n // tslint:disable-next-line:align\n '', symbolOption, this.accessbilityText, this.chart.renderer, this.currentPageNumber ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null, this.isBulletChartControl, control);\n }\n }\n };\n /**\n * To render legend text for chart and accumulation chart\n */\n BaseLegend.prototype.renderText = function (chart, legendOption, group, textOptions, i) {\n var legend = chart.legendSettings;\n var hiddenColor = '#D3D3D3';\n textOptions.id = this.legendID + this.generateId(legendOption, '_text_', i);\n var fontcolor = legendOption.visible ? legend.textStyle.color || chart.themeStyle.legendLabel : hiddenColor;\n textOptions.text = legendOption.text;\n textOptions.x = legendOption.location.x + (legend.shapeWidth / 2) + legend.shapePadding;\n textOptions.y = legendOption.location.y + this.maxItemHeight / 4;\n var isCanvas = this.chart.enableCanvas;\n var element = textElement(chart.renderer, textOptions, legend.textStyle, fontcolor, group, false, false, false, false, null, this.currentPageNumber && isCanvas ?\n new Rect(0, -this.translatePage(null, this.currentPageNumber - 1, this.currentPageNumber), 0, 0) : null);\n if (element) {\n element.setAttribute('aria-label', legend.description || this.accessbilityText);\n }\n if (isCanvas) {\n var textSize = measureText(textOptions.text, legend.textStyle);\n this.legendRegions[i].rect.y = textOptions.y < this.legendRegions[i].rect.y ? textOptions.y : this.legendRegions[i].rect.y;\n this.legendRegions[i].rect.width += textSize.width;\n this.legendRegions[i].rect.height = textSize.height;\n this.legendRegions[i].rect.y -= textSize.height * 0.5;\n }\n };\n /**\n * To render legend paging elements for chart and accumulation chart\n */\n // tslint:disable-next-line:max-func-body-length\n BaseLegend.prototype.renderPagingElements = function (chart, bounds, textOption, legendGroup) {\n var paginggroup = chart.renderer.createGroup({ id: this.legendID + '_navigation' });\n this.pagingRegions = [];\n var pageTextElement;\n var isCanvas = chart.enableCanvas;\n var titleHeight = this.isBulletChartControl ? 0 : this.legendTitleSize.height;\n this.backwardArrowOpacity = this.currentPage !== 1 ? 1 : 0;\n this.forwardArrowOpacity = this.currentPage === this.totalPages ? 0 : 1;\n if (!isCanvas) {\n legendGroup.appendChild(paginggroup);\n }\n var grayColor = '#545454';\n var legend = chart.legendSettings; // to solve parameter lint error, legend declaration is here\n var padding = 8; // const padding for paging elements\n if (this.isChartControl || this.isBulletChartControl || !this.isVertical) {\n this.totalPages = Math.ceil(this.totalPages / Math.max(1, this.rowCount - 1));\n }\n else {\n this.totalPages = Math.ceil(this.totalPages / this.maxColumns);\n }\n var symbolOption = new PathOption(this.legendID + '_pageup', 'transparent', 5, grayColor, 1, '', '');\n var iconSize = this.pageButtonSize;\n if (paginggroup) {\n paginggroup.setAttribute('style', 'cursor: pointer');\n }\n // Page left arrow drawing calculation started here\n var rowCount = !legend.enablePages && this.isPaging && !this.isVertical && !this.isBulletChartControl ? 1 :\n (this.rowCount - 1);\n this.clipPathHeight = rowCount * (this.maxItemHeight + legend.padding);\n if (!isCanvas) {\n this.clipRect.setAttribute('height', this.clipPathHeight.toString());\n }\n else {\n //paging clipRect only for canvas mode\n this.pagingClipRect.height = this.legendBounds.height - this.clipPathHeight -\n (this.pagingClipRect.y - this.legendBounds.y) - legend.border.width;\n this.pagingClipRect.y = this.pagingClipRect.y + this.clipPathHeight;\n this.pagingClipRect.x += legend.border.width;\n this.pagingClipRect.width -= (legend.border.width + legend.border.width / 2);\n this.chart.renderer.clearRect(new Rect(this.pagingClipRect.x, this.pagingClipRect.y, this.pagingClipRect.width, this.pagingClipRect.height));\n }\n var titleWidth = this.isTitle && legend.titlePosition === 'Left' ? this.legendTitleSize.width : 0;\n var x = (bounds.x + iconSize / 2);\n var y = bounds.y + this.clipPathHeight + ((titleHeight + bounds.height - this.clipPathHeight) / 2);\n if (this.isPaging && !legend.enablePages && !this.isVertical && !this.isBulletChartControl) {\n x = (bounds.x + this.fivePixel + this.pageButtonSize + titleWidth);\n y = legend.title && this.isTop ? (bounds.y + padding + titleHeight + (iconSize / 1) + 0.5) :\n (bounds.y + padding + iconSize + 0.5);\n }\n var size = measureText(this.totalPages + '/' + this.totalPages, legend.textStyle);\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + (iconSize / 2) + padding + titleHeight;\n symbolOption.opacity = this.backwardArrowOpacity;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'UpArrow', new Size(iconSize, iconSize), '', symbolOption, 'UpArrow'));\n }\n else {\n symbolOption.opacity = this.isBulletChartControl ? symbolOption.opacity :\n (legend.enablePages ? 1 : this.backwardArrowOpacity);\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'LeftArrow', new Size(iconSize, iconSize), '', symbolOption, 'LeftArrow', this.chart.renderer, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(x + bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5, y - iconSize * 0.5, iconSize, iconSize));\n // Page numbering rendering calculation started here\n textOption.x = x + (iconSize / 2) + padding;\n textOption.y = y + (size.height / 4);\n textOption.id = this.legendID + '_pagenumber';\n textOption.text = '1/' + this.totalPages;\n if (isCanvas && this.totalNoOfPages) {\n textOption.text = this.currentPageNumber + '/' + this.totalNoOfPages;\n }\n if (legend.enablePages || this.isBulletChartControl) {\n pageTextElement = textElement(chart.renderer, textOption, legend.textStyle, legend.textStyle.color, paginggroup, false, false, false, false, null, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n // Page right arrow rendering calculation started here\n x = textOption.x + padding + (iconSize / 2) + size.width;\n if (this.isPaging && !legend.enablePages && !this.isVertical) {\n x = (bounds.x + bounds.width - this.fivePixel - this.pageButtonSize - (legend.title && legend.titlePosition === 'Right' ?\n this.legendTitleSize.width + this.fivePixel : 0));\n }\n symbolOption.id = this.legendID + '_pagedown';\n symbolOption.opacity = !legend.enablePages ? this.forwardArrowOpacity : 1;\n if (!isCanvas) {\n if (this.isVertical && !legend.enablePages && !this.isBulletChartControl) {\n x = bounds.x + (bounds.width / 2);\n y = bounds.y + bounds.height - (iconSize / 2) - padding;\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'DownArrow', new Size(iconSize, iconSize), '', symbolOption, 'DownArrow'));\n }\n else {\n paginggroup.appendChild(drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow'));\n }\n }\n else {\n drawSymbol({ x: x, y: y }, 'RightArrow', new Size(iconSize, iconSize), '', symbolOption, 'RightArrow', this.chart.renderer, new Rect(bounds.width - (2 * (iconSize + padding) + padding + size.width), 0, 0, 0));\n }\n this.pagingRegions.push(new Rect(x + (bounds.width - (2 * (iconSize + padding) + padding + size.width) - iconSize * 0.5), y - iconSize * 0.5, iconSize, iconSize));\n if (!isCanvas && (legend.enablePages || this.isBulletChartControl)) {\n //placing the navigation buttons and page numbering in legend right corner\n paginggroup.setAttribute('transform', 'translate(' + (bounds.width - (2 * (iconSize + padding) +\n padding + size.width)) + ', ' + 0 + ')');\n }\n else {\n if (this.currentPageNumber === 1 && this.calTotalPage && (legend.enablePages || this.isBulletChartControl)) {\n this.totalNoOfPages = this.totalPages;\n this.calTotalPage = false;\n }\n if (!legend.enablePages && !this.isBulletChartControl) { // For new legend page navigation\n this.translatePage(null, this.currentPage - 1, this.currentPage, legend);\n }\n }\n if (legend.enablePages || this.isBulletChartControl) {\n this.translatePage(pageTextElement, this.currentPage - 1, this.currentPage, legend);\n }\n };\n /**\n * To translate legend pages for chart and accumulation chart\n */\n BaseLegend.prototype.translatePage = function (pagingText, page, pageNumber, legend) {\n var size = (this.clipPathHeight) * page;\n var translate = 'translate(0,-' + size + ')';\n if (!this.isChartControl && !this.isBulletChartControl && this.isVertical) {\n var pageLength = page * this.maxColumns;\n size = this.pageXCollections[page * this.maxColumns] - this.legendBounds.x;\n size = size < 0 ? 0 : size; // to avoid small pixel variation\n translate = 'translate(-' + size + ',0)';\n }\n if (!this.chart.enableCanvas) {\n this.legendTranslateGroup.setAttribute('transform', translate);\n }\n if (!this.chart.enableCanvas && (legend.enablePages || this.isBulletChartControl)) {\n pagingText.textContent = (pageNumber) + '/' + this.totalPages;\n }\n this.currentPage = pageNumber;\n return size;\n };\n /**\n * To change legend pages for chart and accumulation chart\n */\n BaseLegend.prototype.changePage = function (event, pageUp) {\n var legend = this.chart.legendSettings;\n var backwardArrow = document.getElementById(this.legendID + '_pageup');\n var forwardArrow = document.getElementById(this.legendID + '_pagedown');\n var pageText = (legend.enablePages || this.isBulletChartControl) ?\n document.getElementById(this.legendID + '_pagenumber') : null;\n var page = (legend.enablePages || this.isBulletChartControl) ? parseInt(pageText.textContent.split('/')[0], 10) :\n this.currentPage;\n if (pageUp && page > 1) {\n this.translatePage(pageText, (page - 2), (page - 1), legend);\n }\n else if (!pageUp && page < this.totalPages) {\n this.translatePage(pageText, page, (page + 1), legend);\n }\n if (this.isPaging && !legend.enablePages && !this.isBulletChartControl) {\n this.currentPage === this.totalPages ? this.hideArrow(forwardArrow) : this.showArrow(forwardArrow);\n this.currentPage === 1 ? this.hideArrow(backwardArrow) : this.showArrow(backwardArrow);\n }\n };\n /**\n * To hide the backward and forward arrow\n * @param arrowElement\n */\n BaseLegend.prototype.hideArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '0');\n };\n /**\n * To show the backward and forward arrow\n * @param arrowElement\n */\n BaseLegend.prototype.showArrow = function (arrowElement) {\n arrowElement.setAttribute('opacity', '1');\n };\n /**\n * To find legend elements id based on chart or accumulation chart\n * @private\n */\n BaseLegend.prototype.generateId = function (option, prefix, count) {\n if (this.isChartControl) {\n return prefix + count;\n }\n else {\n return prefix + option.pointIndex;\n }\n };\n /**\n * To show or hide trimmed text tooltip for legend.\n * @return {void}\n * @private\n */\n BaseLegend.prototype.move = function (event) {\n var _this = this;\n var x = this.chart.mouseX;\n var y = this.chart.mouseY;\n if (event.target.textContent.indexOf('...') > -1) {\n var targetId = event.target.id.split(this.legendID + '_text_');\n if (targetId.length === 2) {\n var index = parseInt(targetId[1], 10);\n var element = this.chart.element;\n if (!isNaN(index)) {\n if (this.chart.isTouch) {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.isChartControl) {\n showTooltip(this.chart.series[index].name, x, y, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n else {\n showTooltip(this.chart.visibleSeries[0].points[index].x.toString(), x + 10, y + 10, element.offsetWidth, element.id + '_EJ2_Legend_Tooltip', getElement(this.chart.element.id + '_Secondary_Element'));\n }\n }\n }\n }\n else {\n removeElement(this.chart.element.id + '_EJ2_Legend_Tooltip');\n }\n if (this.chart.isTouch) {\n clearTimeout(this.clearTooltip);\n this.clearTooltip = setTimeout(function () { removeElement(_this.chart.element.id + '_EJ2_Legend_Tooltip'); }, 1000);\n }\n };\n return BaseLegend;\n}());\nexport { BaseLegend };\n/**\n * Class for legend options\n * @private\n */\nvar LegendOptions = /** @class */ (function () {\n function LegendOptions(text, fill, shape, visible, type, url, markerShape, markerVisibility, pointIndex, seriesIndex) {\n this.location = { x: 0, y: 0 };\n this.text = text;\n this.fill = fill;\n this.shape = shape;\n this.url = url;\n this.visible = visible;\n this.type = type;\n this.markerVisibility = markerVisibility;\n this.markerShape = markerShape;\n this.pointIndex = pointIndex;\n this.seriesIndex = seriesIndex;\n }\n return LegendOptions;\n}());\nexport { LegendOptions };\n","module.exports = require(\"core-js/library/fn/symbol\");","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { ChildProperty, Property, Complex, Collection } from '@syncfusion/ej2-base';\nimport { Theme } from '../../common/model/theme';\nimport { Font, Border } from '../../common/model/base';\n/**\n * Configures the Annotation for chart.\n */\nvar ChartAnnotationSettings = /** @class */ (function (_super) {\n __extends(ChartAnnotationSettings, _super);\n function ChartAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"x\", void 0);\n __decorate([\n Property('0')\n ], ChartAnnotationSettings.prototype, \"y\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"content\", void 0);\n __decorate([\n Property('Center')\n ], ChartAnnotationSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Pixel')\n ], ChartAnnotationSettings.prototype, \"coordinateUnits\", void 0);\n __decorate([\n Property('Chart')\n ], ChartAnnotationSettings.prototype, \"region\", void 0);\n __decorate([\n Property('Middle')\n ], ChartAnnotationSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"xAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"yAxisName\", void 0);\n __decorate([\n Property(null)\n ], ChartAnnotationSettings.prototype, \"description\", void 0);\n return ChartAnnotationSettings;\n}(ChildProperty));\nexport { ChartAnnotationSettings };\n/**\n * label border properties.\n */\nvar LabelBorder = /** @class */ (function (_super) {\n __extends(LabelBorder, _super);\n function LabelBorder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], LabelBorder.prototype, \"color\", void 0);\n __decorate([\n Property(1)\n ], LabelBorder.prototype, \"width\", void 0);\n __decorate([\n Property('Rectangle')\n ], LabelBorder.prototype, \"type\", void 0);\n return LabelBorder;\n}(ChildProperty));\nexport { LabelBorder };\n/**\n * categories for multi level labels\n */\nvar MultiLevelCategories = /** @class */ (function (_super) {\n __extends(MultiLevelCategories, _super);\n function MultiLevelCategories() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"end\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"maximumTextWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiLevelCategories.prototype, \"customAttributes\", void 0);\n __decorate([\n Property('')\n ], MultiLevelCategories.prototype, \"type\", void 0);\n return MultiLevelCategories;\n}(ChildProperty));\nexport { MultiLevelCategories };\n/**\n * Strip line properties\n */\nvar StripLineSettings = /** @class */ (function (_super) {\n __extends(StripLineSettings, _super);\n function StripLineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], StripLineSettings.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"startFromAxis\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"start\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"end\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"size\", void 0);\n __decorate([\n Property('#808080')\n ], StripLineSettings.prototype, \"color\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"dashArray\", void 0);\n __decorate([\n Property('Auto')\n ], StripLineSettings.prototype, \"sizeType\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isRepeat\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatEvery\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"repeatUntil\", void 0);\n __decorate([\n Property(false)\n ], StripLineSettings.prototype, \"isSegmented\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentStart\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentEnd\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"segmentAxisName\", void 0);\n __decorate([\n Complex({ color: 'transparent', width: 1 }, Border)\n ], StripLineSettings.prototype, \"border\", void 0);\n __decorate([\n Property('')\n ], StripLineSettings.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], StripLineSettings.prototype, \"rotation\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"horizontalAlignment\", void 0);\n __decorate([\n Property('Middle')\n ], StripLineSettings.prototype, \"verticalAlignment\", void 0);\n __decorate([\n Complex(Theme.stripLineLabelFont, Font)\n ], StripLineSettings.prototype, \"textStyle\", void 0);\n __decorate([\n Property('Behind')\n ], StripLineSettings.prototype, \"zIndex\", void 0);\n __decorate([\n Property(1)\n ], StripLineSettings.prototype, \"opacity\", void 0);\n return StripLineSettings;\n}(ChildProperty));\nexport { StripLineSettings };\n/**\n * MultiLevelLabels properties\n */\nvar MultiLevelLabels = /** @class */ (function (_super) {\n __extends(MultiLevelLabels, _super);\n function MultiLevelLabels() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Center')\n ], MultiLevelLabels.prototype, \"alignment\", void 0);\n __decorate([\n Property('Wrap')\n ], MultiLevelLabels.prototype, \"overflow\", void 0);\n __decorate([\n Complex(Theme.axisLabelFont, Font)\n ], MultiLevelLabels.prototype, \"textStyle\", void 0);\n __decorate([\n Complex({ color: null, width: 1, type: 'Rectangle' }, LabelBorder)\n ], MultiLevelLabels.prototype, \"border\", void 0);\n __decorate([\n Collection([], MultiLevelCategories)\n ], MultiLevelLabels.prototype, \"categories\", void 0);\n return MultiLevelLabels;\n}(ChildProperty));\nexport { MultiLevelLabels };\n/**\n * Specifies range for scrollbarSettings property\n * @public\n */\nvar ScrollbarSettingsRange = /** @class */ (function (_super) {\n __extends(ScrollbarSettingsRange, _super);\n function ScrollbarSettingsRange() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"minimum\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettingsRange.prototype, \"maximum\", void 0);\n return ScrollbarSettingsRange;\n}(ChildProperty));\nexport { ScrollbarSettingsRange };\n/**\n * Scrollbar Settings Properties for Lazy Loading\n */\nvar ScrollbarSettings = /** @class */ (function (_super) {\n __extends(ScrollbarSettings, _super);\n function ScrollbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], ScrollbarSettings.prototype, \"enable\", void 0);\n __decorate([\n Property(null)\n ], ScrollbarSettings.prototype, \"pointsLength\", void 0);\n __decorate([\n Complex({}, ScrollbarSettingsRange)\n ], ScrollbarSettings.prototype, \"range\", void 0);\n return ScrollbarSettings;\n}(ChildProperty));\nexport { ScrollbarSettings };\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n var topData = '';\n var leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, axis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null };\n var eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n };\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n var elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\nfunction setPopup(element, pos, elementRect) {\n var left = 0;\n var top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n element.style.top = (pos.position.top + pos.offsetY - (top)) + 'px';\n element.style.left = (pos.position.left + pos.offsetX - (left)) + 'px';\n}\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\nfunction leftCollideCheck(left, right) {\n var leftSide = false;\n var rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left >= ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\nfunction topCollideCheck(top, bottom) {\n var topSide = false;\n var bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : document.documentElement.offsetWidth;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","export default function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n this._t = String(iterated); // target\n this._i = 0; // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var index = this._i;\n var point;\n if (index >= O.length) return { value: undefined, done: true };\n point = $at(O, index);\n this._i += point.length;\n return { value: point, done: false };\n});\n","module.exports = {};\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","'use strict';\n\n\nmodule.exports = {\n copy: copy,\n checkDataType: checkDataType,\n checkDataTypes: checkDataTypes,\n coerceToTypes: coerceToTypes,\n toHash: toHash,\n getProperty: getProperty,\n escapeQuotes: escapeQuotes,\n equal: require('fast-deep-equal'),\n ucs2length: require('./ucs2length'),\n varOccurences: varOccurences,\n varReplace: varReplace,\n schemaHasRules: schemaHasRules,\n schemaHasRulesExcept: schemaHasRulesExcept,\n schemaUnknownRules: schemaUnknownRules,\n toQuotedString: toQuotedString,\n getPathExpr: getPathExpr,\n getPath: getPath,\n getData: getData,\n unescapeFragment: unescapeFragment,\n unescapeJsonPointer: unescapeJsonPointer,\n escapeFragment: escapeFragment,\n escapeJsonPointer: escapeJsonPointer\n};\n\n\nfunction copy(o, to) {\n to = to || {};\n for (var key in o) to[key] = o[key];\n return to;\n}\n\n\nfunction checkDataType(dataType, data, strictNumbers, negate) {\n var EQUAL = negate ? ' !== ' : ' === '\n , AND = negate ? ' || ' : ' && '\n , OK = negate ? '!' : ''\n , NOT = negate ? '' : '!';\n switch (dataType) {\n case 'null': return data + EQUAL + 'null';\n case 'array': return OK + 'Array.isArray(' + data + ')';\n case 'object': return '(' + OK + data + AND +\n 'typeof ' + data + EQUAL + '\"object\"' + AND +\n NOT + 'Array.isArray(' + data + '))';\n case 'integer': return '(typeof ' + data + EQUAL + '\"number\"' + AND +\n NOT + '(' + data + ' % 1)' +\n AND + data + EQUAL + data +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n case 'number': return '(typeof ' + data + EQUAL + '\"' + dataType + '\"' +\n (strictNumbers ? (AND + OK + 'isFinite(' + data + ')') : '') + ')';\n default: return 'typeof ' + data + EQUAL + '\"' + dataType + '\"';\n }\n}\n\n\nfunction checkDataTypes(dataTypes, data, strictNumbers) {\n switch (dataTypes.length) {\n case 1: return checkDataType(dataTypes[0], data, strictNumbers, true);\n default:\n var code = '';\n var types = toHash(dataTypes);\n if (types.array && types.object) {\n code = types.null ? '(': '(!' + data + ' || ';\n code += 'typeof ' + data + ' !== \"object\")';\n delete types.null;\n delete types.array;\n delete types.object;\n }\n if (types.number) delete types.integer;\n for (var t in types)\n code += (code ? ' && ' : '' ) + checkDataType(t, data, strictNumbers, true);\n\n return code;\n }\n}\n\n\nvar COERCE_TO_TYPES = toHash([ 'string', 'number', 'integer', 'boolean', 'null' ]);\nfunction coerceToTypes(optionCoerceTypes, dataTypes) {\n if (Array.isArray(dataTypes)) {\n var types = [];\n for (var i=0; i= lvl) throw new Error('Cannot access property/index ' + up + ' levels up, current level is ' + lvl);\n return paths[lvl - up];\n }\n\n if (up > lvl) throw new Error('Cannot access data ' + up + ' levels up, current level is ' + lvl);\n data = 'data' + ((lvl - up) || '');\n if (!jsonPointer) return data;\n }\n\n var expr = data;\n var segments = jsonPointer.split('/');\n for (var i=0; i -1 || event.target.id.indexOf('_datalabel_') > -1) {\n var pointIndex = indexFinder(event.target.id).point;\n if (isNaN(pointIndex) || (event.target.id.indexOf('_datalabel_') > -1 &&\n this.accumulation.visibleSeries[0].points[pointIndex].labelPosition === 'Outside')) {\n return null;\n }\n this.explodePoints(pointIndex, this.accumulation);\n this.deExplodeAll(pointIndex, this.accumulation.enableAnimation ? 300 : 0);\n }\n };\n /**\n * To invoke the explode on accumulation chart loading\n * @private\n */\n AccumulationBase.prototype.invokeExplode = function () {\n var series = this.accumulation.visibleSeries[0];\n var duration = this.accumulation.enableAnimation ? 300 : 0;\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (point.isExplode) {\n this.pointExplode(point.index, point, duration);\n }\n }\n if (this.accumulation.accumulationSelectionModule && this.accumulation.selectionMode !== 'None' &&\n this.accumulation.accumulationSelectionModule.selectedDataIndexes.length) {\n for (var _b = 0, _c = this.accumulation.accumulationSelectionModule.selectedDataIndexes; _b < _c.length; _b++) {\n var index = _c[_b];\n this.explodePoints(index.point, this.accumulation, true);\n this.deExplodeAll(index.point, duration);\n }\n }\n };\n /**\n * To deExplode all points in the series\n * @private\n */\n AccumulationBase.prototype.deExplodeAll = function (index, animationDuration) {\n var pointId = this.accumulation.element.id + '_Series_0_Point_';\n var points = this.accumulation.visibleSeries[0].points;\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var currentPoint = points_1[_i];\n if ((index !== currentPoint.index && !currentPoint.isSliced) || currentPoint.isClubbed) {\n currentPoint.isExplode = false;\n this.deExplodeSlice(currentPoint.index, pointId, animationDuration);\n }\n }\n };\n /**\n * To explode point by index\n * @private\n */\n AccumulationBase.prototype.explodePoints = function (index, chart, explode) {\n if (explode === void 0) { explode = false; }\n var series = chart.visibleSeries[0];\n var points = series.points;\n var point = pointByIndex(index, points);\n var explodePoints = true;\n var duration = this.accumulation.enableAnimation ? 300 : 0;\n if (isNullOrUndefined(point)) {\n return null;\n }\n var clubPointsExploded = !explode &&\n (point.isSliced || (series.clubbedPoints.length &&\n points[points.length - 1].index === series.clubbedPoints[series.clubbedPoints.length - 1].index));\n if (series.type === 'Pie' && (clubPointsExploded || point.isClubbed)) {\n explodePoints = this.clubPointExplode(index, point, series, points, chart, duration, explode, clubPointsExploded);\n }\n if (explodePoints) {\n this.pointExplode(index, point, duration, explode);\n }\n };\n AccumulationBase.prototype.getSum = function (points) {\n var total = 0;\n points.map(function (point) {\n total += point.visible ? point.y : 0;\n });\n return total;\n };\n ;\n AccumulationBase.prototype.clubPointExplode = function (index, point, series, points, chart, duration, explode, clubPointsExploded) {\n if (explode === void 0) { explode = false; }\n if (clubPointsExploded === void 0) { clubPointsExploded = false; }\n if (point.isClubbed) {\n chart.animateSeries = false;\n points.splice(points.length - 1, 1);\n series.clubbedPoints.map(function (point) {\n point.visible = true;\n point.isExplode = true;\n });\n chart.visibleSeries[0].points = points.concat(series.clubbedPoints);\n this.deExplodeAll(index, duration);\n series.sumOfPoints = this.getSum(chart.visibleSeries[0].points);\n chart.refreshChart();\n return false;\n }\n else if (clubPointsExploded || point.isSliced) {\n chart.animateSeries = false;\n points.splice(points.length - series.clubbedPoints.length, series.clubbedPoints.length);\n var clubPoint = series.generateClubPoint();\n clubPoint.index = points.length;\n clubPoint.color = series.clubbedPoints[0].color;\n points.push(clubPoint);\n series.sumOfPoints = this.getSum(points);\n this.deExplodeAll(index, duration);\n clubPoint.isExplode = false;\n chart.visibleSeries[0].points = points;\n chart.refreshChart();\n this.pointExplode(clubPoint.index, points[clubPoint.index], 0, true);\n clubPoint.isExplode = false;\n this.deExplodeSlice(clubPoint.index, chart.element.id + '_Series_0_Point_', duration);\n if (point.isSliced) {\n return false;\n }\n }\n return true;\n };\n /**\n * To Explode points\n * @param index\n * @param point\n * @param explode\n */\n AccumulationBase.prototype.pointExplode = function (index, point, duration, explode) {\n var translate;\n var pointId = this.accumulation.element.id + '_Series_0_Point_';\n var chart = this.accumulation;\n if (!this.isCircular()) {\n translate = {\n x: ((point.labelRegion && point.labelRegion.x < point.region.x) ? -chart.explodeDistance :\n chart.explodeDistance), y: 0\n };\n }\n else {\n translate = degreeToLocation(point.midAngle, chart.explodeDistance, this.center);\n }\n if (this.isExplode(pointId + index) || explode) {\n point.isExplode = true;\n this.explodeSlice(index, translate, pointId, this.center || { x: 0, y: 0 }, duration);\n }\n else {\n point.isExplode = false;\n this.deExplodeSlice(index, pointId, duration);\n }\n };\n /**\n * To check point is exploded by id\n */\n AccumulationBase.prototype.isExplode = function (id) {\n var element = getElement(id);\n var transform = element ? element.getAttribute('transform') : null;\n return (element && (transform === 'translate(0, 0)' || transform === null || transform === 'translate(0)'));\n };\n /**\n * To deExplode the point by index\n */\n AccumulationBase.prototype.deExplodeSlice = function (index, sliceId, animationDuration) {\n var element = getElement(sliceId + index);\n if (element) {\n var borderElement = element.parentNode.lastChild.hasAttribute('transform');\n if (borderElement) {\n element.parentNode.lastChild.removeAttribute('transform');\n }\n }\n var transform = element ? element.getAttribute('transform') : null;\n if (this.accumulation.enableAnimation && element && transform &&\n transform !== 'translate(0, 0)' && transform !== 'translate(0)') {\n var result = /translate\\((-?\\d+\\.?\\d*),?\\s*(-?\\d+[.]?\\d*)?\\)/.exec(transform);\n this.performAnimation(index, sliceId, 0, 0, +result[1], +result[2] || 0, animationDuration, true);\n }\n else {\n this.performAnimation(index, sliceId, 0, 0, 0, 0, animationDuration, true);\n }\n };\n /**\n * To translate the point elements by index and position\n */\n AccumulationBase.prototype.setTranslate = function (index, sliceId, position, transform) {\n this.setElementTransform(sliceId + index, position);\n if (this.accumulation.visibleSeries[0].dataLabel.visible) {\n sliceId = this.accumulation.element.id + '_datalabel_Series_0_';\n this.setElementTransform(sliceId + 'shape_' + index, position);\n this.setElementTransform(sliceId + 'text_' + index, position + transform);\n this.setElementTransform(sliceId + 'connector_' + index, position);\n }\n };\n /**\n * To translate the point element by id and position\n */\n AccumulationBase.prototype.setElementTransform = function (id, position) {\n var element = getElement(id);\n if (element) {\n element.setAttribute('transform', position);\n }\n };\n /**\n * To translate the point elements by index position\n */\n AccumulationBase.prototype.explodeSlice = function (index, translate, sliceId, center, animationDuration) {\n this.performAnimation(index, sliceId, 0, 0, translate.x - center.x, translate.y - center.y, animationDuration);\n };\n /**\n * To Perform animation point explode\n * @param index\n * @param sliceId\n * @param start\n * @param endX\n * @param endY\n */\n AccumulationBase.prototype.performAnimation = function (index, sliceId, startX, startY, endX, endY, duration, isReverse) {\n var _this = this;\n var chart = this.accumulation;\n var seriesIndex;\n var point;\n var values = sliceId.split('_');\n seriesIndex = parseInt(sliceId.split('_')[values.length - 3], 10);\n point = chart.visibleSeries[seriesIndex].points[index];\n if (duration <= 0) {\n this.setTranslate(index, sliceId, 'translate(' + (endX) + ', ' + (endY) + ')', point.transform);\n return null;\n }\n var xValue;\n var yValue;\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n progress: function (args) {\n xValue = linear(args.timeStamp, startX, endX, args.duration);\n yValue = linear(args.timeStamp, startY, endY, args.duration);\n _this.setTranslate(index, sliceId, 'translate(' + (isReverse ? endX - xValue : xValue) + ', ' + (isReverse ? endY - yValue : yValue) + ')', point.transform);\n },\n end: function (model) {\n _this.setTranslate(index, sliceId, 'translate(' + (isReverse ? startX : endX) + ', ' + (isReverse ? startX : endY) + ')', point.transform);\n }\n });\n };\n return AccumulationBase;\n}());\nexport { AccumulationBase };\n","import { withInBounds, PointData, getValueXByPoint, getValueYByPoint } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\n/**\n * To get the data on mouse move.\n * @private\n */\nvar ChartData = /** @class */ (function () {\n /**\n * Constructor for the data.\n * @private\n */\n function ChartData(chart) {\n /** @private */\n this.currentPoints = [];\n /** @private */\n this.previousPoints = [];\n this.insideRegion = false;\n this.chart = chart;\n this.lierIndex = 0;\n }\n /**\n * Method to get the Data.\n * @private\n */\n ChartData.prototype.getData = function () {\n var chart = this.chart;\n var point = null;\n var series = null;\n var width;\n var height;\n var mouseX;\n var mouseY;\n for (var len = chart.visibleSeries.length, i = len - 1; i >= 0; i--) {\n series = chart.visibleSeries[i];\n width = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.height + 5) / 2 : 0;\n height = (series.type === 'Scatter' || series.drawType === 'Scatter' || (series.marker.visible))\n ? (series.marker.width + 5) / 2 : 0;\n mouseX = chart.mouseX;\n mouseY = chart.mouseY;\n if (series.dragSettings.enable && series.isRectSeries) {\n if (!(series.type === 'Bar' && chart.isTransposed) && (chart.isTransposed || series.type === 'Bar')) {\n var markerWidth = series.marker.width / 2;\n mouseX = series.yAxis.isInversed ? mouseX + markerWidth : mouseX - markerWidth;\n }\n else {\n var markerHeight = series.marker.height / 2;\n mouseY = series.yAxis.isInversed ? mouseY - markerHeight : mouseY + markerHeight;\n }\n }\n if (series.visible && withInBounds(mouseX, mouseY, series.clipRect, width, height)) {\n point = this.getRectPoint(series, series.clipRect, mouseX, mouseY);\n }\n if (point) {\n return new PointData(point, series);\n }\n }\n return new PointData(point, series);\n };\n ChartData.prototype.isSelected = function (chart) {\n return ((chart.selectionMode.indexOf('Drag') > -1 || chart.selectionMode.indexOf('Lasso') > -1) && chart.selectionModule &&\n chart.selectionModule.rectPoints !== null);\n };\n ChartData.prototype.getRectPoint = function (series, rect, x, y) {\n var currentRect;\n var chart = this.chart;\n var fromCenterX;\n var fromCenterY;\n var clickAngle;\n var arcAngle = 0;\n var startAngle;\n var endAngle;\n var distanceFromCenter;\n if (chart.isScrolling) {\n return null;\n }\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (!point.regionData) {\n if (!point.regions || !point.regions.length) {\n continue;\n }\n }\n if (point.regionData && this.chart.chartAreaType === 'PolarRadar' && series.drawType.indexOf('Column') > -1) {\n fromCenterX = x - (series.clipRect.width / 2 + series.clipRect.x);\n fromCenterY = y - (series.clipRect.height / 2 + series.clipRect.y);\n arcAngle = 2 * Math.PI * (point.regionData.currentXPosition < 0 ? 1 + point.regionData.currentXPosition\n : point.regionData.currentXPosition);\n clickAngle = (Math.atan2(fromCenterY, fromCenterX) + 0.5 * Math.PI - arcAngle) % (2 * Math.PI);\n clickAngle = clickAngle < 0 ? 2 * Math.PI + clickAngle : clickAngle;\n clickAngle = clickAngle + 2 * Math.PI * series.chart.primaryXAxis.startAngle;\n startAngle = point.regionData.startAngle;\n startAngle -= arcAngle;\n startAngle = startAngle < 0 ? 2 * Math.PI + startAngle : startAngle;\n endAngle = point.regionData.endAngle;\n endAngle -= arcAngle;\n endAngle = endAngle < 0 ? 2 * Math.PI + endAngle : endAngle;\n distanceFromCenter = Math.sqrt(Math.pow(Math.abs(fromCenterX), 2) + Math.pow(Math.abs(fromCenterY), 2));\n if (clickAngle >= startAngle && clickAngle <= endAngle &&\n (((distanceFromCenter >= point.regionData.innerRadius && distanceFromCenter <= point.regionData.radius) ||\n (distanceFromCenter <= point.regionData.innerRadius && distanceFromCenter >= point.regionData.radius))\n && distanceFromCenter <= series.chart.radius)) {\n return point;\n }\n }\n if ((series.dragSettings.enable && series.isRectSeries) || (series.isRectSeries && series.marker.visible)) {\n if (this.isPointInThresholdRegion(x, y, point, rect, series)) {\n this.insideRegion = true;\n return point;\n }\n }\n if (!this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n else if (this.insideRegion && this.checkRegionContainsPoint(point.regions, rect, x, y)) {\n return point;\n }\n }\n return null;\n };\n /**\n * Checks whether the region contains a point\n */\n ChartData.prototype.checkRegionContainsPoint = function (regionRect, rect, x, y) {\n var _this = this;\n return regionRect.some(function (region, index) {\n _this.lierIndex = index;\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y, region.width, region.height));\n });\n };\n /**\n * To check the point in threshold region for column and bar series\n * @param x\n * @param y\n * @param point\n * @param rect\n * @param series\n */\n ChartData.prototype.isPointInThresholdRegion = function (x, y, point, rect, series) {\n var _this = this;\n var isBar = series.type === 'Bar';\n var isInversed = series.yAxis.isInversed;\n var isTransposed = series.chart.isTransposed;\n var heightValue = 10;\n var yValue = 0;\n var xValue = 0;\n var width;\n var height = width = 2 * heightValue;\n if (isInversed && isTransposed) {\n if (isBar) {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n }\n else if (isInversed || point.yValue < 0) {\n if (isBar) {\n xValue = -heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = point.regions[0].height - heightValue;\n width = point.regions[0].width;\n }\n }\n else if (isTransposed) {\n if (isBar) {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n else {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n }\n else {\n if (isBar) {\n xValue = point.regions[0].width - heightValue;\n height = point.regions[0].height;\n }\n else {\n yValue = -heightValue;\n width = point.regions[0].width;\n }\n }\n return point.regions.some(function (region) {\n return withInBounds(x, y, new Rect((_this.chart.chartAreaType === 'Cartesian' ? rect.x : 0) + region.x + xValue, (_this.chart.chartAreaType === 'Cartesian' ? rect.y : 0) + region.y + yValue, width, height));\n });\n };\n /**\n * @private\n */\n ChartData.prototype.getClosest = function (series, value) {\n var xData = series.xData;\n var closest;\n if (value >= series.xMin - 0.5 && value <= series.xMax + 0.5) {\n for (var _i = 0, xData_1 = xData; _i < xData_1.length; _i++) {\n var data = xData_1[_i];\n if (closest == null || Math.abs(data - value) < Math.abs(closest - value)) {\n closest = data;\n }\n }\n }\n else if (xData.length === 1) {\n closest = xData[0];\n }\n return closest;\n };\n ChartData.prototype.getClosestX = function (chart, series) {\n var value;\n var rect = series.clipRect;\n if (!chart.requireInvertedAxis) {\n value = getValueXByPoint(chart.mouseX - rect.x, rect.width, series.xAxis);\n }\n else {\n value = getValueYByPoint(chart.mouseY - rect.y, rect.height, series.xAxis);\n }\n var closest = this.getClosest(series, value);\n for (var _i = 0, _a = series.points; _i < _a.length; _i++) {\n var point = _a[_i];\n if (closest === point.xValue && point.visible) {\n return new PointData(point, series);\n }\n }\n return null;\n };\n return ChartData;\n}());\nexport { ChartData };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { formatUnit } from '@syncfusion/ej2-base';\nimport { columnWidthChanged, preventFrozenScrollRefresh } from '../base/constant';\nimport { Column } from '../models/column';\nimport { parentsUntil, ispercentageWidth, getScrollBarWidth } from '../base/util';\n/**\n * ColumnWidthService\n * @hidden\n */\nvar ColumnWidthService = /** @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[j], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[i].minWidth, this.parent.getColumnIndexByField(collection[i].field));\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', this.parent.getColumnIndexByField(collection[i].field) + this.parent.getIndentCount(), true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[k].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[k].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.e-movableheader');\n var mCont = this.parent.getContent().querySelector('.e-movablecontent');\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols && mHdr && mHdr.querySelector('colgroup')) {\n headerCol = mHdr.querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup = mHdr.querySelector('colgroup');\n headerCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector('colgroup').children[index];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup = this.parent.getContent().querySelector('.e-movablecontent')\n .querySelector('colgroup');\n contentCol = colGroup.children[(colGroup.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content.querySelector('colgroup').children[index];\n }\n if (contentCol && !clear) {\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[i], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[i].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[i].querySelector('colgroup').children[j]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[index].style.width = fWidth;\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector('colgroup')) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup = [].slice.call(ele.querySelector('colgroup').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup[colGroup.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup[0];\n }\n else if (columns[index].freeze === 'Left') {\n headerCol = colGroup[isDrag ? (index + 1) : index];\n }\n else if (columns[index].freeze === 'Right') {\n headerCol = colGroup[index - (left + movable)];\n }\n else {\n headerCol = colGroup[index - left];\n }\n return headerCol;\n };\n /** @hidden */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.e-frozencontent');\n var movableContent = this.parent.getContent().querySelector('.e-movablecontent');\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList = ['e-gridheader', 'e-gridfooter', 'e-groupdroparea', 'e-gridpager', 'e-toolbar'];\n while (sibling) {\n if (classList.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === 'frozen-left' || column.getFreezeTableName() === 'frozen-right')) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector('.e-table');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.e-table');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild) {\n this.parent.getHeaderContent().querySelector('.e-movableheader').firstElementChild.style.width\n = movableWidth;\n }\n this.parent.getContent().querySelector('.e-movablecontent').firstElementChild.style.width =\n movableWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\n}());\nexport { ColumnWidthService };\n","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","module.exports = require(\"core-js/library/fn/object/get-own-property-symbols\");","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n * @private\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n */\n Popup.prototype.destroy = function () {\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n */\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n this.element.appendChild(this.content);\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var display = this.element.style.display;\n var parentDisplay = void 0;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY) {\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n * @param { AnimationModel | Function } collisionOrAnimationOptions? - To pass animation options or collision function.\n * @param { Function } collision? - To pass the collision function.\n * @param { HTMLElement } relativeElement? - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n this.wireEvents();\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n * @param { AnimationModel } animationOptions? - To give the animation options.\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && this.element.offsetParent && this.element.offsetParent.tagName === 'BODY') {\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @private\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n //Body direct children element traversal\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n // Checking the max-zindex value\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","module.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n","module.exports = true;\n","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n 'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n 'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n 'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n 'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n var NAME = DOMIterables[i];\n var Collection = global[NAME];\n var proto = Collection && Collection.prototype;\n if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n Iterators[NAME] = Iterators.Array;\n}\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var ctx = require('./_ctx');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar anObject = require('./_an-object');\nvar toLength = require('./_to-length');\nvar getIterFn = require('./core.get-iterator-method');\nvar BREAK = {};\nvar RETURN = {};\nvar exports = module.exports = function (iterable, entries, fn, that, ITERATOR) {\n var iterFn = ITERATOR ? function () { return iterable; } : getIterFn(iterable);\n var f = ctx(fn, that, entries ? 2 : 1);\n var index = 0;\n var length, step, iterator, result;\n if (typeof iterFn != 'function') throw TypeError(iterable + ' is not iterable!');\n // fast case for arrays with default iterator\n if (isArrayIter(iterFn)) for (length = toLength(iterable.length); length > index; index++) {\n result = entries ? f(anObject(step = iterable[index])[0], step[1]) : f(iterable[index]);\n if (result === BREAK || result === RETURN) return result;\n } else for (iterator = iterFn.call(iterable); !(step = iterator.next()).done;) {\n result = call(iterator, f, step.value, entries);\n if (result === BREAK || result === RETURN) return result;\n }\n};\nexports.BREAK = BREAK;\nexports.RETURN = RETURN;\n","var assignValue = require('./_assignValue'),\n baseAssignValue = require('./_baseAssignValue');\n\n/**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\nfunction copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n}\n\nmodule.exports = copyObject;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeysIn = require('./_baseKeysIn'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\nfunction keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n}\n\nmodule.exports = keysIn;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","module.exports = require(\"core-js/library/fn/parse-int\");","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","exports.f = {}.propertyIsEnumerable;\n","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n","exports.f = require('./_wks');\n","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = require('./_dom-create')('iframe');\n var i = enumBugKeys.length;\n var lt = '<';\n var gt = '>';\n var iframeDocument;\n iframe.style.display = 'none';\n require('./_html').appendChild(iframe);\n iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n // createDict = iframe.contentWindow.Object;\n // html.removeChild(iframe);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n iframeDocument.close();\n createDict = iframeDocument.F;\n while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = createDict();\n return Properties === undefined ? result : dPs(result, Properties);\n};\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var arrayPush = require('./_arrayPush'),\n isFlattenable = require('./_isFlattenable');\n\n/**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\nfunction baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n}\n\nmodule.exports = baseFlatten;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n var O, T, B;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n // builtinTag case\n : ARG ? cof(O)\n // ES3 arguments fallback\n : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","/**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\nfunction copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n}\n\nmodule.exports = copyArray;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArrayLike = require('./isArrayLike'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\nmodule.exports = isArrayLikeObject;\n","'use strict';\n\nvar randomFromSeed = require('./random/random-from-seed');\n\nvar ORIGINAL = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_-';\nvar alphabet;\nvar previousSeed;\n\nvar shuffled;\n\nfunction reset() {\n shuffled = false;\n}\n\nfunction setCharacters(_alphabet_) {\n if (!_alphabet_) {\n if (alphabet !== ORIGINAL) {\n alphabet = ORIGINAL;\n reset();\n }\n return;\n }\n\n if (_alphabet_ === alphabet) {\n return;\n }\n\n if (_alphabet_.length !== ORIGINAL.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. You submitted ' + _alphabet_.length + ' characters: ' + _alphabet_);\n }\n\n var unique = _alphabet_.split('').filter(function(item, ind, arr){\n return ind !== arr.lastIndexOf(item);\n });\n\n if (unique.length) {\n throw new Error('Custom alphabet for shortid must be ' + ORIGINAL.length + ' unique characters. These characters were not unique: ' + unique.join(', '));\n }\n\n alphabet = _alphabet_;\n reset();\n}\n\nfunction characters(_alphabet_) {\n setCharacters(_alphabet_);\n return alphabet;\n}\n\nfunction setSeed(seed) {\n randomFromSeed.seed(seed);\n if (previousSeed !== seed) {\n reset();\n previousSeed = seed;\n }\n}\n\nfunction shuffle() {\n if (!alphabet) {\n setCharacters(ORIGINAL);\n }\n\n var sourceArray = alphabet.split('');\n var targetArray = [];\n var r = randomFromSeed.nextValue();\n var characterIndex;\n\n while (sourceArray.length > 0) {\n r = randomFromSeed.nextValue();\n characterIndex = Math.floor(r * sourceArray.length);\n targetArray.push(sourceArray.splice(characterIndex, 1)[0]);\n }\n return targetArray.join('');\n}\n\nfunction getShuffled() {\n if (shuffled) {\n return shuffled;\n }\n shuffled = shuffle();\n return shuffled;\n}\n\n/**\n * lookup shuffled letter\n * @param index\n * @returns {string}\n */\nfunction lookup(index) {\n var alphabetShuffled = getShuffled();\n return alphabetShuffled[index];\n}\n\nfunction get () {\n return alphabet || ORIGINAL;\n}\n\nmodule.exports = {\n get: get,\n characters: characters,\n seed: setSeed,\n lookup: lookup,\n shuffled: getShuffled\n};\n","'use strict';\nconst strictUriEncode = require('strict-uri-encode');\nconst decodeComponent = require('decode-uri-component');\nconst splitOnFirst = require('split-on-first');\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (value === null || value === undefined || value.length === 0) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.split('').indexOf(options.arrayFormatSeparator) > -1;\n\t\t\t\tconst newValue = isArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(input, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof input !== 'string') {\n\t\treturn ret;\n\t}\n\n\tinput = input.trim().replace(/^[?#&]/, '');\n\n\tif (!input) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of input.split('&')) {\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url, hash] = splitOnFirst(input, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url.split('?')[0] || '',\n\t\t\tquery: parse(extract(input), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (input, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true\n\t}, options);\n\n\tconst url = removeHash(input.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(input.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, input.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(input.url);\n\tif (input.fragmentIdentifier) {\n\t\thash = `#${encode(input.fragmentIdentifier, options)}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n","module.exports = require(\"core-js/library/fn/object/define-property\");","module.exports = require(\"core-js/library/fn/object/set-prototype-of\");","module.exports = require(\"core-js/library/fn/get-iterator\");","import { getMinPointsDelta, getActualDesiredIntervalsCount, setRange, triggerLabelRender } from '../../common/utils/helper';\nimport { DoubleRange } from '../utils/double-range';\nimport { withIn, logBase } from '../../common/utils/helper';\nimport { isNullOrUndefined, extend, getValue } from '@syncfusion/ej2-base';\n/**\n * Numeric module is used to render numeric axis.\n */\nvar Double = /** @class */ (function () {\n /**\n * Constructor for the dateTime module.\n * @private\n */\n function Double(chart) {\n this.isColumn = 0;\n this.chart = chart;\n }\n /**\n * Numeric Nice Interval for the axis.\n * @private\n */\n Double.prototype.calculateNumericNiceInterval = function (axis, delta, size) {\n var actualDesiredIntervalsCount = getActualDesiredIntervalsCount(size, axis);\n var niceInterval = delta / actualDesiredIntervalsCount;\n if (!isNullOrUndefined(axis.desiredIntervals)) {\n return niceInterval;\n }\n var minInterval = Math.pow(10, Math.floor(logBase(niceInterval, 10)));\n for (var _i = 0, _a = axis.intervalDivs; _i < _a.length; _i++) {\n var interval = _a[_i];\n var currentInterval = minInterval * interval;\n if (actualDesiredIntervalsCount < (delta / currentInterval)) {\n break;\n }\n niceInterval = currentInterval;\n }\n return niceInterval;\n };\n /**\n * Actual Range for the axis.\n * @private\n */\n Double.prototype.getActualRange = function (axis, size) {\n this.initializeDoubleRange(axis);\n if ((!axis.startFromZero) && (this.isColumn > 0)) {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.max = axis.doubleRange.end + axis.actualRange.interval;\n if ((axis.doubleRange.start - axis.actualRange.interval < 0 && axis.doubleRange.start > 0)) {\n axis.actualRange.min = 0;\n }\n else {\n axis.actualRange.min = axis.doubleRange.start - axis.actualRange.interval;\n }\n }\n else {\n axis.actualRange.interval = axis.interval || this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n axis.actualRange.min = axis.doubleRange.start;\n axis.actualRange.max = axis.doubleRange.end;\n }\n };\n /**\n * Range for the axis.\n * @private\n */\n Double.prototype.initializeDoubleRange = function (axis) {\n //Axis Min\n if (axis.minimum !== null) {\n this.min = axis.minimum;\n }\n else if (this.min === null || this.min === Number.POSITIVE_INFINITY) {\n this.min = 0;\n }\n // Axis Max\n if (axis.maximum !== null) {\n this.max = axis.maximum;\n }\n else if (this.max === null || this.max === Number.NEGATIVE_INFINITY) {\n this.max = 5;\n }\n if (this.min === this.max) {\n this.max = axis.valueType.indexOf('Category') > -1 ? this.max : this.min + 1;\n }\n axis.doubleRange = new DoubleRange(this.min, this.max);\n axis.actualRange = {};\n };\n /**\n * The function to calculate the range and labels for the axis.\n * @return {void}\n * @private\n */\n Double.prototype.calculateRangeAndInterval = function (size, axis) {\n this.calculateRange(axis, size);\n this.getActualRange(axis, size);\n this.applyRangePadding(axis, size);\n this.calculateVisibleLabels(axis, this.chart);\n };\n /**\n * Calculate Range for the axis.\n * @private\n */\n Double.prototype.calculateRange = function (axis, size) {\n /*! Generate axis range */\n var series;\n this.min = null;\n this.max = null;\n if (!setRange(axis)) {\n for (var _i = 0, _a = axis.series; _i < _a.length; _i++) {\n var series_1 = _a[_i];\n if (!series_1.visible) {\n continue;\n }\n this.paddingInterval = 0;\n axis.maxPointLength = series_1.points.length;\n if (((series_1.type.indexOf('Column') > -1 || series_1.type.indexOf('Histogram') > -1) && axis.orientation === 'Horizontal')\n || (series_1.type.indexOf('Bar') > -1 && axis.orientation === 'Vertical')) {\n if ((series_1.xAxis.valueType === 'Double' || series_1.xAxis.valueType === 'DateTime')\n && series_1.xAxis.rangePadding === 'Auto') {\n this.paddingInterval = getMinPointsDelta(series_1.xAxis, axis.series) * 0.5;\n }\n }\n //For xRange\n if (axis.orientation === 'Horizontal') {\n if (this.chart.requireInvertedAxis) {\n this.yAxisRange(axis, series_1);\n }\n else {\n this.findMinMax(series_1.xMin - this.paddingInterval, series_1.xMax + this.paddingInterval);\n }\n }\n // For yRange\n if (axis.orientation === 'Vertical') {\n this.isColumn += (series_1.type === 'Column' || series_1.type === 'Bar' || series_1.drawType === 'Column') ? 1 : 0;\n if (this.chart.requireInvertedAxis) {\n this.findMinMax(series_1.xMin - this.paddingInterval, series_1.xMax + this.paddingInterval);\n }\n else {\n this.yAxisRange(axis, series_1);\n }\n }\n }\n }\n };\n Double.prototype.yAxisRange = function (axis, series) {\n if (series.dragSettings.enable && this.chart.dragY) {\n if (this.chart.dragY >= axis.visibleRange.max) {\n series.yMax = this.chart.dragY + axis.visibleRange.interval;\n }\n if (this.chart.dragY <= axis.visibleRange.min) {\n series.yMin = this.chart.dragY - axis.visibleRange.interval;\n }\n }\n this.findMinMax(series.yMin, series.yMax);\n };\n Double.prototype.findMinMax = function (min, max) {\n if (this.min === null || this.min > min) {\n this.min = min;\n }\n if (this.max === null || this.max < max) {\n this.max = max;\n }\n if ((this.max === this.min) && this.max < 0 && this.min < 0) { // max == min\n this.max = 0;\n }\n };\n /**\n * Apply padding for the range.\n * @private\n */\n Double.prototype.applyRangePadding = function (axis, size) {\n var range;\n var start = axis.actualRange.min;\n var end = axis.actualRange.max;\n if (!setRange(axis)) {\n var interval = axis.actualRange.interval;\n var padding = axis.getRangePadding(this.chart);\n if (padding === 'Additional' || padding === 'Round') {\n this.findAdditional(axis, start, end, interval);\n }\n else if (padding === 'Normal') {\n this.findNormal(axis, start, end, interval, size);\n }\n else {\n this.updateActualRange(axis, start, end, interval);\n }\n }\n axis.actualRange.delta = axis.actualRange.max - axis.actualRange.min;\n this.calculateVisibleRange(size, axis);\n };\n Double.prototype.updateActualRange = function (axis, minimum, maximum, interval) {\n axis.actualRange = {\n min: axis.minimum != null ? axis.minimum : minimum,\n max: axis.maximum != null ? axis.maximum : maximum,\n interval: axis.interval != null ? axis.interval : interval,\n delta: axis.actualRange.delta\n };\n };\n Double.prototype.findAdditional = function (axis, start, end, interval) {\n var minimum;\n var maximum;\n minimum = Math.floor(start / interval) * interval;\n maximum = Math.ceil(end / interval) * interval;\n if (axis.rangePadding === 'Additional') {\n minimum -= interval;\n maximum += interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n Double.prototype.findNormal = function (axis, start, end, interval, size) {\n var remaining;\n var minimum;\n var maximum;\n var startValue = start;\n if (start < 0) {\n startValue = 0;\n minimum = start + (start * 0.05);\n remaining = interval + (minimum % interval);\n if ((0.365 * interval) >= remaining) {\n minimum -= interval;\n }\n if (minimum % interval < 0) {\n minimum = (minimum - interval) - (minimum % interval);\n }\n }\n else {\n minimum = start < ((5.0 / 6.0) * end) ? 0 : (start - (end - start) * 0.5);\n if (minimum % interval > 0) {\n minimum -= (minimum % interval);\n }\n }\n maximum = (end > 0) ? (end + (end - startValue) * 0.05) : (end - (end - startValue) * 0.05);\n remaining = interval - (maximum % interval);\n if ((0.365 * interval) >= remaining) {\n maximum += interval;\n }\n if (maximum % interval > 0) {\n maximum = (maximum + interval) - (maximum % interval);\n }\n axis.doubleRange = new DoubleRange(minimum, maximum);\n if (minimum === 0) {\n interval = this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size);\n maximum = Math.ceil(maximum / interval) * interval;\n }\n this.updateActualRange(axis, minimum, maximum, interval);\n };\n /**\n * Calculate visible range for axis.\n * @private\n */\n Double.prototype.calculateVisibleRange = function (size, axis) {\n axis.visibleRange = {\n max: axis.actualRange.max, min: axis.actualRange.min,\n delta: axis.actualRange.delta, interval: axis.actualRange.interval\n };\n if (this.chart.chartAreaType === 'Cartesian') {\n var isLazyLoad = isNullOrUndefined(axis.zoomingScrollBar) ? false : axis.zoomingScrollBar.isLazyLoad;\n if ((axis.zoomFactor < 1 || axis.zoomPosition > 0) && !isLazyLoad) {\n axis.calculateVisibleRangeOnZooming(this.chart);\n axis.calculateAxisRange(size, this.chart);\n axis.visibleRange.interval = (axis.enableAutoIntervalOnZooming && axis.valueType !== 'Category') ?\n this.calculateNumericNiceInterval(axis, axis.doubleRange.delta, size)\n : axis.visibleRange.interval;\n }\n }\n axis.triggerRangeRender(this.chart, axis.visibleRange.min, axis.visibleRange.max, axis.visibleRange.interval);\n };\n /**\n * Calculate label for the axis.\n * @private\n */\n Double.prototype.calculateVisibleLabels = function (axis, chart) {\n /*! Generate axis labels */\n axis.visibleLabels = [];\n var tempInterval = axis.visibleRange.min;\n var labelStyle;\n var controlName = chart.getModuleName();\n var isPolarRadar = controlName === 'chart' && chart.chartAreaType === 'PolarRadar';\n if (!isPolarRadar && (axis.zoomFactor < 1 || axis.zoomPosition > 0 || this.paddingInterval)) {\n tempInterval = axis.visibleRange.min - (axis.visibleRange.min % axis.visibleRange.interval);\n }\n var format = this.getFormat(axis);\n var isCustom = format.match('{value}') !== null;\n var intervalDigits = 0;\n var formatDigits = 0;\n if (axis.labelFormat && axis.labelFormat.indexOf('n') > -1) {\n formatDigits = parseInt(axis.labelFormat.substring(1, axis.labelFormat.length), 10);\n }\n axis.format = chart.intl.getNumberFormat({\n format: isCustom ? '' : format,\n useGrouping: chart.useGroupingSeparator\n });\n axis.startLabel = axis.format(axis.visibleRange.min);\n axis.endLabel = axis.format(axis.visibleRange.max);\n if (axis.visibleRange.interval && (axis.visibleRange.interval + '').indexOf('.') >= 0) {\n intervalDigits = (axis.visibleRange.interval + '').split('.')[1].length;\n }\n var duplicateTempInterval;\n for (; (tempInterval <= axis.visibleRange.max) && (duplicateTempInterval !== tempInterval); tempInterval += axis.visibleRange.interval) {\n duplicateTempInterval = tempInterval;\n labelStyle = (extend({}, getValue('properties', axis.labelStyle), null, true));\n if (withIn(tempInterval, axis.visibleRange)) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (tempInterval && (tempInterval + '').indexOf('.') >= 0 && (tempInterval + '').split('.')[1].length > 10) {\n tempInterval = (tempInterval + '').split('.')[1].length > (formatDigits || intervalDigits) ?\n +tempInterval.toFixed(formatDigits || intervalDigits) : tempInterval;\n if (tempInterval <= axis.visibleRange.max) {\n triggerLabelRender(chart, tempInterval, this.formatValue(axis, isCustom, format, tempInterval), labelStyle, axis);\n }\n }\n if (axis.getMaxLabelWidth) {\n axis.getMaxLabelWidth(this.chart);\n }\n };\n /**\n * Format of the axis label.\n * @private\n */\n Double.prototype.getFormat = function (axis) {\n if (axis.labelFormat) {\n if (axis.labelFormat.indexOf('p') === 0 && axis.labelFormat.indexOf('{value}') === -1 && axis.isStack100) {\n return '{value}%';\n }\n return axis.labelFormat;\n }\n return axis.isStack100 ? '{value}%' : '';\n };\n /**\n * Formatted the axis label.\n * @private\n */\n Double.prototype.formatValue = function (axis, isCustom, format, tempInterval) {\n return isCustom ? format.replace('{value}', axis.format(tempInterval))\n : axis.format(tempInterval);\n };\n return Double;\n}());\nexport { Double };\n","import { Query, DataManager, Deferred } from '@syncfusion/ej2-data';\n/**\n * data module is used to generate query and dataSource\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n * @private\n */\n function Data(dataSource, query) {\n this.initDataManager(dataSource, query);\n }\n /**\n * The function used to initialize dataManager and query\n * @return {void}\n * @private\n */\n Data.prototype.initDataManager = function (dataSource, query) {\n this.dataManager = dataSource instanceof DataManager ? dataSource : new DataManager(dataSource);\n this.query = query instanceof Query ? query : new Query();\n };\n /**\n * The function used to generate updated Query from chart model\n * @return {void}\n * @private\n */\n Data.prototype.generateQuery = function () {\n var query = this.query.clone();\n return query;\n };\n /**\n * The function used to get dataSource by executing given Query\n * @param {Query} query - A Query that specifies to generate dataSource\n * @return {void}\n * @private\n */\n Data.prototype.getData = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function (e) {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n return Data;\n}());\nexport { Data };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { extend } from '@syncfusion/ej2-base';\nimport { ChartLocation, withInBounds } from '../../common/utils/helper';\nimport { Rect, Size, measureText } from '@syncfusion/ej2-svg-base';\nimport { stopTimer, removeElement } from '../../common/utils/helper';\nimport { ChartData } from '../../chart/utils/get-data';\nimport { Tooltip as SVGTooltip } from '@syncfusion/ej2-svg-base';\n/**\n * Tooltip Module used to render the tooltip for series.\n */\nvar BaseTooltip = /** @class */ (function (_super) {\n __extends(BaseTooltip, _super);\n /**\n * Constructor for tooltip module.\n * @private.\n */\n function BaseTooltip(chart) {\n var _this = _super.call(this, chart) || this;\n _this.element = _this.chart.element;\n _this.textStyle = chart.tooltip.textStyle;\n _this.control = chart;\n return _this;\n }\n BaseTooltip.prototype.getElement = function (id) {\n return document.getElementById(id);\n };\n /**\n * Renders the tooltip.\n * @return {void}\n * @private\n */\n BaseTooltip.prototype.getTooltipElement = function (isTooltip) {\n this.inverted = this.chart.requireInvertedAxis;\n this.header = (this.control.tooltip.header === null) ?\n ((this.control.tooltip.shared) ? '${point.x}' : '${series.name}')\n : (this.control.tooltip.header);\n this.formattedText = [];\n var tooltipDiv = document.getElementById(this.chart.element.id + '_tooltip');\n var isStockChart = this.chart.element.id.indexOf('stockChart') > -1;\n if (!isTooltip && !tooltipDiv || isStockChart) {\n return this.createElement();\n }\n return null;\n };\n BaseTooltip.prototype.createElement = function () {\n var tooltipDiv = document.createElement('div');\n tooltipDiv.id = this.element.id + '_tooltip';\n tooltipDiv.className = 'ejSVGTooltip';\n tooltipDiv.setAttribute('style', 'pointer-events:none; position:absolute;z-index: 1');\n return tooltipDiv;\n };\n BaseTooltip.prototype.pushData = function (data, isFirst, tooltipDiv, isChart) {\n if (data.series.enableTooltip) {\n if (isChart) {\n this.currentPoints.push(data);\n }\n else {\n this.currentPoints.push(data);\n }\n this.stopAnimation();\n if (tooltipDiv && !document.getElementById(tooltipDiv.id)) {\n if (!this.chart.stockChart) {\n document.getElementById(this.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n else {\n document.getElementById(this.chart.stockChart.element.id + '_Secondary_Element').appendChild(tooltipDiv);\n }\n }\n return true;\n }\n return false;\n };\n BaseTooltip.prototype.removeHighlight = function (chart) {\n var item;\n var series;\n for (var i = 0, len = this.previousPoints.length; i < len; i++) {\n item = this.previousPoints[i];\n if (item.series.isRectSeries) {\n if (item.series.visible) {\n this.highlightPoint(item.series, item.point.index, false);\n }\n continue;\n }\n series = item.series;\n if (!series.marker.visible && item.series.type !== 'Scatter' && item.series.type !== 'Bubble') {\n this.previousPoints.shift();\n len -= 1;\n }\n }\n };\n BaseTooltip.prototype.highlightPoint = function (series, pointIndex, highlight) {\n var element = this.getElement(this.element.id + '_Series_' + series.index + '_Point_' + pointIndex);\n var selectionModule = this.control.accumulationSelectionModule;\n var isSelectedElement = selectionModule && selectionModule.selectedDataIndexes.length > 0 ? true : false;\n if (element) {\n if ((!isSelectedElement || isSelectedElement && element.getAttribute('class')\n && element.getAttribute('class').indexOf('_ej2_chart_selection_series_') === -1)) {\n element.setAttribute('opacity', (highlight ? series.opacity / 2 : series.opacity).toString());\n }\n else {\n element.setAttribute('opacity', series.opacity.toString());\n }\n }\n };\n BaseTooltip.prototype.highlightPoints = function () {\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var item = _a[_i];\n if (item.series.isRectSeries && item.series.category === 'Series') {\n this.highlightPoint(item.series, item.point.index, true);\n }\n }\n };\n BaseTooltip.prototype.createTooltip = function (chart, isFirst, location, clipLocation, point, shapes, offset, bounds, extraPoints, templatePoint, customTemplate) {\n if (extraPoints === void 0) { extraPoints = null; }\n if (templatePoint === void 0) { templatePoint = null; }\n var series = this.currentPoints[0].series;\n var module = chart.tooltipModule || chart.accumulationTooltipModule;\n if (!module) { // For the tooltip enable is false.\n return;\n }\n var isNegative = (series.isRectSeries && series.type !== 'Waterfall' && point && point.y < 0);\n var inverted = this.chart.requireInvertedAxis && series.isRectSeries;\n var position = null;\n if (this.text.length <= 1) {\n var contentSize = measureText(this.text[0], chart.tooltip.textStyle);\n var headerSize = (!(this.header === '' || this.header === '')) ? measureText(this.header, this.textStyle) :\n new Size(0, 0);\n // marker size + arrowpadding + 2 * padding + markerpadding\n var markerSize = 10 + 12 + (2 * 10) + 5;\n contentSize.width = Math.max(contentSize.width, headerSize.width) + ((shapes.length > 0) ? markerSize : 0);\n var heightPadding = 12 + (2 * 10) + (headerSize.height > 0 ? (2 * 10) : 0);\n contentSize.height = contentSize.height + headerSize.height + heightPadding;\n position = this.getCurrentPosition(isNegative, inverted);\n position = this.getPositionBySize(contentSize, new Rect(0, 0, bounds.width, bounds.height), location, position);\n isNegative = (position === 'Left') || (position === 'Bottom');\n inverted = (position === 'Left') || (position === 'Right');\n }\n // else if (tooltipPosition !== 'None' && this.text.length <= 1) {\n // position = tooltipPosition as TooltipPlacement;\n // isNegative = (position === 'Left') || (position === 'Bottom');\n // inverted = (position === 'Left') || (position === 'Right');\n // }\n if (isFirst) {\n this.svgTooltip = new SVGTooltip({\n opacity: chart.tooltip.opacity,\n header: this.headerText,\n content: this.text,\n fill: chart.tooltip.fill,\n border: chart.tooltip.border,\n enableAnimation: chart.tooltip.enableAnimation,\n location: location,\n shared: chart.tooltip.shared,\n shapes: shapes,\n clipBounds: this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation,\n areaBounds: bounds,\n palette: this.findPalette(),\n template: customTemplate || chart.tooltip.template,\n data: templatePoint,\n theme: chart.theme,\n offset: offset,\n textStyle: chart.tooltip.textStyle,\n isNegative: isNegative,\n inverted: inverted,\n arrowPadding: this.text.length > 1 || this.chart.stockChart ? 0 : 12,\n availableSize: chart.availableSize,\n duration: this.chart.tooltip.duration,\n isCanvas: this.chart.enableCanvas,\n isTextWrap: chart.tooltip.enableTextWrap && chart.getModuleName() === 'chart',\n blazorTemplate: { name: 'Template', parent: this.chart.tooltip },\n controlInstance: this.chart,\n tooltipPlacement: position,\n tooltipRender: function () {\n module.removeHighlight(module.control);\n module.highlightPoints();\n module.updatePreviousPoint(extraPoints);\n },\n animationComplete: function (args) {\n if (args.tooltip.fadeOuted) {\n module.fadeOut(module.previousPoints, chart);\n }\n }\n }, '#' + this.element.id + '_tooltip');\n }\n else {\n if (this.svgTooltip) {\n this.svgTooltip.location = location;\n this.svgTooltip.content = this.text;\n this.svgTooltip.header = this.headerText;\n this.svgTooltip.offset = offset;\n this.svgTooltip.palette = this.findPalette();\n this.svgTooltip.shapes = shapes;\n this.svgTooltip.data = templatePoint;\n this.svgTooltip.template = chart.tooltip.template;\n this.svgTooltip.textStyle = chart.tooltip.textStyle;\n this.svgTooltip.isNegative = isNegative;\n this.svgTooltip.inverted = inverted;\n this.svgTooltip.clipBounds = this.chart.chartAreaType === 'PolarRadar' ? new ChartLocation(0, 0) : clipLocation;\n this.svgTooltip.arrowPadding = this.text.length > 1 || this.chart.stockChart ? 0 : 12;\n this.svgTooltip.tooltipPlacement = position;\n this.svgTooltip.dataBind();\n }\n }\n // tslint:disable-next-line:no-any\n if (this.chart.isReact) {\n this.chart.renderReactTemplates();\n }\n };\n BaseTooltip.prototype.getPositionBySize = function (textSize, bounds, arrowLocation, position) {\n var isTop = this.isTooltipFitPosition('Top', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isBottom = this.isTooltipFitPosition('Bottom', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isRight = this.isTooltipFitPosition('Right', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var isLeft = this.isTooltipFitPosition('Left', new Rect(0, 0, bounds.width, bounds.height), arrowLocation, textSize);\n var tooltipPos;\n if (isTop || isBottom || isRight || isLeft) {\n if (position === 'Top') {\n tooltipPos = isTop ? 'Top' : (isBottom ? 'Bottom' : (isRight ? 'Right' : 'Left'));\n }\n else if (position === 'Bottom') {\n tooltipPos = isBottom ? 'Bottom' : (isTop ? 'Top' : (isRight ? 'Right' : 'Left'));\n }\n else if (position === 'Right') {\n tooltipPos = isRight ? 'Right' : (isLeft ? 'Left' : (isTop ? 'Top' : 'Bottom'));\n }\n else {\n tooltipPos = isLeft ? 'Left' : (isRight ? 'Right' : (isTop ? 'Top' : 'Bottom'));\n }\n }\n else {\n var size = [(arrowLocation.x - bounds.x), ((bounds.x + bounds.width) - arrowLocation.x), (arrowLocation.y - bounds.y),\n ((bounds.y + bounds.height) - arrowLocation.y)];\n var index = size.indexOf(Math.max.apply(this, size));\n position = (index === 0) ? 'Left' : (index === 1) ? 'Right' : (index === 2) ? 'Top' : 'Bottom';\n return position;\n }\n return tooltipPos;\n };\n BaseTooltip.prototype.isTooltipFitPosition = function (position, bounds, location, size) {\n var start = new ChartLocation(0, 0);\n var end = new ChartLocation(0, 0);\n switch (position) {\n case 'Top':\n start.x = location.x - (size.width / 2);\n start.y = location.y - size.height;\n end.x = location.x + (size.width / 2);\n end.y = location.y;\n break;\n case 'Bottom':\n start.x = location.x - (size.width / 2);\n start.y = location.y;\n end.x = location.x + (size.width / 2);\n end.y = location.y + size.height;\n break;\n case 'Right':\n start.x = location.x;\n start.y = location.y - (size.height / 2);\n end.x = location.x + size.width;\n end.y = location.y + (size.height / 2);\n break;\n case 'Left':\n start.x = location.x - size.width;\n start.y = location.y - (size.height / 2);\n end.x = location.x;\n end.y = location.y + (size.height / 2);\n break;\n }\n return (withInBounds(start.x, start.y, bounds) && withInBounds(end.x, end.y, bounds));\n };\n BaseTooltip.prototype.getCurrentPosition = function (isNegative, inverted) {\n var position;\n if (inverted) {\n position = isNegative ? 'Left' : 'Right';\n }\n else {\n position = isNegative ? 'Bottom' : 'Top';\n }\n return position;\n };\n BaseTooltip.prototype.findPalette = function () {\n var colors = [];\n for (var _i = 0, _a = this.currentPoints; _i < _a.length; _i++) {\n var data = _a[_i];\n colors.push(this.findColor(data, data.series));\n }\n return colors;\n };\n BaseTooltip.prototype.findColor = function (data, series) {\n if (series.isRectSeries && (series.type === 'Candle' || series.type === 'Hilo' || series.type === 'HiloOpenClose')) {\n return data.point.color;\n }\n else {\n return (data.point.color && data.point.color !== '#ffffff' ? data.point.color\n : data.point.interior) ||\n series.marker.fill || series.interior;\n }\n };\n BaseTooltip.prototype.updatePreviousPoint = function (extraPoints) {\n if (extraPoints) {\n this.currentPoints = this.currentPoints.concat(extraPoints);\n }\n this.previousPoints = extend([], this.currentPoints, null, true);\n };\n BaseTooltip.prototype.fadeOut = function (data, chart) {\n var svgElement = this.chart.enableCanvas ? this.getElement(this.element.id + '_tooltip_group') :\n this.getElement(this.element.id + '_tooltip_svg');\n var isTooltip = (svgElement && parseInt(svgElement.getAttribute('opacity'), 10) > 0);\n if (!isTooltip) {\n this.valueX = null;\n this.valueY = null;\n this.currentPoints = [];\n this.removeHighlight(chart);\n this.removeHighlightedMarker(data);\n this.svgTooltip = null;\n this.control.trigger('animationComplete', {});\n }\n };\n /*\n * @hidden\n */\n BaseTooltip.prototype.removeHighlightedMarker = function (data) {\n if (this.chart.markerRender) {\n for (var _i = 0, data_1 = data; _i < data_1.length; _i++) {\n var item = data_1[_i];\n removeElement(this.element.id + '_Series_' + item.series.index +\n '_Point_' + item.point.index + '_Trackball');\n }\n this.chart.markerRender.removeHighlightedMarker();\n }\n this.previousPoints = [];\n };\n // public triggerEvent(point: PointData | AccPointData, isFirst: boolean, textCollection: string, firstText: boolean = true): boolean {\n // let argsData: ITooltipRenderEventArgs = {\n // cancel: false, name: tooltipRender, text: textCollection,\n // point: point.point, series: point.series, textStyle: this.textStyle\n // };\n // this.chart.trigger(tooltipRender, argsData);\n // if (!argsData.cancel) {\n // if (point.series.type === 'BoxAndWhisker') {\n // this.removeText();\n // isFirst = true;\n // }\n // this.formattedText = this.formattedText.concat(argsData.text);\n // this.text = this.formattedText;\n // }\n // return !argsData.cancel;\n // }\n BaseTooltip.prototype.removeText = function () {\n this.textElements = [];\n var element = this.getElement(this.element.id + '_tooltip_group');\n if (element && element.childNodes.length > 0) {\n while (element.lastChild && element.childNodes.length !== 1) {\n element.removeChild(element.lastChild);\n }\n }\n };\n BaseTooltip.prototype.stopAnimation = function () {\n stopTimer(this.toolTipInterval);\n };\n /**\n * Removes the tooltip on mouse leave.\n * @return {void}\n * @private\n */\n BaseTooltip.prototype.removeTooltip = function (duration) {\n var _this = this;\n var tooltipElement = this.getElement(this.element.id + '_tooltip');\n var tooltipTemplate = tooltipElement ? this.getElement(tooltipElement.id + 'parent_template') : null;\n var isTemplateRendered = tooltipTemplate && tooltipTemplate.innerHTML !== '
';\n this.stopAnimation();\n // tslint:disable-next-line:no-any\n if (this.chart.isReact && isTemplateRendered) {\n this.chart.clearTemplate([tooltipTemplate.id], [0]);\n }\n if (tooltipElement && this.previousPoints.length > 0) {\n this.toolTipInterval = setTimeout(function () {\n if (_this.svgTooltip) {\n _this.svgTooltip.fadeOut();\n }\n }, duration);\n }\n };\n return BaseTooltip;\n}(ChartData));\nexport { BaseTooltip };\n","import { print as printWindow, createElement, detach, classList, selectAll, extend } from '@syncfusion/ej2-base';\nimport { getPrintGridModel } from '../base/util';\nimport { Grid } from '../base/grid';\nimport * as events from '../base/constant';\nimport { Deferred } from '@syncfusion/ej2-data';\n/**\n * @hidden\n */\nexport function getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @class */ (function () {\n /**\n * Constructor for the Grid print module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.isContentReady(), this);\n this.parent.addEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.on(events.onEmpty, this.onEmpty.bind(this));\n this.parent.on(events.hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](grid/#printmode-string/).\n * @return {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[i] = extend({}, printGrid.columns[i]);\n printGrid.columns[i].freeze = undefined;\n }\n }\n /* tslint:disable-next-line:no-any */\n if (this.parent.isAngular) {\n /* tslint:disable-next-line:no-any */\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n /* tslint:disable:no-empty */\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(events.printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.appendTo(element);\n printGrid.trigger = gObj.trigger;\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(events.beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.e-content');\n var headerDiv = gObj.element.querySelector('.e-gridheader');\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.querySelectorAll('.e-content')); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = gObj.element.querySelectorAll('.e-spin-show');\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(events.printComplete, args);\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = printWindow(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll(id + \"captioncell.e-groupcaption\", element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[i].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colGroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[i].children[j].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n * @return {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(events.actionBegin, this.actionBegin.bind(this));\n this.parent.off(events.onEmpty, this.onEmpty.bind(this));\n this.parent.off(events.hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([events.beforePrint, events.printComplete, events.load]);\n return Print;\n}());\nexport { Print };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Double } from '../axis/double-axis';\n/**\n * Common axis classes\n * @private\n */\nvar NiceInterval = /** @class */ (function (_super) {\n __extends(NiceInterval, _super);\n function NiceInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Method to calculate numeric datetime interval\n */\n NiceInterval.prototype.calculateDateTimeNiceInterval = function (axis, size, start, end, isChart) {\n if (isChart === void 0) { isChart = true; }\n var oneDay = 24 * 60 * 60 * 1000;\n var startDate = new Date(start);\n var endDate = new Date(end);\n //var axisInterval ;\n var totalDays = (Math.abs((startDate.getTime() - endDate.getTime()) / (oneDay)));\n var interval;\n axis.actualIntervalType = axis.intervalType;\n var type = axis.intervalType;\n switch (type) {\n case 'Years':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n break;\n case 'Quarter':\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n break;\n case 'Months':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n break;\n case 'Weeks':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n break;\n case 'Days':\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n break;\n case 'Hours':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n break;\n case 'Minutes':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n break;\n case 'Seconds':\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n break;\n case 'Auto':\n interval = this.calculateNumericNiceInterval(axis, totalDays / 365, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Years';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, (totalDays / 365) * 4, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Quarter';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 30, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Months';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays / 7, size);\n if (interval >= 1 && !isChart) {\n axis.actualIntervalType = 'Weeks';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Days';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Hours';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60, size);\n if (interval >= 1) {\n axis.actualIntervalType = 'Minutes';\n return interval;\n }\n interval = this.calculateNumericNiceInterval(axis, totalDays * 24 * 60 * 60, size);\n axis.actualIntervalType = 'Seconds';\n return interval;\n }\n return interval;\n };\n /**\n * To get the skeleton for the DateTime axis.\n * @return {string}\n * @private\n */\n NiceInterval.prototype.getSkeleton = function (axis, currentValue, previousValue, isBlazor) {\n var skeleton;\n var intervalType = axis.actualIntervalType;\n if (axis.skeleton) {\n return axis.skeleton;\n }\n if (intervalType === 'Years') {\n if (isBlazor) {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'y' : 'y') : 'y';\n }\n else {\n skeleton = axis.isChart ? ((axis.valueType === 'DateTime' && axis.isIntervalInDecimal) ? 'y' : 'yMMM') : 'y';\n }\n }\n else if (intervalType === 'Quarter') {\n skeleton = isBlazor ? 'y' : 'yMMM';\n }\n else if (intervalType === 'Months') {\n if (isBlazor) {\n skeleton = axis.isChart ? 'm' : 'm';\n }\n else {\n skeleton = axis.isChart ? 'MMMd' : 'MMM';\n }\n }\n else if (intervalType === 'Weeks') {\n skeleton = isBlazor ? 'm' : 'MEd';\n }\n else if (intervalType === 'Days') {\n if (isBlazor) {\n skeleton = 'd';\n }\n else {\n skeleton = axis.isChart ? this.getDayFormat(axis, currentValue, previousValue) : 'MMMd';\n }\n }\n else if (intervalType === 'Hours') {\n if (isBlazor) {\n skeleton = 't';\n }\n else {\n skeleton = axis.isChart ? (axis.valueType === 'DateTime' ? 'Hm' : 'EHm') : 'h';\n }\n }\n else if (intervalType === 'Minutes') {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hm';\n }\n }\n else {\n if (isBlazor) {\n skeleton = 'T';\n }\n else {\n skeleton = axis.isChart ? 'Hms' : 'hms';\n }\n }\n return skeleton;\n };\n /**\n * Get intervalType month format\n * @param currentValue\n * @param previousValue\n */\n NiceInterval.prototype.getMonthFormat = function (axis, currentValue, previousValue) {\n return ((new Date(currentValue).getFullYear() === new Date(previousValue).getFullYear()) ?\n (axis.isIntervalInDecimal ? 'MMM' : 'MMM d') : 'y MMM');\n };\n /**\n * Get intervalType day label format for the axis\n * @param axis\n * @param currentValue\n * @param previousValue\n */\n NiceInterval.prototype.getDayFormat = function (axis, currentValue, previousValue) {\n return (axis.valueType === 'DateTime' ?\n ((new Date(currentValue).getMonth() !== new Date(previousValue).getMonth()) ? 'MMMd' :\n (axis.isIntervalInDecimal ? 'd' : 'Ehm')) : 'yMd');\n };\n /**\n * Find label format for axis\n * @param axis\n * @param currentValue\n * @param previousValue\n * @private\n */\n NiceInterval.prototype.findCustomFormats = function (axis, currentValue, previousValue) {\n var labelFormat = axis.labelFormat ? axis.labelFormat : '';\n if (axis.isChart && !axis.skeleton && axis.actualIntervalType === 'Months' && !labelFormat) {\n labelFormat = axis.valueType === 'DateTime' ? this.getMonthFormat(axis, currentValue, previousValue) : 'yMMM';\n }\n return labelFormat;\n };\n return NiceInterval;\n}(Double));\nexport { NiceInterval };\n","/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nexport var PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nexport var PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nexport var PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nexport var PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nexport var PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nexport var TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n","/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var data = [];\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\nexport { PdfWriter };\n","/**\n * @private\n * @hidden\n */\nexport function defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n","/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\nimport { defaultToString } from './utils';\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @class */ (function () {\n /**\n * @private\n * @hidden\n */\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.setValue = function (key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.remove = function (key) {\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.values = function () {\n var valuesArray = [];\n var namesOfValues = Object.keys(this.table);\n for (var index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n var pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.clear = function () {\n this.table = {};\n this.nElements = 0;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.size = function () {\n return this.nElements;\n };\n return Dictionary;\n}()); // End of dictionary\nexport { Dictionary };\n","/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nexport var ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n","/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\nimport { ObjectStatus } from './enum';\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @class */ (function () {\n function PdfMainObjectCollection() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n Object.defineProperty(PdfMainObjectCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.objectCollections.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n PdfMainObjectCollection.prototype.items = function (index) {\n return this.objectCollections[index];\n };\n Object.defineProperty(PdfMainObjectCollection.prototype, \"outIsNew\", {\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get: function () {\n return this.isNew;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element.\n * @private\n */\n PdfMainObjectCollection.prototype.add = function (element) {\n var objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n };\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n PdfMainObjectCollection.prototype.lookFor = function (obj) {\n var index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (var i = this.count - 1; i >= 0; i--) {\n var oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * Gets the `reference of the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.getReference = function (index, isNew) {\n this.index = this.lookFor(index);\n var reference;\n this.isNew = false;\n var oi = this.objectCollections[this.index];\n reference = oi.reference;\n var obj = { reference: reference, wasNew: isNew };\n return obj;\n };\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.trySetReference = function (obj, reference, found) {\n var result = true;\n found = true;\n this.index = this.lookFor(obj);\n var oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n };\n PdfMainObjectCollection.prototype.destroy = function () {\n for (var _i = 0, _a = this.objectCollections; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n };\n return PdfMainObjectCollection;\n}());\nexport { PdfMainObjectCollection };\nvar ObjectInfo = /** @class */ (function () {\n function ObjectInfo(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n Object.defineProperty(ObjectInfo.prototype, \"object\", {\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get: function () {\n return this.pdfObject;\n },\n set: function (value) {\n this.pdfObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ObjectInfo.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `reference`.\n * @private\n */\n ObjectInfo.prototype.setReference = function (reference) {\n this.pdfReference = reference;\n };\n return ObjectInfo;\n}());\nexport { ObjectInfo };\n","/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n var byteCount = 0;\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\nexport { Encoding };\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nexport function validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\nexport { Save };\n","/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nexport var InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n var ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n var SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nvar PdfString = /** @class */ (function () {\n function PdfString(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (var i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n Object.defineProperty(PdfString.prototype, \"hex\", {\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get: function () {\n return this.bHex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"value\", {\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get: function () {\n return this.stringValue;\n },\n set: function (value) {\n this.stringValue = value;\n this.data = null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status1;\n },\n set: function (value) {\n this.status1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving1;\n },\n set: function (value) {\n this.isSaving1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index1;\n },\n set: function (value) {\n this.index1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position1;\n },\n set: function (value) {\n this.position1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"converted\", {\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get: function () {\n return this.bConverted;\n },\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set: function (value) {\n this.bConverted = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"encode\", {\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get: function () {\n return this.bForceEncoding;\n },\n set: function (value) {\n this.bForceEncoding = value;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n PdfString.bytesToHex = function (bytes) {\n if (bytes == null) {\n return '';\n }\n var builder = '';\n return builder;\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfString.prototype.save = function (writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n };\n PdfString.prototype.pdfEncode = function () {\n var result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n var data = this.escapeSymbols(this.value);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n };\n PdfString.prototype.escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n PdfString.prototype.clone = function (crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n var newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n };\n /**\n * Converts string to array of unicode symbols.\n */\n PdfString.toUnicodeArray = function (value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var startIndex = 0;\n var output = [];\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n };\n /**\n * Converts byte data to string.\n */\n PdfString.byteToString = function (data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n var result = '';\n for (var i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n };\n //constants = ;\n /**\n * `General markers` for string.\n * @private\n */\n PdfString.stringMark = '()';\n /**\n * `Hex markers` for string.\n * @private\n */\n PdfString.hexStringMark = '<>';\n /**\n * Format of password data.\n * @private\n */\n PdfString.hexFormatPattern = '{0:X2}';\n return PdfString;\n}());\nexport { PdfString };\n","import { Encoding, validateNullOrUndefined } from './encoding';\nimport { Save } from './save';\n/**\n * StreamWriter class contains the implementation for writing characters to a file in a particular encoding\n * ```typescript\n * let writer = new StreamWriter();\n * writer.write('Hello World');\n * writer.save('Sample.txt');\n * writer.dispose();\n * ```\n */\nvar StreamWriter = /** @class */ (function () {\n /**\n * Initializes a new instance of the StreamWriter class by using the specified encoding.\n * @param {Encoding} encoding?- The character encoding to use.\n */\n function StreamWriter(encoding) {\n this.bufferBlob = new Blob(['']);\n this.bufferText = '';\n this.init(encoding);\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(StreamWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the StreamWriter as Blob.\n * @returns Blob\n */\n get: function () {\n this.flush();\n return this.bufferBlob;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StreamWriter.prototype, \"encoding\", {\n /**\n * Gets the encoding.\n * @returns Encoding\n */\n get: function () {\n return this.enc;\n },\n enumerable: true,\n configurable: true\n });\n StreamWriter.prototype.init = function (encoding) {\n if (encoding === null || encoding === undefined) {\n this.enc = new Encoding(false);\n this.enc.type = 'Utf8';\n }\n else {\n this.enc = encoding;\n this.setBomByte();\n }\n };\n /**\n * Private method to set Byte Order Mark(BOM) value based on EncodingType\n */\n StreamWriter.prototype.setBomByte = function () {\n if (this.encoding.includeBom) {\n switch (this.encoding.type) {\n case 'Unicode':\n var arrayUnicode = new ArrayBuffer(2);\n var uint8 = new Uint8Array(arrayUnicode);\n uint8[0] = 255;\n uint8[1] = 254;\n this.bufferBlob = new Blob([arrayUnicode]);\n break;\n case 'Utf8':\n var arrayUtf8 = new ArrayBuffer(3);\n var utf8 = new Uint8Array(arrayUtf8);\n utf8[0] = 239;\n utf8[1] = 187;\n utf8[2] = 191;\n this.bufferBlob = new Blob([arrayUtf8]);\n break;\n default:\n this.bufferBlob = new Blob(['']);\n break;\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - The file name to save\n * @returns {void}\n */\n StreamWriter.prototype.save = function (fileName) {\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Writes the specified string.\n * @param {string} value - The string to write. If value is null or undefined, nothing is written.\n * @returns {void}\n */\n StreamWriter.prototype.write = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText += value;\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n StreamWriter.prototype.flush = function () {\n if (this.bufferText === undefined || this.bufferText === null || this.bufferText.length === 0) {\n return;\n }\n var bufferArray = this.encoding.getBytes(this.bufferText, 0, this.bufferText.length);\n this.bufferText = '';\n this.bufferBlob = new Blob([this.bufferBlob, bufferArray]);\n };\n /**\n * Writes the specified string followed by a line terminator\n * @param {string} value - The string to write. If value is null or undefined, nothing is written\n * @returns {void}\n */\n StreamWriter.prototype.writeLine = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText = this.bufferText + value + '\\r\\n';\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n /**\n * Releases the resources used by the StreamWriter\n * @returns {void}\n */\n StreamWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n this.bufferText = undefined;\n if (this.enc instanceof Encoding) {\n this.enc.destroy();\n }\n this.enc = undefined;\n };\n return StreamWriter;\n}());\nexport { StreamWriter };\n","import { StreamWriter } from '@syncfusion/ej2-file-utils';\nimport { Encoding } from '@syncfusion/ej2-file-utils';\nimport { PdfDocument } from './pdf-document';\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n PdfDocumentBase.prototype.setMainObjectCollection = function (mainObjectCollection) {\n this.objects = mainObjectCollection;\n };\n /**\n * Sets the `cross table`.\n * @private\n */\n PdfDocumentBase.prototype.setCrossTable = function (cTable) {\n this.pdfCrossTable = cTable;\n };\n /**\n * Sets the `catalog`.\n * @private\n */\n PdfDocumentBase.prototype.setCatalog = function (catalog) {\n this.pdfCatalog = catalog;\n };\n PdfDocumentBase.prototype.save = function (filename) {\n var _this = this;\n var encoding = new Encoding(true);\n var SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n var encoding_1 = new Encoding(true);\n var SW_1 = new StreamWriter(encoding_1);\n return new Promise(function (resolve, reject) {\n /* tslint:disable-next-line:no-any */\n var obj = {};\n obj.blobData = new Blob([_this.document.docSave(SW_1, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n };\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n PdfDocumentBase.prototype.clone = function () {\n return this.document;\n };\n return PdfDocumentBase;\n}());\nexport { PdfDocumentBase };\n","/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @class */ (function () {\n function PdfName(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n Object.defineProperty(PdfName.prototype, \"status\", {\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status6;\n },\n set: function (value) {\n this.status6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving6;\n },\n set: function (value) {\n this.isSaving6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index6;\n },\n set: function (value) {\n this.index6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position6;\n },\n set: function (value) {\n this.position6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n set: function (value) {\n // if (value !== this.value) {\n var val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n },\n enumerable: true,\n configurable: true\n });\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n PdfName.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n };\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n PdfName.prototype.toString = function () {\n return (this.stringStartMark + this.escapeString(this.value));\n };\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n PdfName.prototype.clone = function (crossTable) {\n var newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n };\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n PdfName.prototype.escapeString = function (stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n var result = '';\n var len = 0;\n for (var i = 0, len_1 = stringValue.length; i < len_1; i++) {\n var ch = stringValue[i];\n var index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n };\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n PdfName.prototype.normalizeValue = function (value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n var strFormat = '#{0:X}';\n //return value.replace(c.toString(),String.format(strFormat,c));\n return value;\n // }\n };\n /**\n * PDF `special characters`.\n * @private\n */\n PdfName.delimiters = '()<>[]{}/%}';\n /**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\n PdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n return PdfName;\n}());\nexport { PdfName };\n","/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @class */ (function () {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n function Operators() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n /**\n * Specifies the value of `obj`.\n * @private\n */\n Operators.obj = 'obj';\n /**\n * Specifies the value of `endObj`.\n * @private\n */\n Operators.endObj = 'endobj';\n /**\n * Specifies the value of `R`.\n * @private\n */\n Operators.r = 'R';\n /**\n * Specifies the value of ` `.\n * @private\n */\n Operators.whiteSpace = ' ';\n /**\n * Specifies the value of `/`.\n * @private\n */\n Operators.slash = '/';\n /**\n * Specifies the value of `\\r\\n`.\n * @private\n */\n Operators.newLine = '\\r\\n';\n /**\n * Specifies the value of `stream`.\n * @private\n */\n Operators.stream = 'stream';\n /**\n * Specifies the value of `endStream`.\n * @private\n */\n Operators.endStream = 'endstream';\n /**\n * Specifies the value of `xref`.\n * @private\n */\n Operators.xref = 'xref';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.f = 'f';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.n = 'n';\n /**\n * Specifies the value of `trailer`.\n * @private\n */\n Operators.trailer = 'trailer';\n /**\n * Specifies the value of `startxref`.\n * @private\n */\n Operators.startxref = 'startxref';\n /**\n * Specifies the value of `eof`.\n * @private\n */\n Operators.eof = '%%EOF';\n /**\n * Specifies the value of `header`.\n * @private\n */\n Operators.header = '%PDF-1.5';\n /**\n * Specifies the value of `beginText`.\n * @private\n */\n Operators.beginText = 'BT';\n /**\n * Specifies the value of `endText`.\n * @private\n */\n Operators.endText = 'ET';\n /**\n * Specifies the value of `m`.\n * @private\n */\n Operators.beginPath = 'm';\n /**\n * Specifies the value of `l`.\n * @private\n */\n Operators.appendLineSegment = 'l';\n /**\n * Specifies the value of `S`.\n * @private\n */\n Operators.stroke = 'S';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.fill = 'f';\n /**\n * Specifies the value of `f*`.\n * @private\n */\n Operators.fillEvenOdd = 'f*';\n /**\n * Specifies the value of `B`.\n * @private\n */\n Operators.fillStroke = 'B';\n /**\n * Specifies the value of `B*`.\n * @private\n */\n Operators.fillStrokeEvenOdd = 'B*';\n /**\n * Specifies the value of `c`.\n * @private\n */\n Operators.appendbeziercurve = 'c';\n /**\n * Specifies the value of `re`.\n * @private\n */\n Operators.appendRectangle = 're';\n /**\n * Specifies the value of `q`.\n * @private\n */\n Operators.saveState = 'q';\n /**\n * Specifies the value of `Q`.\n * @private\n */\n Operators.restoreState = 'Q';\n /**\n * Specifies the value of `Do`.\n * @private\n */\n Operators.paintXObject = 'Do';\n /**\n * Specifies the value of `cm`.\n * @private\n */\n Operators.modifyCtm = 'cm';\n /**\n * Specifies the value of `Tm`.\n * @private\n */\n Operators.modifyTM = 'Tm';\n /**\n * Specifies the value of `w`.\n * @private\n */\n Operators.setLineWidth = 'w';\n /**\n * Specifies the value of `J`.\n * @private\n */\n Operators.setLineCapStyle = 'J';\n /**\n * Specifies the value of `j`.\n * @private\n */\n Operators.setLineJoinStyle = 'j';\n /**\n * Specifies the value of `d`.\n * @private\n */\n Operators.setDashPattern = 'd';\n /**\n * Specifies the value of `i`.\n * @private\n */\n Operators.setFlatnessTolerance = 'i';\n /**\n * Specifies the value of `h`.\n * @private\n */\n Operators.closePath = 'h';\n /**\n * Specifies the value of `s`.\n * @private\n */\n Operators.closeStrokePath = 's';\n /**\n * Specifies the value of `b`.\n * @private\n */\n Operators.closeFillStrokePath = 'b';\n /**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\n Operators.setCharacterSpace = 'Tc';\n /**\n * Specifies the value of `setWordSpace`.\n * @private\n */\n Operators.setWordSpace = 'Tw';\n /**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\n Operators.setHorizontalScaling = 'Tz';\n /**\n * Specifies the value of `setTextLeading`.\n * @private\n */\n Operators.setTextLeading = 'TL';\n /**\n * Specifies the value of `setFont`.\n * @private\n */\n Operators.setFont = 'Tf';\n /**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\n Operators.setRenderingMode = 'Tr';\n /**\n * Specifies the value of `setTextRise`.\n * @private\n */\n Operators.setTextRise = 'Ts';\n /**\n * Specifies the value of `setTextScaling`.\n * @private\n */\n Operators.setTextScaling = 'Tz';\n /**\n * Specifies the value of `setCoords`.\n * @private\n */\n Operators.setCoords = 'Td';\n /**\n * Specifies the value of `goToNextLine`.\n * @private\n */\n Operators.goToNextLine = 'T*';\n /**\n * Specifies the value of `setText`.\n * @private\n */\n Operators.setText = 'Tj';\n /**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\n Operators.setTextWithFormatting = 'TJ';\n /**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\n Operators.setTextOnNewLine = '\\'';\n /**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\n Operators.selectcolorspaceforstroking = 'CS';\n /**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\n Operators.selectcolorspacefornonstroking = 'cs';\n /**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\n Operators.setrbgcolorforstroking = 'RG';\n /**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\n Operators.setrbgcolorfornonstroking = 'rg';\n /**\n * Specifies the value of `K`.\n * @private\n */\n Operators.setcmykcolorforstroking = 'K';\n /**\n * Specifies the value of `k`.\n * @private\n */\n Operators.setcmykcolorfornonstroking = 'k';\n /**\n * Specifies the value of `G`.\n * @private\n */\n Operators.setgraycolorforstroking = 'G';\n /**\n * Specifies the value of `g`.\n * @private\n */\n Operators.setgraycolorfornonstroking = 'g';\n /**\n * Specifies the value of `W`.\n * @private\n */\n Operators.clipPath = 'W';\n /**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\n Operators.clipPathEvenOdd = 'W*';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.endPath = 'n';\n /**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\n Operators.setGraphicsState = 'gs';\n /**\n * Specifies the value of `%`.\n * @private\n */\n Operators.comment = '%';\n /**\n * Specifies the value of `*`.\n * @private\n */\n Operators.evenOdd = '*';\n /**\n * Specifies the value of `M`.\n * @private\n */\n Operators.setMiterLimit = 'M';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\n Operators.setColorAndPattern = 'scn';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\n Operators.setColorAndPatternStroking = 'SCN';\n return Operators;\n}());\nexport { Operators };\n","/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n //\n }\n return DictionaryProperties;\n}());\nexport { DictionaryProperties };\n","import { Dictionary } from './../collections/dictionary';\nimport { PdfName } from './pdf-name';\nimport { Operators } from './../input-output/pdf-operators';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @class */ (function () {\n function PdfDictionary(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nexport { PdfDictionary };\nvar SaveSectionCollectionEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nexport { SaveSectionCollectionEventHandler };\nvar SaveDescendantFontEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nexport { SaveDescendantFontEventHandler };\nvar SaveFontDictionaryEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nexport { SaveFontDictionaryEventHandler };\nvar SaveAnnotationEventHandler = /** @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nexport { SaveAnnotationEventHandler };\nvar SaveSectionEventHandler = /** @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\nexport { SaveSectionEventHandler };\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\nexport { SaveTemplateEventHandler };\n","/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\nexport { PdfNumber };\n","import { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\n}());\nexport { PdfArray };\n","import { Encoding } from '@syncfusion/ej2-file-utils';\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\nexport { CompressedStreamWriter };\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\nexport { CompressorHuffmanTree };\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\nexport { ChecksumCalculator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfDictionary } from './pdf-dictionary';\nimport { PdfNumber } from './pdf-number';\nimport { Operators } from './../input-output/pdf-operators';\nimport { PdfName } from './pdf-name';\nimport { PdfArray } from './pdf-array';\nimport { PdfReferenceHolder } from './pdf-reference';\nimport { CompressedStreamWriter } from '@syncfusion/ej2-compression';\n/**\n * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @class */ (function (_super) {\n __extends(PdfStream, _super);\n function PdfStream(dictionary, data) {\n var _this = _super.call(this, dictionary) || this;\n //Constants\n /**\n * @hidden\n * @private\n */\n _this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n _this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n _this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n _this.bCompress = true;\n /**\n * @hidden\n * @private\n */\n _this.isImageStream = false;\n /**\n * @hidden\n * @private\n */\n _this.isFontStream = false;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isImage\", {\n /**\n * Gets or sets 'is image' flag.\n * @private\n */\n get: function () {\n return this.isImageStream;\n },\n set: function (value) {\n this.isImageStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isFont\", {\n /**\n * Gets or sets 'is font' flag.\n * @private\n */\n get: function () {\n return this.isFontStream;\n },\n set: function (value) {\n this.isFontStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isImage && !this.isFont) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nexport { PdfStream };\nvar SaveCmapEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nexport { SaveCmapEventHandler };\nvar SaveFontProgramEventHandler = /** @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\nexport { SaveFontProgramEventHandler };\n","/**\n * public Enum for `ObjectType`.\n * @private\n */\nexport var ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\n","import { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfString } from './../primitives/pdf-string';\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @class */ (function () {\n function PdfReference(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n Object.defineProperty(PdfReference.prototype, \"status\", {\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status3;\n },\n set: function (value) {\n this.status3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving3;\n },\n set: function (value) {\n this.isSaving3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index3;\n },\n set: function (value) {\n this.index3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position3;\n },\n set: function (value) {\n this.position3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var returnObject3 = null;\n return returnObject3;\n },\n enumerable: true,\n configurable: true\n });\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n PdfReference.prototype.save = function (writer) {\n writer.write(this.toString());\n };\n /**\n * Returns a `string` representing the object.\n * @private\n */\n PdfReference.prototype.toString = function () {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n };\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n PdfReference.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReference;\n}());\nexport { PdfReference };\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @class */ (function () {\n function PdfReferenceHolder(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n Object.defineProperty(PdfReferenceHolder.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status4;\n },\n set: function (value) {\n this.status4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving4;\n },\n set: function (value) {\n this.isSaving4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index4;\n },\n set: function (value) {\n this.index4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position4;\n },\n set: function (value) {\n this.position4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"object\", {\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get: function () {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"index\", {\n /**\n * Gets the `index` of the object.\n * @private\n */\n get: function () {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"element\", {\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n PdfReferenceHolder.prototype.initialize = function (obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n var tempObj = obj1;\n this.initialize(tempObj.element);\n }\n };\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n PdfReferenceHolder.prototype.save = function (writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n var position = writer.position;\n var cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n var reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n };\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n PdfReferenceHolder.prototype.clone = function (crossTable) {\n var refHolder = null;\n var temp = null;\n var refNum = '';\n var reference = null;\n // Restricts addition of same object multiple time.\n /* if (this.Reference != null && this.crossTable != null && this.crossTable.PageCorrespondance.containsKey(this.Reference)) {\n refHolder = new PdfReferenceHolder(this.crossTable.PageCorrespondance.getValue(this.Reference) as PdfReference, crossTable);\n return refHolder;\n }\n if (Object instanceof PdfNumber) {\n return new PdfNumber((Object as PdfNumber).IntValue);\n }\n */\n // if (Object instanceof PdfDictionary) {\n // // Meaning the referenced page is not available for import.\n // let type : PdfName = new PdfName(this.dictionaryProperties.type);\n // let dict : PdfDictionary = Object as PdfDictionary;\n // if (dict.ContainsKey(type)) {\n // let pageName : PdfName = dict.Items.getValue(type.Value) as PdfName;\n // if (pageName !== null) {\n // if (pageName.Value === 'Page') {\n // return new PdfNull();\n // }\n // }\n // }\n // }\n /* if (Object instanceof PdfName) {\n return new PdfName ((Object as PdfName ).Value);\n }\n */\n // Resolves circular references.\n // if (crossTable.PrevReference !== null && (crossTable.PrevReference.indexOf(this.Reference) !== -1)) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.Reference).ClonedObject;\n // if (obj !== null) {\n // reference = crossTable.GetReference(obj);\n // return new PdfReferenceHolder(reference, crossTable);\n // } else {\n // return new PdfNull();\n // }\n // }\n /*if (this.Reference !== null) {\n crossTable.PrevReference.push(this.Reference);\n }\n reference = crossTable.GetReference(temp);\n refHolder = new PdfReferenceHolder(reference, crossTable);\n return refHolder;\n */\n return null;\n };\n return PdfReferenceHolder;\n}());\nexport { PdfReferenceHolder };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfCatalog.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @class */ (function (_super) {\n __extends(PdfCatalog, _super);\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n function PdfCatalog() {\n var _this = _super.call(this) || this;\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n _this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n _this.tempDictionaryProperties = new DictionaryProperties();\n _this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n return _this;\n }\n Object.defineProperty(PdfCatalog.prototype, \"pages\", {\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get: function () {\n return this.sections;\n },\n set: function (value) {\n var dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n return PdfCatalog;\n}(PdfDictionary));\nexport { PdfCatalog };\n","/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nexport var PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nexport var PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nexport var PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nexport var TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nexport var PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nexport var PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nexport var PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nexport var PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nexport var PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nexport var PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nexport var PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nexport var PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nexport var PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n","/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nexport var PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nexport var PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nexport var PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nexport var PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nexport var PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nexport var FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nexport var TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nexport var TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nexport var TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nexport var TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nexport var TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nexport var FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nexport var TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n","import { ObjectStatus } from './../input-output/enum';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './pdf-dictionary-properties';\nimport { Operators } from './pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfReference } from './../primitives/pdf-reference';\nimport { ObjectType } from './cross-table';\nimport { PdfStream } from './../primitives/pdf-stream';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfCatalog } from './../document/pdf-catalog';\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @class */ (function () {\n function PdfCrossTable() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n Object.defineProperty(PdfCrossTable.prototype, \"isMerging\", {\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get: function () {\n return this.merging;\n },\n set: function (value) {\n this.merging = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"trailer\", {\n /**\n * Gets the `trailer`.\n * @private\n */\n get: function () {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"document\", {\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"pdfObjects\", {\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get: function () {\n return this.items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"objectCollection\", {\n /**\n * Gets the `object collection`.\n * @private\n */\n get: function () {\n return this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"count\", {\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get: function () {\n return this.objectCount;\n },\n set: function (value) {\n this.objectCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"nextObjNumber\", {\n /**\n * Returns `next available object number`.\n * @private\n */\n get: function () {\n this.count = this.count + 1;\n return this.count;\n },\n enumerable: true,\n configurable: true\n });\n PdfCrossTable.prototype.save = function (writer, filename) {\n this.saveHead(writer);\n var state = false;\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n var saveCount = this.count;\n var xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n var prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (var i = 0; i < this.objectCollection.count; ++i) {\n var oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * `Saves the endess` of the file.\n * @private\n */\n PdfCrossTable.prototype.saveTheEndess = function (writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n };\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n PdfCrossTable.prototype.saveTrailer = function (writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n var trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n };\n /**\n * `Saves the xref section`.\n * @private\n */\n PdfCrossTable.prototype.saveSections = function (writer) {\n var objectNum = 0;\n var count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n };\n /**\n * `Saves a subsection`.\n * @private\n */\n PdfCrossTable.prototype.saveSubsection = function (writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n var subsectionHead = '{0} {1}{2}';\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (var i = objectNum; i <= objectNum + count; ++i) {\n var obj = this.objects.getValue(i);\n var str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n };\n /**\n * Generates string for `xref table item`.\n * @private\n */\n PdfCrossTable.prototype.getItem = function (offset, genNumber, isFree) {\n var returnString = '';\n var addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n var addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (var index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (var index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n };\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n PdfCrossTable.prototype.prepareSubsection = function (objectNum) {\n var count = 0;\n var i;\n var total = this.count;\n for (var k = 0; k < this.document.pdfObjects.count; k++) {\n var reference = this.document.pdfObjects.items(k).reference;\n var refString = reference.toString();\n var refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n };\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n PdfCrossTable.prototype.markTrailerReferences = function () {\n var tempArray;\n var keys = this.trailer.items.keys();\n var values = this.trailer.items.values();\n };\n /**\n * `Saves the head`.\n * @private\n */\n PdfCrossTable.prototype.saveHead = function (writer) {\n var version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n };\n /**\n * Generates the `version` of the file.\n * @private\n */\n PdfCrossTable.prototype.generateFileVersion = function (document) {\n var iVersion = 4;\n var version = '1.' + iVersion.toString();\n return version;\n };\n PdfCrossTable.prototype.getReference = function (obj, bNew) {\n if (typeof bNew === 'undefined') {\n var wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n };\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n PdfCrossTable.prototype.getSubReference = function (obj, bNew) {\n var isNew = false;\n var wasNew;\n var reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n var tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n var objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n var found = void 0;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n var tempIndex = this.document.pdfObjects.count - 1;\n var tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n var tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n };\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n PdfCrossTable.prototype.saveObjects = function (writer) {\n var objectCollection = this.objectCollection;\n for (var i = 0; i < objectCollection.count; ++i) {\n var oi = objectCollection.items(i);\n var obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n };\n /**\n * `Saves indirect object`.\n * @private\n */\n PdfCrossTable.prototype.saveIndirectObject = function (obj, writer) {\n var reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n var tempArchive = false;\n tempArchive = obj.getArchive();\n var allowedType = !((obj instanceof PdfStream) || !tempArchive || (obj instanceof PdfCatalog));\n var sigFlag = false;\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n };\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n PdfCrossTable.prototype.doSaveObject = function (obj, reference, writer) {\n var correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n var stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n };\n PdfCrossTable.prototype.registerObject = function (offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n };\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n PdfCrossTable.dereference = function (obj) {\n var rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n };\n return PdfCrossTable;\n}());\nexport { PdfCrossTable };\nvar RegisteredObject = /** @class */ (function () {\n function RegisteredObject(offset, reference, free) {\n var tempOffset = offset;\n this.offsetNumber = tempOffset;\n var tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n Object.defineProperty(RegisteredObject.prototype, \"objectNumber\", {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RegisteredObject.prototype, \"offset\", {\n /**\n * Gets the `offset`.\n * @private\n */\n get: function () {\n var result;\n result = this.offsetNumber;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return RegisteredObject;\n}());\nexport { RegisteredObject };\n","/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @class */ (function () {\n function PointF(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n return PointF;\n}());\nexport { PointF };\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @class */ (function () {\n function SizeF(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n return SizeF;\n}());\nexport { SizeF };\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @class */ (function () {\n function RectangleF(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n var pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n var sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n var x = arg1;\n var y = arg2;\n var width = arg3;\n var height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n return RectangleF;\n}());\nexport { RectangleF };\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @class */ (function () {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n function Rectangle(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Gets a value of width\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Gets a value of height\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\n /**\n * Gets a value of Top and Left\n */\n get: function () {\n return new PointF(this.left, this.top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"size\", {\n /**\n * Gets a value of size\n */\n get: function () {\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.toString = function () {\n return this.topLeft + 'x' + this.size;\n };\n return Rectangle;\n}());\nexport { Rectangle };\n","/**\n * PdfPageSize.ts class for EJ2-PDF\n */\nimport { SizeF } from './../drawing/pdf-drawing';\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\nexport { PdfPageSize };\n","/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\nexport { PdfMargins };\n","/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\nimport { SizeF, PointF } from './../drawing/pdf-drawing';\nimport { PdfPageSize } from './pdf-page-size';\nimport { PdfPageRotateAngle, PdfPageOrientation } from './enum';\nimport { PdfMargins } from './../graphics/pdf-margins';\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\nexport { PdfPageSettings };\n","import { Operators } from './pdf-operators';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PointF, RectangleF } from './../drawing/pdf-drawing';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfName } from './../primitives/pdf-name';\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\nexport { PdfStreamWriter };\n","import { SizeF, RectangleF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfWordWrapType } from './enum';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n var isSingleWord = false;\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent /*)*/;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n var spaces = StringTokenizer.spaces;\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\nexport { PdfStringLayouter };\n//Internal declaration\nvar PdfStringLayoutResult = /** @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nexport { PdfStringLayoutResult };\nvar LineInfo = /** @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\nexport { LineInfo };\n/**\n* Break type of the `line`.\n* @private\n*/\nexport var LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n","import { PdfColorSpace } from './enum';\nimport { Operators } from './../input-output/pdf-operators';\nimport { Dictionary } from './../collections/dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfArray } from './../primitives/pdf-array';\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\nexport { PdfColor };\n","/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\nexport { PdfBrush };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColor } from './../pdf-color';\nimport { PdfColorSpace } from './../enum';\nimport { PdfBrush } from './pdf-brush';\n/**\n * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @class */ (function (_super) {\n __extends(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n var sBrush = brush;\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\nexport { PdfSolidBrush };\n","/**\n * PdfPen.ts class for EJ2-PDF\n */\nimport { PdfColor } from './pdf-color';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfDashStyle, PdfColorSpace } from './enum';\nimport { PdfBrush } from './brushes/pdf-brush';\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\nexport { PdfPen };\n","/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\nimport { PdfVerticalAlignment } from './../../graphics/enum';\nimport { PdfSubSuperScript, PdfWordWrapType } from './../../graphics/fonts/enum';\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\nexport { PdfStringFormat };\n","/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substring(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substring(this.length, this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\nexport { StringTokenizer };\n","/**\n * PdfFont.ts class for EJ2-PDF\n */\nimport { PdfFontStyle } from './enum';\nimport { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfStringFormat } from './pdf-string-format';\nimport { PdfStringLayouter } from './string-layouter';\nimport { StringTokenizer } from './string-tokenizer';\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\nexport { PdfFont };\n","/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nexport var PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nexport var PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nexport var PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\n","/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\nimport { PointF } from './../drawing/pdf-drawing';\nimport { PdfNumber } from './../primitives/pdf-number';\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nexport { PdfTransformationMatrix };\nvar Matrix = /** @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\nexport { Matrix };\n","/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\nexport { ProcedureSets };\n","/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\nexport { TemporaryDictionary };\n","import { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\nexport { PdfTransparency };\n","/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\nexport { PdfAutomaticFieldInfoCollection };\n","/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\nexport { PdfGraphicsElement };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfAutomaticField.ts class for EJ2-PDF\n */\nimport { RectangleF, SizeF, PointF } from './../../drawing/pdf-drawing';\nimport { PdfSolidBrush } from './../../graphics/brushes/pdf-solid-brush';\nimport { PdfColor } from './../../graphics/pdf-color';\nimport { PdfDocument } from './../pdf-document';\nimport { PdfGraphicsElement } from './../../graphics/figures/base/graphics-element';\nimport { PdfAutomaticFieldInfo } from './automatic-field-info';\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @class */ (function (_super) {\n __extends(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\nexport { PdfAutomaticField };\n","/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\nimport { PointF } from './../../drawing/pdf-drawing';\nimport { PdfAutomaticField } from './automatic-field';\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\nexport { PdfAutomaticFieldInfo };\n","/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n var dataUrlPrefix = 'data:';\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\nexport { ByteArray };\n","/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\nexport { TtfTableInfo };\n","var TtfNameTable = /** @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\nexport { TtfNameTable };\n","/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\nexport { TtfNameRecord };\n","/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\nexport { TtfHeadTable };\n","var TtfMetrics = /** @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\nexport { TtfMetrics };\n","/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\nexport { TtfHorizontalHeaderTable };\n","/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\nexport { TtfOS2Table };\n","/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\nexport { TtfPostTable };\n","/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\nexport { TtfLongHorMetric };\n","/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\nexport { TtfCmapSubTable };\n","/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\nexport { TtfCmapTable };\n","/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\nexport { TtfGlyphInfo };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\nexport { TtfLocaTable };\n","/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\nexport { TtfAppleCmapSubTable };\n","/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\nexport { TtfMicrosoftCmapSubTable };\n","/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\nexport { TtfTrimmedCmapSubTable };\n","/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\nexport { TtfGlyphHeader };\n","/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var i1 = (value & 0xff000000) >> 24;\n i1 = i1 < 0 ? 256 + i1 : i1;\n var i2 = (value & 0x00ff0000) >> 16;\n i2 = i2 < 0 ? 256 + i2 : i2;\n var i3 = (value & 0x0000ff00) >> 8;\n i3 = i3 < 0 ? 256 + i3 : i3;\n var i4 = value & 0x000000ff;\n i4 = i4 < 0 ? 256 + i4 : i4;\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\nexport { BigEndianWriter };\n","/**\n * TtfReader.ts class for EJ2-PDF\n */\nimport { TtfTableInfo } from './ttf-table-info';\nimport { Dictionary } from './../../collections/dictionary';\nimport { TtfNameTable } from './ttf-name-table';\nimport { TtfNameRecord } from './ttf-name-record';\nimport { TtfHeadTable } from './ttf-head-table';\nimport { TtfMetrics } from './ttf-metrics';\nimport { TtfHorizontalHeaderTable } from './ttf-horizontal-header-table';\nimport { TtfOS2Table } from './ttf-OS2-Table';\nimport { TtfPostTable } from './ttf-post-table';\nimport { TtfLongHorMetric } from './ttf-long-hor-metric';\nimport { TtfCmapSubTable } from './ttf-cmap-sub-table';\nimport { TtfCmapTable } from './ttf-cmap-table';\nimport { TtfGlyphInfo } from './ttf-glyph-info';\nimport { TtfLocaTable } from './ttf-loca-table';\nimport { TtfAppleCmapSubTable } from './ttf-apple-cmap-sub-table';\nimport { TtfMicrosoftCmapSubTable } from './ttf-microsoft-cmap-sub-table';\nimport { TtfTrimmedCmapSubTable } from './ttf-trimmed-cmap-sub-table';\nimport { TtfGlyphHeader } from './ttf-glyph-header';\nimport { Rectangle } from './../../drawing/pdf-drawing';\nimport { StringTokenizer } from './string-tokenizer';\nimport { TtfCmapFormat, TtfCmapEncoding, TtfPlatformID } from './enum';\nimport { TtfMicrosoftEncodingID, TtfMacintoshEncodingID, TtfCompositeGlyphFlags } from './enum';\nimport { BigEndianWriter } from './../../input-output/big-endian-writer';\nvar TtfReader = /** @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n var i = 0;\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n i++;\n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\n}());\nexport { TtfReader };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFont } from './pdf-font';\nimport { PdfSubSuperScript } from './enum';\nimport { PdfArray } from './../../primitives/pdf-array';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nexport { PdfFontMetrics };\nvar WidthTable = /** @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nexport { WidthTable };\nvar StandardWidthTable = /** @class */ (function (_super) {\n __extends(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\nexport { StandardWidthTable };\n","/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nimport { ByteArray } from './../../graphics/images/index';\nimport { TtfReader } from './ttf-reader';\nimport { PdfDictionary, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler } from './../../primitives/pdf-dictionary';\nimport { SaveFontProgramEventHandler, SaveCmapEventHandler } from './../../primitives/pdf-stream';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfString } from './../../primitives/pdf-string';\nimport { PdfReferenceHolder } from './../../primitives/pdf-reference';\nimport { PdfFontMetrics } from './pdf-font-metrics';\nimport { StandardWidthTable } from './pdf-font-metrics';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { Dictionary } from './../../collections/dictionary';\nimport { FontDescriptorFlags } from './enum';\nimport { RectangleF } from './../../drawing/pdf-drawing';\nimport { Operators } from './../../input-output/pdf-operators';\nvar UnicodeTrueTypeFont = /** @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isFont = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isFont = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isFont = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isFont = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isFont = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\nexport { UnicodeTrueTypeFont };\n","/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\nvar ArabicShapeRenderer = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\nexport { ArabicShapeRenderer };\n//#endregion\n//#region Internals\nvar ArabicShape = /** @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\nexport { ArabicShape };\n//#endregion\n","/**\n * Bidi.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../../../collections/dictionary';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nexport { Bidi };\nvar RtlCharacters = /** @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\nexport { RtlCharacters };\n","import { PdfString } from './../../primitives/pdf-string';\nimport { ArabicShapeRenderer } from './rtl/rtl-text-shape';\nimport { PdfTextDirection } from './../enum';\nimport { Bidi } from './rtl/rtl-bidirectional';\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\nexport { RtlRenderer };\n","/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n function PdfBoolean(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n Object.defineProperty(PdfBoolean.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.objectStatus;\n },\n set: function (value) {\n this.objectStatus = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.saving;\n },\n set: function (value) {\n this.saving = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index;\n },\n set: function (value) {\n this.index = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfBoolean.prototype.save = function (writer) {\n writer.write(this.boolToStr(this.value));\n };\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n PdfBoolean.prototype.clone = function (crossTable) {\n var newNumber = new PdfBoolean(this.value);\n return newNumber;\n };\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n PdfBoolean.prototype.boolToStr = function (value) {\n return value ? 'true' : 'false';\n };\n return PdfBoolean;\n}());\nexport { PdfBoolean };\n","/**\n * ImageDecoder class\n */\nimport { ByteArray } from './byte-array';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\n/**\n * Specifies the image `format`.\n * @private\n */\nexport var ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nvar ImageDecoder = /** @class */ (function () {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n function ImageDecoder(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n Object.defineProperty(ImageDecoder.prototype, \"height\", {\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"width\", {\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"bitsPerComponent\", {\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mbitsPerComponent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"size\", {\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageData\", {\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageDataAsNumberArray\", {\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.internalBuffer.buffer;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.initialize = function () {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n };\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.reset = function () {\n this.mStream.position = 0;\n };\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.parseJpegImage = function () {\n this.reset();\n var imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n var i = 4;\n var isLengthExceed = false;\n /* tslint:disable */\n var length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n };\n Object.defineProperty(ImageDecoder.prototype, \"format\", {\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get: function () {\n return this.mFormat;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n ImageDecoder.prototype.checkIfJpeg = function () {\n this.reset();\n for (var i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n };\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getImageDictionary = function () {\n if (this.mFormat === ImageFormat.Jpeg) {\n var tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isImage = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var skippedByte = 0;\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n skippedByte++;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\nexport { ImageDecoder };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfColorSpace } from './../enum';\nimport { PdfColor } from './../pdf-color';\nimport { PdfBrush } from './pdf-brush';\nimport { PdfDictionary } from '../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfBoolean } from './../../primitives/pdf-boolean';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfName } from '../../primitives/pdf-name';\nimport { PdfNumber } from '../../primitives/pdf-number';\nimport { PdfReferenceHolder } from '../../primitives/pdf-reference';\n/**\n * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @class */ (function (_super) {\n __extends(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\nexport { PdfGradientBrush };\n","/**\n * PdfTemplate.ts class for EJ2-PDF\n */\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfName } from './../../primitives/pdf-name';\nimport { PointF, SizeF, RectangleF } from './../../drawing/pdf-drawing';\nimport { GetResourceEventHandler } from './../pdf-graphics';\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\n}());\nexport { PdfTemplate };\n","/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\nexport { PdfUnitConverter };\n","import { SizeF } from './../../drawing/pdf-drawing';\nimport { PdfGraphicsUnit } from './../enum';\nimport { PdfUnitConverter } from './../unit-convertor';\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\nexport { PdfImage };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfBitmap.ts class for EJ2-PDF\n */\nimport { ImageDecoder } from './../../graphics/images/image-decoder';\nimport { ByteArray } from './../../graphics/images/byte-array';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfImage } from './pdf-image';\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @class */ (function (_super) {\n __extends(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\nexport { PdfBitmap };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfResources.ts class for EJ2-PDF\n */\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTemplate } from './figures/pdf-template';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfBitmap } from './../graphics/images/pdf-bitmap';\nimport { PdfImage } from './../graphics/images/pdf-image';\nimport { PdfGradientBrush } from './brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @class */ (function (_super) {\n __extends(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\nexport { PdfResources };\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\nexport { Guid };\n/* tslint:enable */ \n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { GetResourceEventHandler } from './../pdf-graphics';\nimport { PdfBrush } from './pdf-brush';\nimport { PointF, SizeF, RectangleF, Rectangle } from './../../drawing/pdf-drawing';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfArray } from './../../primitives/pdf-array';\nimport { PdfNumber } from './../../primitives/pdf-number';\nimport { PdfGraphics } from './../pdf-graphics';\nimport { PdfResources } from './../pdf-resources';\nimport { PdfStream } from './../../primitives/pdf-stream';\nimport { PdfPage } from './../../pages/pdf-page';\n/**\n * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @class */ (function (_super) {\n __extends(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\nexport { PdfTilingBrush };\n","/**\n * PdfGraphics.ts class for EJ2-PDF\n */\nimport { PdfColorSpace, TextRenderingMode, PdfFillMode, PdfTextAlignment } from './enum';\nimport { PdfVerticalAlignment, PdfBlendMode } from './enum';\nimport { PdfSubSuperScript } from './fonts/enum';\nimport { PdfStreamWriter } from './../input-output/pdf-stream-writer';\nimport { PdfPen } from './pdf-pen';\nimport { PdfBrush } from './brushes/pdf-brush';\nimport { PdfSolidBrush } from './brushes/pdf-solid-brush';\nimport { PdfFont } from './fonts/pdf-font';\nimport { PdfTransformationMatrix } from './pdf-transformation-matrix';\nimport { PointF, SizeF, RectangleF } from './../drawing/pdf-drawing';\nimport { ProcedureSets } from './constants';\nimport { PdfString } from './../primitives/pdf-string';\nimport { PdfStringFormat } from './fonts/pdf-string-format';\nimport { TemporaryDictionary } from './../collections/object-object-pair/dictionary';\nimport { PdfTransparency } from './pdf-transparency';\nimport { PdfStringLayouter, LineType } from './fonts/string-layouter';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { StringTokenizer } from './fonts/string-tokenizer';\nimport { PdfAutomaticFieldInfoCollection } from './../document/automatic-fields/automatic-field-info-collection';\nimport { PdfAutomaticFieldInfo } from './../document/automatic-fields/automatic-field-info';\nimport { Operators } from './../input-output/pdf-operators';\nimport { UnicodeTrueTypeFont } from './fonts/unicode-true-type-font';\nimport { InternalEnum } from './../primitives/pdf-string';\nimport { RtlRenderer } from './fonts/rtl-renderer';\nimport { PdfTextDirection } from './enum';\nimport { PathPointType } from './figures/enum';\nimport { PdfGradientBrush } from './../../implementation/graphics/brushes/pdf-gradient-brush';\nimport { PdfTilingBrush } from './brushes/pdf-tiling-brush';\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /* tslint:disable */\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n }; /* tslint:enable */\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /* tslint:disable */\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n /* tslint:disable */\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent; /* tslint:enable */\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n /* tslint:disable */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var setLineWidth = false;\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /* tslint:disable */\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n /* tslint:disable-next-line:max-line-length */\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n /* tslint:disable-next-line:max-line-length */\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n /* tslint:disable */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n /* tslint:enable */\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n /* tslint:disable */\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify)); /* tslint:enable */\n return shouldJustify;\n };\n /* tslint:disable */\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n /* tslint:disable */\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n /* tslint:enable */\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n var solidBrush = brush;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n var pdfPen = pen;\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n /* tslint:disable */\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n /* tslint:disable */\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n /* tslint:enable */\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n var br = (brush);\n /* tslint:disable */\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n /* tslint:enable */\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n /* tslint:disable */\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None; /* tslint:enable */\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n /* tslint:disable */\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /* tslint:disable */\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n /* tslint:enable */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /* tslint:enable */\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(path.pathPoints, path.pathTypes);\n this.drawPathHelper(pen, brush, path.fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n var errorMsg = 'Malforming path.';\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\nexport { PdfGraphics };\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nexport { GetResourceEventHandler };\nvar PdfGraphicsState = /** @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n this.transformationMatrix = matrix;\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nexport { PdfGraphicsState };\nvar TransparencyData = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n","import { PdfStream } from './../primitives/pdf-stream';\nimport { PdfGraphics, GetResourceEventHandler } from './../graphics/pdf-graphics';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n var cropBox = null;\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\nexport { PdfPageLayer };\n","/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\nexport { PdfCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfPageLayerCollection.ts class for EJ2-PDF\n */\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { PdfPageLayer } from './pdf-page-layer';\nimport { PdfCollection } from './../general/pdf-collection';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfStream } from './../primitives/pdf-stream';\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @class */ (function (_super) {\n __extends(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n var ocproperties = null;\n var propertie = null;\n var isLayerAdded = false;\n // if (loadedPage instanceof PdfPage) {\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var newLine = '\\n';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\nexport { PdfPageLayerCollection };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfPageLayerCollection } from './pdf-page-layer-collection';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfResources } from './../graphics/pdf-resources';\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n var rh = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\nexport { PdfPageBase };\n","import { PdfArray } from './../primitives/pdf-array';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { SizeF, RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfStringLayouter } from './../graphics/fonts/string-layouter';\nimport { PdfColorSpace } from './../graphics/enum';\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\nexport { PdfAnnotationCollection };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfPageBase } from './pdf-page-base';\nimport { PdfDictionary, SaveTemplateEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { SizeF } from './../drawing/pdf-drawing';\nimport { PdfAnnotationCollection } from './../annotations/annotation-collection';\nimport { PdfPageLayer } from './pdf-page-layer';\n/**\n * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @class */ (function (_super) {\n __extends(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\nexport { PdfPage };\n","/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\nexport { PageAddedEventArgs };\n","/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\nexport { PdfSectionPageCollection };\n","import { TemplateType } from './../pages/enum';\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\nexport { PdfDocumentTemplate };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * PdfSectionTemplate.ts class for EJ2-PDF\n */\nimport { PdfDocumentTemplate } from './../document/pdf-document-template';\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @class */ (function (_super) {\n __extends(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\nexport { PdfSectionTemplate };\n","import { PdfPage } from './pdf-page';\nimport { PageAddedEventArgs } from './page-added-event-arguments';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfDictionary } from './../primitives/pdf-dictionary';\nimport { SaveSectionEventHandler } from './../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\nimport { PdfSectionCollection } from './pdf-section-collection';\nimport { PdfSectionPageCollection } from './pdf-section-page-collection';\nimport { RectangleF } from './../drawing/pdf-drawing';\nimport { PdfSectionTemplate } from './pdf-section-templates';\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nexport { PdfSection };\nvar PageSettingsState = /** @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\nexport { PageSettingsState };\n","import { PdfNumber } from './../primitives/pdf-number';\nimport { PdfName } from './../primitives/pdf-name';\nimport { PdfArray } from './../primitives/pdf-array';\nimport { PdfDictionary, SaveSectionCollectionEventHandler } from './../primitives/pdf-dictionary';\nimport { PdfReferenceHolder } from './../primitives/pdf-reference';\nimport { RectangleF, PointF } from './../drawing/pdf-drawing';\nimport { PdfSection } from './pdf-section';\nimport { DictionaryProperties } from './../input-output/pdf-dictionary-properties';\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\nexport { PdfSectionCollection };\n","import { PdfPage } from './pdf-page';\nimport { Dictionary } from './../collections/dictionary';\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n var len;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\nexport { PdfDocumentPageCollection };\n","/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\nimport { Dictionary } from './../collections/dictionary';\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\n}());\nexport { PdfCacheCollection };\n","/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\nimport { PdfFontStyle, PdfFontFamily } from './enum';\nimport { PdfFontMetrics, StandardWidthTable } from './pdf-font-metrics';\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\nexport { PdfStandardFontMetricsFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfFontFamily, PdfFontStyle, FontEncoding } from './enum';\nimport { PdfFont } from './pdf-font';\nimport { PdfDocument } from './../../document/pdf-document';\nimport { PdfStandardFontMetricsFactory } from './pdf-standard-font-metrics-factory';\nimport { PdfDictionary } from './../../primitives/pdf-dictionary';\nimport { DictionaryProperties } from './../../input-output/pdf-dictionary-properties';\nimport { PdfName } from './../../primitives/pdf-name';\n/**\n * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @class */ (function (_super) {\n __extends(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\nexport { PdfStandardFont };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PdfWriter } from './../input-output/pdf-writer';\nimport { PdfMainObjectCollection } from './../input-output/pdf-main-object-collection';\nimport { PdfDocumentBase } from './pdf-document-base';\nimport { PdfCrossTable } from './../input-output/pdf-cross-table';\nimport { PdfCatalog } from './pdf-catalog';\nimport { PdfPageSettings } from './../pages/pdf-page-settings';\nimport { PdfSectionCollection } from './../pages/pdf-section-collection';\nimport { PdfDocumentPageCollection } from './../pages/pdf-document-page-collection';\nimport { PdfCacheCollection } from './../general/pdf-cache-collection';\nimport { PdfColorSpace } from './../graphics/enum';\nimport { PdfDocumentTemplate } from './pdf-document-template';\nimport { PdfFontFamily } from './../graphics/fonts/enum';\nimport { PdfStandardFont } from './../graphics/fonts/pdf-standard-font';\n/**\n * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @class */ (function (_super) {\n __extends(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\nexport { PdfDocument };\n","/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\nimport { PdfDockStyle, PdfAlignmentStyle, TemplateType } from './enum';\nimport { PointF, SizeF } from './../drawing/pdf-drawing';\nimport { PdfTemplate } from './../graphics/figures/pdf-template';\nimport { PdfPage } from './pdf-page';\nimport { RectangleF } from './../drawing/pdf-drawing';\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n if (bounds.x === -0) {\n bounds.x = 0;\n }\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = -actualBounds.x;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = -actualBounds.y;\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = -actualBounds.x;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = -actualBounds.x;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = -actualBounds.x;\n y = -actualBounds.y;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = -actualBounds.y + actualSize.height;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n return PdfPageTemplateElement;\n}());\nexport { PdfPageTemplateElement };\n","import { print as printWindow, createElement, isNullOrUndefined, Browser } from '@syncfusion/ej2-base';\nimport { SvgRenderer } from '@syncfusion/ej2-svg-base';\nimport { getElement, removeElement } from '../utils/helper';\nimport { beforePrint, afterExport } from '../model/constants';\nimport { PdfPageOrientation, PdfDocument, PdfBitmap, SizeF, PdfStandardFont, PdfPageTemplateElement, PdfSolidBrush, PdfColor } from '@syncfusion/ej2-pdf-export';\nvar ExportUtils = /** @class */ (function () {\n /**\n * Constructor for chart and accumulation annotation\n * @param control\n */\n function ExportUtils(control) {\n this.control = control;\n }\n /**\n * To print the accumulation and chart elements\n * @param elements\n */\n ExportUtils.prototype.print = function (elements) {\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n var argsData = {\n cancel: false, htmlContent: this.getHTMLContent(elements), name: beforePrint\n };\n this.control.trigger(beforePrint, argsData);\n if (!argsData.cancel) {\n printWindow(argsData.htmlContent, this.printWindow);\n }\n };\n /**\n * To get the html string of the chart and accumulation\n * @param elements\n * @private\n */\n ExportUtils.prototype.getHTMLContent = function (elements) {\n var div = createElement('div');\n if (elements) {\n if (elements instanceof Array) {\n for (var j = 0; j < elements.length; j++) {\n var value = elements[j];\n div.appendChild(getElement(value).cloneNode(true));\n }\n }\n else if (elements instanceof Element) {\n div.appendChild(elements.cloneNode(true));\n }\n else {\n div.appendChild(getElement(elements).cloneNode(true));\n }\n }\n else {\n div.appendChild(this.control.element.cloneNode(true));\n }\n return div;\n };\n /**\n * To export the file as image/svg format\n * @param type\n * @param fileName\n */\n ExportUtils.prototype.export = function (type, fileName, orientation, controls, width, height, isVertical, header, footer) {\n var _this = this;\n var controlValue = this.getControlsValue(controls, isVertical);\n width = width ? width : controlValue.width;\n height = height ? height : controlValue.height;\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n var image;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': width.toString(),\n 'height': height.toString()\n }\n });\n }\n var isDownload = !(Browser.userAgent.toString().indexOf('HeadlessChrome') > -1);\n orientation = isNullOrUndefined(orientation) ? PdfPageOrientation.Landscape : orientation;\n var svgData = '' +\n controlValue.svg.outerHTML +\n '';\n var url = window.URL.createObjectURL(new Blob(type === 'SVG' ? [svgData] :\n [(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (type === 'SVG') {\n if (Browser.info.name === 'msie') {\n var svg = new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'application/octet-stream' });\n window.navigator.msSaveOrOpenBlob(svg, fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n this.triggerDownload(fileName, type, url, isDownload);\n }\n }\n else if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n image = canvas.toDataURL();\n if (type === 'PDF') {\n this.exportPdf(canvas, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n this.doexport(type, image, fileName);\n }\n }\n else {\n var image_1 = new Image();\n var ctx_1 = element.getContext('2d');\n image_1.onload = (function () {\n ctx_1.drawImage(image_1, 0, 0);\n window.URL.revokeObjectURL(url);\n if (type === 'PDF') {\n _this.exportPdf(element, orientation, width, height, isDownload, fileName, header, footer);\n }\n else {\n if (window.navigator.msSaveOrOpenBlob) {\n window.navigator.msSaveOrOpenBlob(element.msToBlob(), fileName + '.' + type.toLocaleLowerCase());\n }\n else {\n _this.triggerDownload(fileName, type, element.toDataURL('image/' + type.toLowerCase()), isDownload);\n }\n }\n });\n image_1.src = url;\n }\n if (!isCanvas) {\n removeElement(document.getElementById(this.control.element.id + '_canvas'));\n }\n };\n /**\n * To get data url for charts.\n */\n ExportUtils.prototype.getDataUrl = function (chart) {\n var controlValue = this.getControlsValue([chart]);\n var element = this.control.svgObject;\n var isCanvas = this.control.enableCanvas;\n if (!isCanvas) {\n element = createElement('canvas', {\n id: 'ej2-canvas',\n attrs: {\n 'width': controlValue.width.toString(),\n 'height': controlValue.height.toString()\n }\n });\n }\n var url = window.URL.createObjectURL(new Blob([(new XMLSerializer()).serializeToString(controlValue.svg)], { type: 'image/svg+xml' }));\n if (Browser.info.name === 'msie') {\n var canvas = element;\n if (!isCanvas) {\n canvas = this.createCanvas();\n }\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return { element: canvas, dataUrl: canvas.toDataURL() };\n }\n else {\n var image_2 = new Image();\n var ctx_2 = element.getContext('2d');\n image_2.onload = (function () {\n ctx_2.drawImage(image_2, 0, 0);\n window.URL.revokeObjectURL(url);\n var argsData = {\n name: afterExport, cancel: false, dataUrl: element.toDataURL('image/png')\n };\n chart.trigger(afterExport, argsData);\n return argsData.dataUrl;\n });\n image_2.src = url;\n return { element: element, blobUrl: url };\n }\n };\n /**\n * To trigger the download element\n * @param fileName\n * @param type\n * @param url\n */\n ExportUtils.prototype.triggerDownload = function (fileName, type, url, isDownload) {\n createElement('a', {\n attrs: {\n 'download': fileName + '.' + type.toLocaleLowerCase(),\n 'href': url\n }\n }).dispatchEvent(new MouseEvent(isDownload ? 'click' : 'move', {\n view: window,\n bubbles: false,\n cancelable: true\n }));\n };\n /**\n * To get the maximum size value\n * @param controls\n * @param name\n */\n // tslint:disable-next-line:max-line-length\n ExportUtils.prototype.getControlsValue = function (controls, isVertical) {\n var width = 0;\n var height = 0;\n var content = '';\n var isCanvas = this.control.enableCanvas;\n var svgObject = new SvgRenderer('').createSvg({\n id: 'Svg_Export_Element',\n width: 200, height: 200\n });\n controls.map(function (control) {\n var svg = control.svgObject.cloneNode(true);\n var groupEle = control.renderer.createGroup({\n style: (isNullOrUndefined(isVertical) || isVertical) ? 'transform: translateY(' + height + 'px)' :\n 'transform: translateX(' + width + 'px)'\n });\n if (!isCanvas) {\n groupEle.appendChild(svg);\n }\n width = (isNullOrUndefined(isVertical) || isVertical) ? Math.max(control.availableSize.width, width) :\n width + control.availableSize.width;\n height = (isNullOrUndefined(isVertical) || isVertical) ? height + control.availableSize.height :\n Math.max(control.availableSize.height, height);\n content += control.svgObject.outerHTML;\n if (!isCanvas) {\n svgObject.appendChild(groupEle);\n }\n });\n if (!isCanvas) {\n svgObject.setAttribute('width', width + '');\n svgObject.setAttribute('height', height + '');\n }\n return {\n 'width': width,\n 'height': height,\n 'svg': svgObject\n };\n };\n ExportUtils.prototype.createCanvas = function () {\n var chart = this.control;\n this.canvasRender(true, chart);\n var canvas = chart.svgObject;\n this.canvasRender(false, chart);\n return canvas;\n };\n /**\n * To convert svg chart into canvas chart to fix export issue in IE\n * We cant export svg to other formats in IE\n */\n // tslint:disable:no-string-literal\n ExportUtils.prototype.canvasRender = function (enableCanvas, chart) {\n chart.enableCanvas = enableCanvas;\n chart['preRender']();\n chart['render']();\n };\n // tslint:disable-next-line:max-line-length\n ExportUtils.prototype.exportPdf = function (element, orientation, width, height, isDownload, fileName, header, footer) {\n var document = new PdfDocument();\n var margin = document.pageSettings.margins;\n var pdfDefaultWidth = document.pageSettings.width;\n var pdfDefaultHeight = document.pageSettings.height;\n var exactWidth;\n var exactHeight;\n var imageString = element.toDataURL('image/jpeg').replace('image/jpeg', 'image/octet-stream');\n document.pageSettings.orientation = orientation;\n exactWidth = (pdfDefaultWidth < width) ? (width + margin.left + margin.right) : pdfDefaultWidth;\n exactHeight = (pdfDefaultHeight < height) ? (height + margin.top + margin.bottom) : pdfDefaultHeight;\n if (header !== undefined) {\n var font = new PdfStandardFont(1, header.fontSize || 15);\n var pdfHeader = new PdfPageTemplateElement(exactWidth, 40);\n // tslint:disable-next-line:max-line-length\n pdfHeader.graphics.drawString(header.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), header.x, header.y, null);\n document.template.top = pdfHeader;\n }\n if (footer !== undefined) {\n var font = new PdfStandardFont(1, footer.fontSize || 15);\n var pdfFooter = new PdfPageTemplateElement(exactWidth, 40);\n // tslint:disable-next-line:max-line-length\n pdfFooter.graphics.drawString(footer.content + '', font, null, new PdfSolidBrush(new PdfColor(0, 0, 0)), footer.x, footer.y, null);\n document.template.bottom = pdfFooter;\n }\n document.pageSettings.size = new SizeF(exactWidth, exactHeight);\n imageString = imageString.slice(imageString.indexOf(',') + 1);\n document.pages.add().graphics.drawImage(new PdfBitmap(imageString), 0, 0, width, height);\n if (isDownload) {\n document.save(fileName + '.pdf');\n document.destroy();\n }\n };\n ExportUtils.prototype.doexport = function (type, image, fileName) {\n var images = [];\n var fileType = type || 'JPG';\n images = [image];\n this.exportImage(images, fileName, fileType, image);\n };\n ExportUtils.prototype.exportImage = function (images, fileName, fileType, image) {\n var buffers = [];\n var length = (!(images instanceof HTMLElement)) ? images.length : 0;\n for (var g = 0; g < length; g++) {\n image = images[g];\n image = image.replace(/^data:[a-z]*;,/, '');\n var image1 = image.split(',');\n var byteString = atob(image1[1]);\n var buffer = new ArrayBuffer(byteString.length);\n var intArray = new Uint8Array(buffer);\n for (var i = 0; i < byteString.length; i++) {\n intArray[i] = byteString.charCodeAt(i);\n }\n buffers.push(buffer);\n }\n for (var j = 0; j < buffers.length; j++) {\n var b = new Blob([buffers[j]], { type: 'application/octet-stream' });\n if (Browser.info.name === 'msie') {\n window.navigator.msSaveOrOpenBlob(b, fileName + '.' + fileType.toLocaleLowerCase());\n }\n }\n };\n return ExportUtils;\n}());\nexport { ExportUtils };\n","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray;","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n","var pIE = require('./_object-pie');\nvar createDesc = require('./_property-desc');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar has = require('./_has');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nexports.f = require('./_descriptors') ? gOPD : function getOwnPropertyDescriptor(O, P) {\n O = toIObject(O);\n P = toPrimitive(P, true);\n if (IE8_DOM_DEFINE) try {\n return gOPD(O, P);\n } catch (e) { /* empty */ }\n if (has(O, P)) return createDesc(!pIE.f.call(O, P), O[P]);\n};\n","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n","// most Object methods by ES6 should accept primitives\nvar $export = require('./_export');\nvar core = require('./_core');\nvar fails = require('./_fails');\nmodule.exports = function (KEY, exec) {\n var fn = (core.Object || {})[KEY] || Object[KEY];\n var exp = {};\n exp[KEY] = exec(fn);\n $export($export.S + $export.F * fails(function () { fn(1); }), 'Object', exp);\n};\n","var META = require('./_uid')('meta');\nvar isObject = require('./_is-object');\nvar has = require('./_has');\nvar setDesc = require('./_object-dp').f;\nvar id = 0;\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\nvar FREEZE = !require('./_fails')(function () {\n return isExtensible(Object.preventExtensions({}));\n});\nvar setMeta = function (it) {\n setDesc(it, META, { value: {\n i: 'O' + ++id, // object ID\n w: {} // weak collections IDs\n } });\n};\nvar fastKey = function (it, create) {\n // return primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F';\n // not necessary to add metadata\n if (!create) return 'E';\n // add missing metadata\n setMeta(it);\n // return object ID\n } return it[META].i;\n};\nvar getWeak = function (it, create) {\n if (!has(it, META)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true;\n // not necessary to add metadata\n if (!create) return false;\n // add missing metadata\n setMeta(it);\n // return hash weak collections IDs\n } return it[META].w;\n};\n// add metadata on freeze-family methods calling\nvar onFreeze = function (it) {\n if (FREEZE && meta.NEED && isExtensible(it) && !has(it, META)) setMeta(it);\n return it;\n};\nvar meta = module.exports = {\n KEY: META,\n NEED: false,\n fastKey: fastKey,\n getWeak: getWeak,\n onFreeze: onFreeze\n};\n","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: require('./_library') ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n","var global = require('./_global');\nvar core = require('./_core');\nvar LIBRARY = require('./_library');\nvar wksExt = require('./_wks-ext');\nvar defineProperty = require('./_object-dp').f;\nmodule.exports = function (name) {\n var $Symbol = core.Symbol || (core.Symbol = LIBRARY ? {} : global.Symbol || {});\n if (name.charAt(0) != '_' && !(name in $Symbol)) defineProperty($Symbol, name, { value: wksExt.f(name) });\n};\n","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n","// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n","exports.f = Object.getOwnPropertySymbols;\n","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n return cof(arg) == 'Array';\n};\n","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n $iterCreate(Constructor, NAME, next);\n var getMethod = function (kind) {\n if (!BUGGY && kind in proto) return proto[kind];\n switch (kind) {\n case KEYS: return function keys() { return new Constructor(this, kind); };\n case VALUES: return function values() { return new Constructor(this, kind); };\n } return function entries() { return new Constructor(this, kind); };\n };\n var TAG = NAME + ' Iterator';\n var DEF_VALUES = DEFAULT == VALUES;\n var VALUES_BUG = false;\n var proto = Base.prototype;\n var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n var $default = $native || getMethod(DEFAULT);\n var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n var methods, key, IteratorPrototype;\n // Fix native\n if ($anyNative) {\n IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n // Set @@toStringTag to native iterators\n setToStringTag(IteratorPrototype, TAG, true);\n // fix for some old engines\n if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n }\n }\n // fix Array#{values, @@iterator}.name in V8 / FF\n if (DEF_VALUES && $native && $native.name !== VALUES) {\n VALUES_BUG = true;\n $default = function values() { return $native.call(this); };\n }\n // Define iterator\n if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n hide(proto, ITERATOR, $default);\n }\n // Plug for library\n Iterators[NAME] = $default;\n Iterators[TAG] = returnThis;\n if (DEFAULT) {\n methods = {\n values: DEF_VALUES ? $default : getMethod(VALUES),\n keys: IS_SET ? $default : getMethod(KEYS),\n entries: $entries\n };\n if (FORCED) for (key in methods) {\n if (!(key in proto)) redefine(proto, key, methods[key]);\n } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n }\n return methods;\n};\n","module.exports = function () { /* empty */ };\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignValue;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","module.exports = function(module) {\n\tif (!module.webpackPolyfill) {\n\t\tmodule.deprecate = function() {};\n\t\tmodule.paths = [];\n\t\t// module.parent = undefined by default\n\t\tif (!module.children) module.children = [];\n\t\tObject.defineProperty(module, \"loaded\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.l;\n\t\t\t}\n\t\t});\n\t\tObject.defineProperty(module, \"id\", {\n\t\t\tenumerable: true,\n\t\t\tget: function() {\n\t\t\t\treturn module.i;\n\t\t\t}\n\t\t});\n\t\tmodule.webpackPolyfill = 1;\n\t}\n\treturn module;\n};\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","var hide = require('./_hide');\nmodule.exports = function (target, src, safe) {\n for (var key in src) {\n if (safe && target[key]) target[key] = src[key];\n else hide(target, key, src[key]);\n } return target;\n};\n","module.exports = function (it, Constructor, name, forbiddenField) {\n if (!(it instanceof Constructor) || (forbiddenField !== undefined && forbiddenField in it)) {\n throw TypeError(name + ': incorrect invocation!');\n } return it;\n};\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var overArg = require('./_overArg');\n\n/** Built-in value references. */\nvar getPrototype = overArg(Object.getPrototypeOf, Object);\n\nmodule.exports = getPrototype;\n","var Uint8Array = require('./_Uint8Array');\n\n/**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\nfunction cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n}\n\nmodule.exports = cloneArrayBuffer;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var eq = require('./eq'),\n isArrayLike = require('./isArrayLike'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject');\n\n/**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\nfunction isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n}\n\nmodule.exports = isIterateeCall;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n cacheHas = require('./_cacheHas'),\n createSet = require('./_createSet'),\n setToArray = require('./_setToArray');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\nfunction baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseUniq;\n","var baseIndexOf = require('./_baseIndexOf');\n\n/**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n}\n\nmodule.exports = arrayIncludes;\n","/**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\nfunction arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arrayIncludesWith;\n","var baseGetTag = require('./_baseGetTag'),\n getPrototype = require('./_getPrototype'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to infer the `Object` constructor. */\nvar objectCtorString = funcToString.call(Object);\n\n/**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\nfunction isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n}\n\nmodule.exports = isPlainObject;\n","'use strict';\n\n/**\n* FUNCTION: isArray( value )\n*\tValidates if a value is an array.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is an array\n*/\nfunction isArray( value ) {\n\treturn Object.prototype.toString.call( value ) === '[object Array]';\n} // end FUNCTION isArray()\n\n// EXPORTS //\n\nmodule.exports = Array.isArray || isArray;\n","'use strict';\n\nvar URI = require('uri-js')\n , equal = require('fast-deep-equal')\n , util = require('./util')\n , SchemaObject = require('./schema_obj')\n , traverse = require('json-schema-traverse');\n\nmodule.exports = resolve;\n\nresolve.normalizeId = normalizeId;\nresolve.fullPath = getFullPath;\nresolve.url = resolveUrl;\nresolve.ids = resolveIds;\nresolve.inlineRef = inlineRef;\nresolve.schema = resolveSchema;\n\n/**\n * [resolve and compile the references ($ref)]\n * @this Ajv\n * @param {Function} compile reference to schema compilation funciton (localCompile)\n * @param {Object} root object with information about the root schema for the current schema\n * @param {String} ref reference to resolve\n * @return {Object|Function} schema object (if the schema can be inlined) or validation function\n */\nfunction resolve(compile, root, ref) {\n /* jshint validthis: true */\n var refVal = this._refs[ref];\n if (typeof refVal == 'string') {\n if (this._refs[refVal]) refVal = this._refs[refVal];\n else return resolve.call(this, compile, root, refVal);\n }\n\n refVal = refVal || this._schemas[ref];\n if (refVal instanceof SchemaObject) {\n return inlineRef(refVal.schema, this._opts.inlineRefs)\n ? refVal.schema\n : refVal.validate || this._compile(refVal);\n }\n\n var res = resolveSchema.call(this, root, ref);\n var schema, v, baseId;\n if (res) {\n schema = res.schema;\n root = res.root;\n baseId = res.baseId;\n }\n\n if (schema instanceof SchemaObject) {\n v = schema.validate || compile.call(this, schema.schema, root, undefined, baseId);\n } else if (schema !== undefined) {\n v = inlineRef(schema, this._opts.inlineRefs)\n ? schema\n : compile.call(this, schema, root, undefined, baseId);\n }\n\n return v;\n}\n\n\n/**\n * Resolve schema, its root and baseId\n * @this Ajv\n * @param {Object} root root object with properties schema, refVal, refs\n * @param {String} ref reference to resolve\n * @return {Object} object with properties schema, root, baseId\n */\nfunction resolveSchema(root, ref) {\n /* jshint validthis: true */\n var p = URI.parse(ref)\n , refPath = _getFullPath(p)\n , baseId = getFullPath(this._getId(root.schema));\n if (Object.keys(root.schema).length === 0 || refPath !== baseId) {\n var id = normalizeId(refPath);\n var refVal = this._refs[id];\n if (typeof refVal == 'string') {\n return resolveRecursive.call(this, root, refVal, p);\n } else if (refVal instanceof SchemaObject) {\n if (!refVal.validate) this._compile(refVal);\n root = refVal;\n } else {\n refVal = this._schemas[id];\n if (refVal instanceof SchemaObject) {\n if (!refVal.validate) this._compile(refVal);\n if (id == normalizeId(ref))\n return { schema: refVal, root: root, baseId: baseId };\n root = refVal;\n } else {\n return;\n }\n }\n if (!root.schema) return;\n baseId = getFullPath(this._getId(root.schema));\n }\n return getJsonPointer.call(this, p, baseId, root.schema, root);\n}\n\n\n/* @this Ajv */\nfunction resolveRecursive(root, ref, parsedRef) {\n /* jshint validthis: true */\n var res = resolveSchema.call(this, root, ref);\n if (res) {\n var schema = res.schema;\n var baseId = res.baseId;\n root = res.root;\n var id = this._getId(schema);\n if (id) baseId = resolveUrl(baseId, id);\n return getJsonPointer.call(this, parsedRef, baseId, schema, root);\n }\n}\n\n\nvar PREVENT_SCOPE_CHANGE = util.toHash(['properties', 'patternProperties', 'enum', 'dependencies', 'definitions']);\n/* @this Ajv */\nfunction getJsonPointer(parsedRef, baseId, schema, root) {\n /* jshint validthis: true */\n parsedRef.fragment = parsedRef.fragment || '';\n if (parsedRef.fragment.slice(0,1) != '/') return;\n var parts = parsedRef.fragment.split('/');\n\n for (var i = 1; i < parts.length; i++) {\n var part = parts[i];\n if (part) {\n part = util.unescapeFragment(part);\n schema = schema[part];\n if (schema === undefined) break;\n var id;\n if (!PREVENT_SCOPE_CHANGE[part]) {\n id = this._getId(schema);\n if (id) baseId = resolveUrl(baseId, id);\n if (schema.$ref) {\n var $ref = resolveUrl(baseId, schema.$ref);\n var res = resolveSchema.call(this, root, $ref);\n if (res) {\n schema = res.schema;\n root = res.root;\n baseId = res.baseId;\n }\n }\n }\n }\n }\n if (schema !== undefined && schema !== root.schema)\n return { schema: schema, root: root, baseId: baseId };\n}\n\n\nvar SIMPLE_INLINED = util.toHash([\n 'type', 'format', 'pattern',\n 'maxLength', 'minLength',\n 'maxProperties', 'minProperties',\n 'maxItems', 'minItems',\n 'maximum', 'minimum',\n 'uniqueItems', 'multipleOf',\n 'required', 'enum'\n]);\nfunction inlineRef(schema, limit) {\n if (limit === false) return false;\n if (limit === undefined || limit === true) return checkNoRef(schema);\n else if (limit) return countKeys(schema) <= limit;\n}\n\n\nfunction checkNoRef(schema) {\n var item;\n if (Array.isArray(schema)) {\n for (var i=0; i 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","module.exports = require(\"core-js/library/fn/object/get-prototype-of\");","module.exports = require(\"core-js/library/fn/number/is-nan\");","module.exports = require(\"core-js/library/fn/promise\");","import React, { Component } from 'react';\nimport _inheritsLoose from '@babel/runtime/helpers/esm/inheritsLoose';\nimport PropTypes from 'prop-types';\nimport warning from 'tiny-warning';\n\nvar MAX_SIGNED_31_BIT_INT = 1073741823;\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : {};\n\nfunction getUniqueId() {\n var key = '__global_unique_id__';\n return commonjsGlobal[key] = (commonjsGlobal[key] || 0) + 1;\n}\n\nfunction objectIs(x, y) {\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y;\n } else {\n return x !== x && y !== y;\n }\n}\n\nfunction createEventEmitter(value) {\n var handlers = [];\n return {\n on: function on(handler) {\n handlers.push(handler);\n },\n off: function off(handler) {\n handlers = handlers.filter(function (h) {\n return h !== handler;\n });\n },\n get: function get() {\n return value;\n },\n set: function set(newValue, changedBits) {\n value = newValue;\n handlers.forEach(function (handler) {\n return handler(value, changedBits);\n });\n }\n };\n}\n\nfunction onlyChild(children) {\n return Array.isArray(children) ? children[0] : children;\n}\n\nfunction createReactContext(defaultValue, calculateChangedBits) {\n var _Provider$childContex, _Consumer$contextType;\n\n var contextProp = '__create-react-context-' + getUniqueId() + '__';\n\n var Provider = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Provider, _Component);\n\n function Provider() {\n var _this;\n\n _this = _Component.apply(this, arguments) || this;\n _this.emitter = createEventEmitter(_this.props.value);\n return _this;\n }\n\n var _proto = Provider.prototype;\n\n _proto.getChildContext = function getChildContext() {\n var _ref;\n\n return _ref = {}, _ref[contextProp] = this.emitter, _ref;\n };\n\n _proto.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n if (this.props.value !== nextProps.value) {\n var oldValue = this.props.value;\n var newValue = nextProps.value;\n var changedBits;\n\n if (objectIs(oldValue, newValue)) {\n changedBits = 0;\n } else {\n changedBits = typeof calculateChangedBits === 'function' ? calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;\n\n if (process.env.NODE_ENV !== 'production') {\n warning((changedBits & MAX_SIGNED_31_BIT_INT) === changedBits, 'calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: ' + changedBits);\n }\n\n changedBits |= 0;\n\n if (changedBits !== 0) {\n this.emitter.set(nextProps.value, changedBits);\n }\n }\n }\n };\n\n _proto.render = function render() {\n return this.props.children;\n };\n\n return Provider;\n }(Component);\n\n Provider.childContextTypes = (_Provider$childContex = {}, _Provider$childContex[contextProp] = PropTypes.object.isRequired, _Provider$childContex);\n\n var Consumer = /*#__PURE__*/function (_Component2) {\n _inheritsLoose(Consumer, _Component2);\n\n function Consumer() {\n var _this2;\n\n _this2 = _Component2.apply(this, arguments) || this;\n _this2.state = {\n value: _this2.getValue()\n };\n\n _this2.onUpdate = function (newValue, changedBits) {\n var observedBits = _this2.observedBits | 0;\n\n if ((observedBits & changedBits) !== 0) {\n _this2.setState({\n value: _this2.getValue()\n });\n }\n };\n\n return _this2;\n }\n\n var _proto2 = Consumer.prototype;\n\n _proto2.componentWillReceiveProps = function componentWillReceiveProps(nextProps) {\n var observedBits = nextProps.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentDidMount = function componentDidMount() {\n if (this.context[contextProp]) {\n this.context[contextProp].on(this.onUpdate);\n }\n\n var observedBits = this.props.observedBits;\n this.observedBits = observedBits === undefined || observedBits === null ? MAX_SIGNED_31_BIT_INT : observedBits;\n };\n\n _proto2.componentWillUnmount = function componentWillUnmount() {\n if (this.context[contextProp]) {\n this.context[contextProp].off(this.onUpdate);\n }\n };\n\n _proto2.getValue = function getValue() {\n if (this.context[contextProp]) {\n return this.context[contextProp].get();\n } else {\n return defaultValue;\n }\n };\n\n _proto2.render = function render() {\n return onlyChild(this.props.children)(this.state.value);\n };\n\n return Consumer;\n }(Component);\n\n Consumer.contextTypes = (_Consumer$contextType = {}, _Consumer$contextType[contextProp] = PropTypes.object, _Consumer$contextType);\n return {\n Provider: Provider,\n Consumer: Consumer\n };\n}\n\nvar index = React.createContext || createReactContext;\n\nexport default index;\n","var isarray = require('isarray')\n\n/**\n * Expose `pathToRegexp`.\n */\nmodule.exports = pathToRegexp\nmodule.exports.parse = parse\nmodule.exports.compile = compile\nmodule.exports.tokensToFunction = tokensToFunction\nmodule.exports.tokensToRegExp = tokensToRegExp\n\n/**\n * The main path matching regexp utility.\n *\n * @type {RegExp}\n */\nvar PATH_REGEXP = new RegExp([\n // Match escaped characters that would otherwise appear in future matches.\n // This allows the user to escape special characters that won't transform.\n '(\\\\\\\\.)',\n // Match Express-style parameters and un-named parameters with a prefix\n // and optional suffixes. Matches appear as:\n //\n // \"/:test(\\\\d+)?\" => [\"/\", \"test\", \"\\d+\", undefined, \"?\", undefined]\n // \"/route(\\\\d+)\" => [undefined, undefined, undefined, \"\\d+\", undefined, undefined]\n // \"/*\" => [\"/\", undefined, undefined, undefined, undefined, \"*\"]\n '([\\\\/.])?(?:(?:\\\\:(\\\\w+)(?:\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))?|\\\\(((?:\\\\\\\\.|[^\\\\\\\\()])+)\\\\))([+*?])?|(\\\\*))'\n].join('|'), 'g')\n\n/**\n * Parse a string for the raw tokens.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!Array}\n */\nfunction parse (str, options) {\n var tokens = []\n var key = 0\n var index = 0\n var path = ''\n var defaultDelimiter = options && options.delimiter || '/'\n var res\n\n while ((res = PATH_REGEXP.exec(str)) != null) {\n var m = res[0]\n var escaped = res[1]\n var offset = res.index\n path += str.slice(index, offset)\n index = offset + m.length\n\n // Ignore already escaped sequences.\n if (escaped) {\n path += escaped[1]\n continue\n }\n\n var next = str[index]\n var prefix = res[2]\n var name = res[3]\n var capture = res[4]\n var group = res[5]\n var modifier = res[6]\n var asterisk = res[7]\n\n // Push the current path onto the tokens.\n if (path) {\n tokens.push(path)\n path = ''\n }\n\n var partial = prefix != null && next != null && next !== prefix\n var repeat = modifier === '+' || modifier === '*'\n var optional = modifier === '?' || modifier === '*'\n var delimiter = res[2] || defaultDelimiter\n var pattern = capture || group\n\n tokens.push({\n name: name || key++,\n prefix: prefix || '',\n delimiter: delimiter,\n optional: optional,\n repeat: repeat,\n partial: partial,\n asterisk: !!asterisk,\n pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')\n })\n }\n\n // Match any characters still remaining.\n if (index < str.length) {\n path += str.substr(index)\n }\n\n // If the path exists, push it onto the end.\n if (path) {\n tokens.push(path)\n }\n\n return tokens\n}\n\n/**\n * Compile a string to a template function for the path.\n *\n * @param {string} str\n * @param {Object=} options\n * @return {!function(Object=, Object=)}\n */\nfunction compile (str, options) {\n return tokensToFunction(parse(str, options), options)\n}\n\n/**\n * Prettier encoding of URI path segments.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeURIComponentPretty (str) {\n return encodeURI(str).replace(/[\\/?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Encode the asterisk parameter. Similar to `pretty`, but allows slashes.\n *\n * @param {string}\n * @return {string}\n */\nfunction encodeAsterisk (str) {\n return encodeURI(str).replace(/[?#]/g, function (c) {\n return '%' + c.charCodeAt(0).toString(16).toUpperCase()\n })\n}\n\n/**\n * Expose a method for transforming tokens into the path function.\n */\nfunction tokensToFunction (tokens, options) {\n // Compile all the tokens into regexps.\n var matches = new Array(tokens.length)\n\n // Compile all the patterns before compilation.\n for (var i = 0; i < tokens.length; i++) {\n if (typeof tokens[i] === 'object') {\n matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$', flags(options))\n }\n }\n\n return function (obj, opts) {\n var path = ''\n var data = obj || {}\n var options = opts || {}\n var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n path += token\n\n continue\n }\n\n var value = data[token.name]\n var segment\n\n if (value == null) {\n if (token.optional) {\n // Prepend partial segment prefixes.\n if (token.partial) {\n path += token.prefix\n }\n\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to be defined')\n }\n }\n\n if (isarray(value)) {\n if (!token.repeat) {\n throw new TypeError('Expected \"' + token.name + '\" to not repeat, but received `' + JSON.stringify(value) + '`')\n }\n\n if (value.length === 0) {\n if (token.optional) {\n continue\n } else {\n throw new TypeError('Expected \"' + token.name + '\" to not be empty')\n }\n }\n\n for (var j = 0; j < value.length; j++) {\n segment = encode(value[j])\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected all \"' + token.name + '\" to match \"' + token.pattern + '\", but received `' + JSON.stringify(segment) + '`')\n }\n\n path += (j === 0 ? token.prefix : token.delimiter) + segment\n }\n\n continue\n }\n\n segment = token.asterisk ? encodeAsterisk(value) : encode(value)\n\n if (!matches[i].test(segment)) {\n throw new TypeError('Expected \"' + token.name + '\" to match \"' + token.pattern + '\", but received \"' + segment + '\"')\n }\n\n path += token.prefix + segment\n }\n\n return path\n }\n}\n\n/**\n * Escape a regular expression string.\n *\n * @param {string} str\n * @return {string}\n */\nfunction escapeString (str) {\n return str.replace(/([.+*?=^!:${}()[\\]|\\/\\\\])/g, '\\\\$1')\n}\n\n/**\n * Escape the capturing group by escaping special characters and meaning.\n *\n * @param {string} group\n * @return {string}\n */\nfunction escapeGroup (group) {\n return group.replace(/([=!:$\\/()])/g, '\\\\$1')\n}\n\n/**\n * Attach the keys as a property of the regexp.\n *\n * @param {!RegExp} re\n * @param {Array} keys\n * @return {!RegExp}\n */\nfunction attachKeys (re, keys) {\n re.keys = keys\n return re\n}\n\n/**\n * Get the flags for a regexp from the options.\n *\n * @param {Object} options\n * @return {string}\n */\nfunction flags (options) {\n return options && options.sensitive ? '' : 'i'\n}\n\n/**\n * Pull out keys from a regexp.\n *\n * @param {!RegExp} path\n * @param {!Array} keys\n * @return {!RegExp}\n */\nfunction regexpToRegexp (path, keys) {\n // Use a negative lookahead to match only capturing groups.\n var groups = path.source.match(/\\((?!\\?)/g)\n\n if (groups) {\n for (var i = 0; i < groups.length; i++) {\n keys.push({\n name: i,\n prefix: null,\n delimiter: null,\n optional: false,\n repeat: false,\n partial: false,\n asterisk: false,\n pattern: null\n })\n }\n }\n\n return attachKeys(path, keys)\n}\n\n/**\n * Transform an array into a regexp.\n *\n * @param {!Array} path\n * @param {Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction arrayToRegexp (path, keys, options) {\n var parts = []\n\n for (var i = 0; i < path.length; i++) {\n parts.push(pathToRegexp(path[i], keys, options).source)\n }\n\n var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))\n\n return attachKeys(regexp, keys)\n}\n\n/**\n * Create a path regexp from string input.\n *\n * @param {string} path\n * @param {!Array} keys\n * @param {!Object} options\n * @return {!RegExp}\n */\nfunction stringToRegexp (path, keys, options) {\n return tokensToRegExp(parse(path, options), keys, options)\n}\n\n/**\n * Expose a function for taking tokens and returning a RegExp.\n *\n * @param {!Array} tokens\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction tokensToRegExp (tokens, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n var strict = options.strict\n var end = options.end !== false\n var route = ''\n\n // Iterate over the tokens and create our regexp string.\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i]\n\n if (typeof token === 'string') {\n route += escapeString(token)\n } else {\n var prefix = escapeString(token.prefix)\n var capture = '(?:' + token.pattern + ')'\n\n keys.push(token)\n\n if (token.repeat) {\n capture += '(?:' + prefix + capture + ')*'\n }\n\n if (token.optional) {\n if (!token.partial) {\n capture = '(?:' + prefix + '(' + capture + '))?'\n } else {\n capture = prefix + '(' + capture + ')?'\n }\n } else {\n capture = prefix + '(' + capture + ')'\n }\n\n route += capture\n }\n }\n\n var delimiter = escapeString(options.delimiter || '/')\n var endsWithDelimiter = route.slice(-delimiter.length) === delimiter\n\n // In non-strict mode we allow a slash at the end of match. If the path to\n // match already ends with a slash, we remove it for consistency. The slash\n // is valid at the end of a path match, not in the middle. This is important\n // in non-ending mode, where \"/test/\" shouldn't match \"/test//route\".\n if (!strict) {\n route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'\n }\n\n if (end) {\n route += '$'\n } else {\n // In non-ending mode, we need the capturing groups to match as much as\n // possible by using a positive lookahead to the end or next path segment.\n route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'\n }\n\n return attachKeys(new RegExp('^' + route, flags(options)), keys)\n}\n\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n *\n * @param {(string|RegExp|Array)} path\n * @param {(Array|Object)=} keys\n * @param {Object=} options\n * @return {!RegExp}\n */\nfunction pathToRegexp (path, keys, options) {\n if (!isarray(keys)) {\n options = /** @type {!Object} */ (keys || options)\n keys = []\n }\n\n options = options || {}\n\n if (path instanceof RegExp) {\n return regexpToRegexp(path, /** @type {!Array} */ (keys))\n }\n\n if (isarray(path)) {\n return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)\n }\n\n return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)\n}\n","import { isNullOrUndefined, classList, createElement } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar spinTemplate = null;\nvar spinCSSClass = null;\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n * @param args\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n * @param args\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.textContent = label;\n container.appendChild(labelEle);\n return labelEle;\n}\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[uniqueID].timeOut = 0;\n globalObject[uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n }\n}\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n svg.style.width = svg.style.height = radius + 'px';\n var x = 0;\n var y = 0;\n var rad = 24;\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n var increment = false;\n var count = 1;\n formSeries(start);\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n function boot_animate(radius) {\n if (globalTimeOut[id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n var spinnerInnerContainer = makeElement('div', {});\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n function updatePath(value, container) {\n if ((!isNullOrUndefined(container.querySelector('svg.e-spin-material')))\n && (!isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle')))) {\n var svg = container.querySelector('svg.e-spin-material');\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n}\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n var startArc = 315;\n var endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0,\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[id].isAnimate = !isHide;\n switch (globalTimeOut[id].type) {\n case 'Material':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n * @param container - Specify the target of the Spinner.\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n * @param args\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n }\n}\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n}\n","import { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n * @param args\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton && args.element.tagName !== 'TEXTAREA') {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons) && args.element.tagName !== 'TEXTAREA') {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n if (inputValue !== '' && !isNullOrUndefined(inputValue) && inputElement.parentElement) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputElement;\n var floatLinelement;\n var floatLabelElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button) {\n if (value) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function updateLabelState(value, label) {\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n if (!isNullOrUndefined(container) &&\n container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([container], CLASSNAMES.INPUTGROUP);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n function wireClearBtnEvents(element, button, container) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button);\n });\n element.addEventListener('blur', function (event) {\n setTimeout(function () { addClass([button], CLASSNAMES.CLEARICONHIDE); }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n * @param value - Specify the value of the input element.\n * @param element - The element on which the specified value is updated.\n * @param floatLabelType - Specify the float label type of the input element.\n * @param clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n * @param cssClass - Css class names which are needed to add.\n * @param elements - The elements which are needed to add / remove classes.\n * @param oldClass - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n * @param width - Width value which is need to add.\n * @param container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n * @param placeholder - Placeholder value which is need to add.\n * @param element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n var parentElement;\n placeholder = encodePlaceHolder(placeholder);\n parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder, 'aria-placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n element.removeAttribute('aria-placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n * @param isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n * @param isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n * @param isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n * @param attrs\n * - Array of attributes which are need to removed from the element.\n * @param element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = void 0;\n parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n * @param attrs\n * - Array of attributes which is added to element.\n * @param element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = void 0;\n parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[key];\n }\n else {\n element.setAttribute(key, attrs[key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type, customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n if (isNullOrUndefined(iconEle)) {\n container.classList.remove(CLASSNAMES.INPUTGROUP);\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n * @param isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param inputObject\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[i].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[index].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[index].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n var ele = this;\n setTimeout(function () { ele.classList.remove('e-input-btn-ripple'); }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n * @param position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n * @param inputElement - The inputElement on which created span element is going to prepend.\n */\n // tslint:disable\n function addIcon(position, icons, container, input, internalCreate) {\n // tslint:enable\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n * @param inputElement - The inputElement on which created span element is going to prepend.\n */\n // tslint:disable\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n // tslint:enable\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n innerWrapper.appendChild(result[i]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n * @param iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile, isBlazor } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove, updateBlazorTemplate, resetBlazorTemplate } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /**\n * Constructor for creating the Tooltip Component\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isBlazorTooltip = false;\n _this.contentTargetValue = null;\n _this.contentEvent = null;\n _this.contentAnimation = null;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n if (!(this.isServerRender())) {\n addClass([this.element], ROOT);\n }\n };\n Tooltip.prototype.isServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n if (!(this.isServerRender())) {\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n }\n else {\n var tip = this.tooltipEle.querySelector('.' + ARROW_TIP);\n addClass([tip.querySelector('.' + ARROW_TIP_OUTER)], this.tipClass);\n addClass([tip.querySelector('.' + ARROW_TIP_INNER)], this.tipClass);\n this.tooltipEle.appendChild(tip);\n }\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY);\n var offsetPos = this.calculateTooltipOffset(this.position);\n var elePos = this.collisionFlipFit(target, pos.left + offsetPos.left, pos.top + offsetPos.top);\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.reposition = function (target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n };\n Tooltip.prototype.closePopupHandler = function () {\n resetBlazorTemplate(this.element.id + 'content', 'Content');\n this.clearTemplate(['content']);\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n };\n Tooltip.prototype.calculateTooltipOffset = function (position) {\n var pos = { top: 0, left: 0 };\n var tooltipEleWidth = this.tooltipEle.offsetWidth;\n var tooltipEleHeight = this.tooltipEle.offsetHeight;\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n var tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n var tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n var tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n var tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = this.tooltipEle.querySelectorAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = this.tooltipEle.querySelector('.' + CONTENT);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n if (this.isBlazorTooltip || !(this.isServerRender())) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string' && this.content.indexOf('
Blazor') < 0) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n tooltipContent[this.enableHtmlParse ? 'innerHTML' : 'textContent'] = this.content;\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n if (typeof this.content === 'string' && this.content.indexOf('
Blazor') >= 0) {\n this.isBlazorTemplate = true;\n updateBlazorTemplate(this.element.id + 'content', 'Content', this);\n }\n }\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(document.querySelectorAll('[data-tooltip-id= ' + this.ctrlId + '_content]'));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n var isBlazorTooltipRendered = false;\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.contentTargetValue = target;\n this.contentEvent = e;\n this.contentAnimation = showAnimation;\n var args = { 'enableTooltip': 'true' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n isBlazorTooltipRendered = true;\n }\n else {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.beforeRenderBlazor(target, this);\n }\n if (!isBlazorTooltipRendered) {\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n else {\n if (this.isServerRender()) {\n addClass([this.tooltipEle], POPUP_OPEN);\n document.body.appendChild(this.tooltipEle);\n this.renderCloseIcon();\n this.renderPopup(target);\n }\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.afterRenderBlazor(target, e, showAnimation, this);\n }\n }\n }\n };\n ;\n Tooltip.prototype.contentUpdated = function (args) {\n if (isNullOrUndefined(this.tooltipEle)) {\n if (this.isServerRender()) {\n this.ctrlId = this.element.id;\n this.tooltipEle = document.querySelector('#' + this.ctrlId + '_content');\n if (this.tooltipEle) {\n this.tooltipEle.setAttribute('style', 'width:' + formatUnit(this.width) +\n ';height:' + formatUnit(this.height) + ';position:absolute;');\n this.beforeRenderBlazor(this.contentTargetValue, this);\n this.afterRenderBlazor(this.contentTargetValue, this.contentEvent, this.contentAnimation, this);\n this.contentTargetValue = this.contentEvent = this.contentAnimation = null;\n }\n }\n }\n };\n ;\n Tooltip.prototype.beforeRenderBlazor = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n if (!(this.isServerRender())) {\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n }\n document.body.appendChild(ctrlObj.tooltipEle);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.afterRenderBlazor = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // tslint:disable-next-line:no-any\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string'\n || (this.isServerRender()) && this.isBlazorTemplate;\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePos.horizontal, elePos.vertical);\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n var offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= (('TopBottom'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('TopBottom'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetY) : 0;\n offsetPos.left -= (('RightLeft'.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n ('RightLeft'.indexOf(newpos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * this.offsetX) : 0;\n elePos.position = newpos;\n elePos.left = pos.left + offsetPos.left;\n elePos.top = pos.top + offsetPos.top;\n }\n else {\n this.adjustArrow(target, newpos, elePos.horizontal, elePos.vertical);\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var left = fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: false }, eleOffset).left;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = this.tooltipEle.querySelector('.' + ARROW_TIP);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = left;\n return eleOffset;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.isServerRender()) {\n _this.blazorHide(hideAnimation, target);\n }\n else {\n _this.popupHide(hideAnimation, target);\n }\n }\n else {\n _this.isHidden = false;\n }\n });\n };\n /* istanbul ignore next */\n Tooltip.prototype.blazorHide = function (hideAnimation, target) {\n var proxy = this;\n var hide = function () {\n proxy.popupHide(hideAnimation, target);\n };\n if (this.popupObj) {\n this.popupHide(hideAnimation, target);\n }\n else {\n setTimeout(hide, 200);\n }\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.isServerRender() && this.tooltipEle) {\n this.tooltipEle.style.display = 'none';\n var args = { 'enableTooltip': 'false' };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n remove(this.tooltipEle);\n }\n else if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var pos = this.calculateTooltipOffset(this.position);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n * @private\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n * @private\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n * @hidden\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.add(this.element, 'mouseleave', this.onMouseOut, this);\n }\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n if (!this.isServerRender()) {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n * @hidden\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n if (this.isServerRender() && !this.isSticky) {\n EventHandler.remove(this.element, 'mouseleave', this.onMouseOut);\n }\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(this.element.querySelectorAll(this.target));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n if (!this.isServerRender()) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = document.querySelector('[data-tooltip-id= ' + this.ctrlId + '_content]');\n return target;\n };\n /**\n * Core method to return the component name.\n * @private\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n * @private\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n * @private\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n if (this.isServerRender()) {\n this.isBlazorTooltip = true;\n }\n this.renderContent();\n }\n else if (this.isServerRender()) {\n var args = { 'content': newProp.content };\n // tslint:disable\n this.interopAdaptor.invokeMethodAsync('OnTooltipServerCall', args);\n // tslint:enable\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = this.tooltipEle.querySelector('.' + ARROW_TIP_INNER);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n * @param element Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param animation Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @return {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n * @param animation Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @return {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n * @param target Target element where the Tooltip content or position needs to be refreshed.\n * @return {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @return {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n if (!this.isServerRender()) {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n }\n if (this.isServerRender() && this.tooltipEle) {\n var placeholder = document.querySelector('#' + this.ctrlId + '_content_placeholder');\n if (placeholder) {\n placeholder.appendChild(this.tooltipEle);\n }\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/* tslint:disable-next-line:max-line-length */\nimport { EventHandler, isNullOrUndefined, extend, classList, addClass, removeClass, Browser, getValue, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { parentsUntil, getUid, appendChildren, getDatePredicate, getObject, extendObjWithFn, eventPromise, setChecked } from '../base/util';\nimport { remove, debounce } from '@syncfusion/ej2-base';\nimport { DataUtil, Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { getForeignData } from '../base/util';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { getFilterMenuPostion, toogleCheckbox, createCboxWithWrap, removeAddCboxClasses, getColumnByForeignKeyValue } from '../base/util';\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n }\n /**\n * To destroy the filter bar.\n * @return {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n EventHandler.add(this.dialogObj.element.querySelector('.e-searchinput'), 'keyup', this.searchHandler, this);\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[i].field,\n predicate: 'or',\n matchCase: fpred[i].ignoreCase,\n ignoreAccent: fpred[i].ignoreAccent,\n operator: fpred[i].operator,\n value: fpred[i].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = '';\n this.refreshCheckboxes();\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n this.refreshCheckboxes();\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n }\n };\n /**\n * Gets the localized label by locale keyword.\n * @param {string} key\n * @return {string}\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[i];\n dataSource[i] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search')\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: events.filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrBegin, args);\n if (args.cancel) {\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: 'e-flat', content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this)\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n createSpinner({ target: this.spinner }, this.parent.createElement);\n showSpinner(this.spinner);\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj, this.parent);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n this.parent.notify(events.filterDialogCreated, e);\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // tslint:disable-next-line:no-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if (this.parent.isReact) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n this.parent.renderTemplates();\n }\n this.parent.notify(events.filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(events.filterDialogClose, {});\n }\n };\n /** @hidden */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n /* tslint:disable-next-line:max-line-length */\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if (e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) {\n var value = e.target.value;\n if (this.options.column.type === 'boolean') {\n if (value !== '' &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = true;\n }\n else if (value !== '' &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(value.toLowerCase()) !== -1) {\n value = false;\n }\n }\n var args = {\n action: 'filtering', filterCollection: {\n field: this.options.field,\n operator: this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') :\n (this.options.column.type === 'date' || this.options.column.type === 'datetime' ||\n this.options.column.type === 'boolean' ? 'equal' : 'contains'),\n value: value, matchCase: false, type: this.options.column.type\n },\n field: this.options.field\n };\n value !== undefined && value !== null && value !== '' ? this.isForeignColumn(this.options.column) ?\n this.foreignFilter(args, value) : this.options.handler(args) : this.closeDialog();\n }\n else {\n if (e.keyCode === 13) {\n this.fltrBtnHandler();\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n this.fltrBtnHandler();\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n };\n /** @hidden */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput = this.searchBox.querySelector('.e-searchinput');\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[i], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(events.fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n length = check.length - 1;\n val = this.values[parentsUntil(check[length], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n this.initiateFilter(coll);\n }\n else {\n this.clearFilter();\n }\n };\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[j].ejpredicate !== undefined ?\n predicate[fColl[j].predicate](fColl[j].ejpredicate) :\n predicate[fColl[j].predicate](fColl[j].field, fColl[j].operator, fColl[j].value, !fColl[j].matchCase, fColl[j].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if (this.options.type === 'date' || this.options.type === 'datetime') {\n parsed = this.valueFormatter.fromView(val, this.options.parserFn, this.options.type);\n }\n this.addDistinct(query);\n /* tslint:disable-next-line:max-line-length */\n var args = {\n requestType: events.filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n if (isBlazor() && !this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = {};\n }\n this.parent.trigger(events.actionBegin, args, function (filterargs) {\n filterargs.operator = (isBlazor() && filterargs.excelSearchOperator !== 'none') ?\n filterargs.excelSearchOperator : filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, parsed, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime') {\n operator = 'equal';\n if (isNullOrUndefined(parsed) && val.length) {\n return;\n }\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // tslint:disable-next-line:no-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(events.generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns) {\n var predicates = CheckBoxFilterBase.getPredicate(columns);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && this.parent.getColumnByField(prop).isForeignColumn()) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: events.filterChoiceRequest, query: query, filterChoiceCount: null\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.trigger(events.actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(events.dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[j].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(events.beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n /* tslint:disable-next-line:max-line-length */\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[i];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[i]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols);\n if (predicate) {\n query.where(predicate);\n }\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n this.sInput.focus();\n var args = {\n requestType: events.filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrComplete, args);\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.updateResult();\n this.createFilterItems(dataSource, isInitial, args);\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem) {\n var selectAll = elem.querySelector('.e-selectall');\n if (selectAll) {\n this.updateAllCBoxes(!selectAll.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n label.innerHTML = !isNullOrUndefined(value) && value.toString().length ? value :\n this.getLocalizedLabel('Blanks');\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('True') : this.getLocalizedLabel('False');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n if (isReactCompiler) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[i]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n var selectAll = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[uid] = getValue(key, data[i]);\n var value = getValue(this.options.field, data[i]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[i] };\n this.parent.notify(events.filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[uid]), getValue('dataObj', data[i]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: events.filterChoiceRequest, dataSource: this.renderEmpty ||\n (isBlazor() && this.parent.isServerRendered) ? [] : data };\n if (!isBlazor() || this.parent.isJsComponent) {\n var filterModel = 'filterModel';\n args[filterModel] = this;\n }\n this.parent.notify(events.cBoxFltrComplete, args);\n this.parent.notify(events.refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.result[value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[len];\n value = getObject(field, value); //local remote diff, check with mdu \n if (!(value in lookup)) {\n var obj = {};\n obj[ejValue] = value;\n lookup[value] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData)[0];\n setValue(events.foreignKeyData, foreignDataObj, json[len]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[len], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[i].field));\n if (collection.length !== 0) {\n pred[cols[i].field] = CheckBoxFilterBase.generatePredicate(collection);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols) {\n var len = cols ? cols.length : 0;\n var predicate;\n var first;\n var operate = 'or';\n first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime') {\n predicate = getDatePredicate(first, first.type);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[p] = CheckBoxFilterBase.updateDateFilter(cols[p]);\n if (len > 2 && p > 1 && cols[p].predicate === 'or') {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n predicate.predicates.push(getDatePredicate(cols[p], cols[p].type));\n }\n else {\n predicate.predicates.push(new Predicate(cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent));\n }\n }\n else {\n if (cols[p].type === 'date' || cols[p].type === 'datetime') {\n if (cols[p].predicate === 'and' && cols[p].operator === 'equal') {\n predicate = predicate[operate](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[p].predicate)](getDatePredicate(cols[p], cols[p].type), cols[p].type, cols[p].ignoreAccent);\n }\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n predicate = cols[p].ejpredicate ?\n predicate[cols[p].predicate](cols[p].ejpredicate) :\n predicate[(cols[p].predicate)](cols[p].field, cols[p].operator, cols[p].value, !CheckBoxFilterBase.getCaseValue(cols[p]), cols[p].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\nexport { CheckBoxFilterBase };\n","import { isNullOrUndefined, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { Query, DataManager, Predicate, Deferred, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { setFormatter, isGroupAdaptive, getColumnByForeignKeyValue, refreshFilteredColsUid } from '../base/util';\nimport * as events from '../base/constant';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { CheckBoxFilterBase } from '../common/checkbox-filter-base';\n/**\n * Grid data module is used to generate query and data source.\n * @hidden\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module.\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(events.rowsAdded, this.addRows, this);\n this.parent.on(events.rowPositionChanged, this.reorderRows, this);\n this.parent.on(events.rowsRemoved, this.removeRows, this);\n this.parent.on(events.dataSourceModified, this.initDataManager, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.parent.on(events.updateData, this.crudActions, this);\n this.parent.on(events.addDeleteAction, this.getData, this);\n this.parent.on(events.autoCol, this.refreshFilteredCols, this);\n this.parent.on(events.columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n * @return {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n * @return {Query}\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[i].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n this.groupQuery(query);\n return query;\n };\n /** @hidden */\n Data.prototype.aggregateQuery = function (query, isForeign) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[i];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[j];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[k].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var gObj = this.parent;\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i][fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(events.infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[i]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[i] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[i], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[i], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[i].field);\n if (col) {\n col.setSortDirection(columns[i].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[i].field });\n return query;\n }\n var fn = columns[i].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[i].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[i].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[i].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[i].direction === 'string') {\n query.sortBy(sortGrp[i].field, sortGrp[i].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[i].field);\n query.sortByForeignKey(sortGrp[i].field, sortGrp[i].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[i]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[i], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime')) {\n col.type = gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n if (gObj.filterSettings.type === 'FilterBar' || gObj.filterSettings.type === 'Menu') {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[i].uid = defaultFltrCols[i].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[i].field).uid;\n }\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(events.showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(events.generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @return {Promise}\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[promise] = crud;\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n if (isBlazor()) {\n return crud.then(function (result) {\n return _this.insert(query, args);\n }).catch(function (e) {\n return null;\n });\n }\n else {\n return crud.then(function (result) {\n return _this.insert(query, args);\n });\n }\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(events.recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function (e) {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var gObj = this.parent;\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n if (isBlazor() && this.parent.isServerRendered) {\n this.parent.notify('offset', args);\n }\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[pr] = promise ? promise : args[pr];\n this.parent.notify(events.crudAction, args);\n };\n /** @hidden */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var state = void 0;\n state = this.getStateEventArgument(query);\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(events.dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var data = 'data';\n if (isBlazor() && this.parent.isServerRendered) {\n for (var i = 0; i < changes[changedRecords].length; i++) {\n var args = { data: changes[changedRecords][i] };\n this.parent.notify('offset', args);\n changes[changedRecords][i] = args[data];\n }\n for (var i = 0; i < changes[addedRecords].length; i++) {\n var args = { data: changes[addedRecords][i] };\n this.parent.notify('offset', args);\n changes[addedRecords][i] = args[data];\n }\n }\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /** @hidden */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value, index) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.rowsAdded, this.addRows);\n this.parent.off(events.rowsRemoved, this.removeRows);\n this.parent.off(events.dataSourceModified, this.initDataManager);\n this.parent.off(events.destroy, this.destroy);\n this.parent.off(events.updateData, this.crudActions);\n this.parent.off(events.addDeleteAction, this.getData);\n this.parent.off(events.autoCol, this.refreshFilteredCols);\n this.parent.off(events.columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var state;\n var dataArgs = args;\n state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(events.dataSourceChanged, editArgs_1);\n deff.promise.then(function (e) {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(events.recordAdded, editArgs_1);\n }\n _this.parent.trigger(events.dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(events.dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n * @return {string[]}\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\nexport { Data };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Row\n * @hidden\n */\nvar Row = /** @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n * @param {Object} data - To update new data for the particular row.\n * @return {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @return {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\nexport { Row };\n","import { merge } from '@syncfusion/ej2-base';\n/**\n * Cell\n * @hidden\n */\nvar Cell = /** @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\nexport { Cell };\n","import { isNullOrUndefined, attributes } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject } from '../base/util';\nimport { CellType } from '../base/enum';\n/**\n * `CellMergeRender` module.\n * @hidden\n */\nvar CellMergeRender = /** @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n var colSpan = row.cells[i].cellSpan ? row.cells[i].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !this.parent.getRowsObject()[row.index - 1].isDataRow ? this.parent.getRowsObject()[row.index].cells :\n this.parent.getRowsObject()[row.index - 1].cells;\n var targetCell_1 = row.cells[i];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[j].visible === false) {\n visible++;\n }\n else {\n row.cells[j].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[j].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[i].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[i].spanText;\n td = cellRenderer.render(row.cells[i], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[i].isRowSpanned = true;\n row.cells[i].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[i].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[i].isSpanned = true;\n row.cells[i].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[i].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[i].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[key];\n var merge = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge[0]].toString() === merge[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\nexport { CellMergeRender };\n","import { isNullOrUndefined, extend, addClass } from '@syncfusion/ej2-base';\nimport { attributes as addAttributes } from '@syncfusion/ej2-base';\nimport { rowDataBound, queryCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, getObject, extendObjWithFn } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { CellMergeRender } from './cell-merge-renderer';\n/**\n * RowRenderer class which responsible for building row content.\n * @hidden\n */\nvar RowRenderer = /** @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /**\n * Function to render the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n RowRenderer.prototype.render = function (row, columns, attributes, rowTemplate, cloneNode) {\n return this.refreshRow(row, columns, attributes, rowTemplate, cloneNode);\n };\n /**\n * Function to refresh the row content based on Column[] and data.\n * @param {Column[]} columns\n * @param {Object} data?\n * @param {{[x:string]:Object}} attributes?\n * @param {string} rowTemplate?\n */\n RowRenderer.prototype.refresh = function (row, columns, isChanged, attributes, rowTemplate) {\n if (isChanged) {\n row.data = extendObjWithFn({}, row.changes);\n this.refreshMergeCells(row);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row.uid + ']');\n var tr = this.refreshRow(row, columns, attributes, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n node.innerHTML = '';\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row, columns, attributes, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row.data };\n var cellArgs = { data: row.data };\n var attrCopy = extend({}, attributes, {});\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n if (row.isDataRow) {\n row.isSelected = this.parent.getSelectedRowIndexes().indexOf(row.index) > -1 || value;\n }\n if (row.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row.isSelected = true;\n if (this.parent.getSelectedRowIndexes().indexOf(row.index) === -1) {\n this.parent.getSelectedRowIndexes().push(row.index);\n }\n }\n this.buildAttributeFromRow(tr, row);\n addAttributes(tr, attrCopy);\n setStyleAndAttributes(tr, row.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_1 = function (i, len) {\n var cell = row.cells[i];\n cell.isSelected = row.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[i].cellType || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' };\n if (row.isExpand && row.cells[i].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row.cells[i], row.data, attrs, row.isExpand, isEdit);\n if (row.cells[i].cellType !== CellType.Filter) {\n if (row.cells[i].cellType === CellType.Data || row.cells[i].cellType === CellType.CommandColumn) {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row.cells[i].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n var isRowSpanned = false;\n if (row.index > 0 && this_1.isSpan) {\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !this_1.parent.getRowsObject()[row.index - 1].isDataRow ?\n this_1.parent.getRowsObject()[row.index].cells : this_1.parent.getRowsObject()[row.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row.cells[i].column[uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row.cells[i].cellSpan > 1 || cellArgs.rowSpan > 1 || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row, i, td);\n }\n }\n if (!row.cells[i].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row.cells.length; i < len; i++) {\n _loop_1(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row.isDataRow) {\n this.parent.trigger(rowDataBound, extend(rowArgs, args));\n if (this.parent.childGrid || this.parent.isRowDragable() || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row.cssClass) {\n tr.classList.add(row.cssClass);\n }\n if (row.lazyLoadCssClass) {\n tr.classList.add(row.lazyLoadCssClass);\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.element.scrollHeight > this.parent.height && this.parent.aggregates.length) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[i][property][column][0].footerTemplate) {\n var summarycell = tr.querySelectorAll('.e-summarycell');\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row) {\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row;\n };\n /**\n * Function to check and add alternative row css class.\n * @param {Element} tr\n * @param {{[x:string]:Object}} attr\n */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row) {\n var attr = {};\n var prop = { 'rowindex': 'aria-rowindex', 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row.isDataRow) {\n classes.push('e-row');\n }\n if (row.isAltRow) {\n classes.push('e-altrow');\n }\n if (!isNullOrUndefined(row.index)) {\n attr[prop.rowindex] = row.index;\n }\n if (row.rowSpan) {\n attr.rowSpan = row.rowSpan;\n }\n if (row.uid) {\n attr[prop.dataUID] = row.uid;\n }\n if (row.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\nexport { RowRenderer };\n","import { isNullOrUndefined, getValue, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { Row } from '../models/row';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\nimport { getUid } from '../base/util';\nimport { getForeignData } from '../../grid/base/util';\nimport * as events from '../base/constant';\n/**\n * RowModelGenerator is used to generate grid data rows.\n * @hidden\n */\nvar RowModelGenerator = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[i] = this.generateRow(data[i], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n var isServerRendered = 'isServerRendered';\n options.uid = isBlazor() && this.parent[isServerRendered] ? this.parent.getRowUid('grid-row') : getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[index]) {\n options.isExpand = this.parent.expandedRows[index].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization && this.parent.selectionModule.checkBoxState) {\n options.isSelected = this.parent.selectionModule.checkBoxState;\n if (options.isSelected && this.parent.selectionModule.selectedRowIndexes.indexOf(index) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(index);\n }\n }\n else {\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n }\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = isBlazor() ? new Row(options) :\n new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[i].field, getForeignData(foreignKeyColumns[i], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[i], options.uid, isNullOrUndefined(dummies[i].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[i]);\n input[i].cells = this.generateCells(input[i]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? args.startIndex : 0;\n };\n return RowModelGenerator;\n}());\nexport { RowModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { Column } from '../models/column';\nimport { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { calculateAggregate, getUid } from '../base/util';\nimport { CellType } from '../base/enum';\nimport { Cell } from '../models/cell';\n/**\n * Summary row model generator\n * @hidden\n */\nvar SummaryModelGenerator = /** @class */ (function () {\n /**\n * Constructor for Summary row model generator\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[i].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid) || (this.parent.isRowDragable() && !start)) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[i], data[i], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel(raw);\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = this.parent.getIndentCount();\n if (this.parent.isRowDragable()) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[i], summaryRow, i >= indentLength ? this.getCellType() :\n i < this.parent.groupSettings.columns.length ? CellType.Indent : CellType.DetailFooterIntent, indents[i], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n if (isBlazor() && this.parent.isServerRendered && !isNullOrUndefined(parentUid)) {\n row.uid = this.parent.getRowUid('grid-row');\n }\n else {\n row.uid = getUid('grid-row');\n }\n row.parentUid = parentUid;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n var key = '';\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[i].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[j], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function (data) {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[i].toLowerCase();\n var disp = column.columnName;\n var val = types[i] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[key] :\n calculateAggregate(types[i], group.aggregates ? group : data, column, this.parent);\n single[disp] = single[disp] || {};\n single[disp][key] = val;\n single[disp][types[i]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[disp].field = group.field;\n single[disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nexport { SummaryModelGenerator };\nvar GroupSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { GroupSummaryModelGenerator };\nvar CaptionSummaryModelGenerator = /** @class */ (function (_super) {\n __extends(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\nexport { CaptionSummaryModelGenerator };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { Row } from '../models/row';\nimport { isNullOrUndefined, extend, setValue, isBlazor } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupSummaryModelGenerator, CaptionSummaryModelGenerator } from '../services/summary-model-generator';\nimport { getForeignData, getUid } from '../../grid/base/util';\n/**\n * GroupModelGenerator is used to generate group caption rows and data rows.\n * @hidden\n */\nvar GroupModelGenerator = /** @class */ (function (_super) {\n __extends(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.getGroupedRecords(0, data[i], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var isRenderCaption = this.isInfiniteScroll && this.prevKey === data.key;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[j], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (!isRenderCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[i].isCaptionRow) {\n this.rows[i].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[i].isCaptionRow && !this.rows[i].isDataRow) {\n break;\n }\n }\n }\n }\n this.prevKey = data.key;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here. \n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /** @hidden */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var tmp = [];\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[records]) ? data.items[records].length : data.items.length;\n options.uid = isBlazor() && this.parent.isServerRendered ? this.parent.getRowUid('grid-row') : getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /** @hidden */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[i] = this.generateRow(data[i], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[i].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[i].isDataRow) {\n input[i].cells = this.generateCells(input[i]);\n for (var j = 0; j < input[i].indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(input[i].indent) === -1) {\n continue;\n }\n input[i].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[i].data, input[i].indent);\n input[i].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[i];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[j];\n if (row.uid === childRow.parentUid) {\n this.rows[j].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\nexport { GroupModelGenerator };\n","import { Droppable, isBlazor, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, remove, updateBlazorTemplate, removeClass } from '@syncfusion/ej2-base';\nimport { getUpdateUsingRaf, appendChildren } from '../base/util';\nimport * as events from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowRenderer } from './row-renderer';\nimport { CellMergeRender } from './cell-merge-renderer';\nimport { RowModelGenerator } from '../services/row-model-generator';\nimport { GroupModelGenerator } from '../services/group-model-generator';\nimport { getScrollBarWidth, isGroupAdaptive } from '../base/util';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar ContentRender = /** @class */ (function () {\n /**\n * Constructor for content renderer module\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(events.columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n this.mutableData = false;\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && _this.parent.enableVirtualization) {\n var mContentRows = [].slice.call(_this.parent.getMovableVirtualContent().querySelectorAll('.e-row'));\n var fContentRows = [].slice.call(_this.parent.getFrozenVirtualContent().querySelectorAll('.e-row'));\n _this.isLoaded = !mContentRows ? false : mContentRows.length === fContentRows.length;\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().querySelectorAll('.e-row'));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().querySelectorAll('.e-row'));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.e-content'), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(events.contentReady, { rows: rows, args: arg });\n if (_this.isLoaded) {\n _this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.mutableData = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(events.beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(events.destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.e-gridcontent');\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.e-content'), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: 'e-gridcontent' });\n var innerDiv = this.parent.createElement('div', {\n className: 'e-content'\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)\n && (!isBlazor() || (isBlazor() && !this.parent.isServerRendered))) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.e-table'));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n * @return {Element}\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (!isBlazor()) {\n if (this.getTable()) {\n remove(this.getTable());\n }\n }\n var table = innerDiv.querySelector('.e-table') ? innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector('colgroup').cloneNode(true));\n table.appendChild(this.getColGroup());\n table.appendChild(this.parent.createElement('tbody'));\n innerDiv.appendChild(table);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n * @return {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement('tbody') : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement('tbody') : document.createDocumentFragment();\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n this.rowElements = [];\n this.rows = [];\n var fCont = this.getPanel().querySelector('.e-frozencontent');\n var mCont = this.getPanel().querySelector('.e-movablecontent');\n var cont = this.getPanel().querySelector('.e-content');\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n var isServerRendered = 'isServerRendered';\n if (isBlazor() && this.parent[isServerRendered]) {\n modelData = this.generator.generateRows(dataSource, args);\n if (this.parent.enableVirtualization) {\n this.prevInfo = this.prevInfo ? this.prevInfo : args.virtualInfo;\n this.prevInfo = args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== args.virtualInfo.page ? this.currentInfo : args.virtualInfo;\n }\n this.rows = modelData;\n this.freezeRows = modelData;\n this.rowElements = [].slice.call(this.getTable().querySelectorAll('tr.e-row[data-uid]'));\n if (frzCols) {\n this.movableRows = modelData.map(function (mRow) {\n var sRow = new Row(mRow);\n sRow.cells = mRow.cells.slice(frzCols, mRow.cells.length);\n mRow.cells = mRow.cells.slice(0, frzCols);\n return sRow;\n });\n this.freezeRowElements = this.rowElements;\n }\n this.isLoaded = true;\n this.parent.hideSpinner();\n args.isFrozen = this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n var arg = extend({ rows: this.rows }, args);\n if (this.getTable().querySelector('.e-emptyrow')) {\n remove(this.getTable().querySelector('.e-emptyrow'));\n if (!isNullOrUndefined(this.getTable().querySelectorAll('.e-table > tbody')[1])) {\n remove(this.getTable().querySelectorAll('.e-table > tbody')[1]);\n }\n }\n this.parent.notify('contentcolgroup', {});\n this.rafCallback(arg)();\n if (frzCols) {\n cont.style.overflowY = 'hidden';\n fCont.style.height = ((mCont.offsetHeight) - getScrollBarWidth()) + 'px';\n mCont.style.overflowY = this.parent.height !== 'auto' ? 'scroll' : 'auto';\n fCont.style.borderRightWidth = '1px';\n this.parent.notify(events.contentReady, { rows: this.movableRows, args: extend({}, arg, { isFrozen: false }) });\n }\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection && !this.parent.enableVirtualization)) {\n var rowIndex = 'editRowIndex';\n if (this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(args[rowIndex])) {\n this.parent.selectRow(args[rowIndex]);\n }\n }\n if (this.parent.enableVirtualization && !this.parent.getHeaderContent().querySelectorAll('.e-check').length) {\n var removeClassByUid = this.parent.getRows().filter(function (x) { return x.getAttribute('aria-selected'); })\n .map(function (y) { return y.getAttribute('data-uid'); });\n var addClassByUid = this.parent.getRows().filter(function (x) { return x.getAttribute('aria-selected') === null; })\n .map(function (y) { return y.getAttribute('data-uid'); });\n for (var i = 0; i < removeClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(removeClassByUid[i])) &&\n !this.parent.getRowObjectFromUID(removeClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(removeClassByUid[i]).removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check'))) {\n removeClass([this.parent.getRowElementByUID(removeClassByUid[i]).querySelector('.e-check')], ['e-check']);\n }\n for (var j = 0; j < this.parent.getRowElementByUID(removeClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(removeClassByUid[i])\n .children[j].classList.remove('e-selectionbackground', 'e-active');\n }\n }\n }\n for (var i = 0; i < addClassByUid.length; i++) {\n if (!isNullOrUndefined(this.parent.getRowObjectFromUID(addClassByUid[i]))\n && this.parent.getRowObjectFromUID(addClassByUid[i]).isSelected) {\n this.parent.getRowElementByUID(addClassByUid[i]).setAttribute('aria-selected', 'true');\n if (!isNullOrUndefined(this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame'))) {\n addClass([this.parent.getRowElementByUID(addClassByUid[i]).querySelector('.e-frame')], ['e-check']);\n }\n for (var j = 0; j < this.parent.getRowElementByUID(addClassByUid[i]).children.length; j++) {\n this.parent.getRowElementByUID(addClassByUid[i])\n .children[j].classList.add('e-selectionbackground', 'e-active');\n }\n }\n }\n }\n return;\n }\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(events.setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === 'Left-Right' && tableName === 'frozen-right';\n /* tslint:disable:no-any */\n if (args.requestType !== 'infiniteScroll' && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* tslint:enable:no-any */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if (this.parent.isReact && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n this.parent.destroyTemplate(['columnTemplate', 'rowTemplate', 'detailTemplate', 'captionTemplate', 'commandsTemplate']);\n this.parent.renderTemplates();\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector('tbody');\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[m]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m * bSize);\n break;\n }\n else {\n args.virtualInfo.blockIndexes = m === 0 || m === 1 ? [1, 2] : [m, m + 1];\n startIndex = m === 0 || m === 1 ? 0 : (m) * bSize;\n break;\n }\n }\n }\n if (scrollTop + this.contentPanel.firstElementChild.offsetHeight ===\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[i].cells.splice(0, this.parent.getFrozenColumns());\n tr = row.render(mhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row, args, dataSource, columns);\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n this.rows.push(modelData[i]);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.setRowsInLazyGroup(modelData[i], i);\n if (isNullOrUndefined(modelData[i].indent)) {\n continue;\n }\n }\n this.setInfiniteVisibleRows(args, modelData[i], tableName);\n if (isGroupAdaptive(gObj) && this.rows.length >= (gObj.pageSettings.pageSize) && blockLoad) {\n break;\n }\n if (!gObj.rowTemplate) {\n tr = row.render(modelData[i], columns);\n var isVFreorder = this.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[i].isExpand) {\n gObj.notify(events.expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[i]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n gObj.renderTemplates();\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[i]), gObj, 'rowTemplate', rowTemplateID);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[j].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[j].querySelectorAll && elements[j].querySelectorAll('tr').length)) {\n tr = isTR ? elements[j] : elements[j].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[i].data, row: trElement ? trElement : tr };\n this.parent.trigger(events.rowDataBound, arg);\n }\n if (modelData[i].isDataRow) {\n this.rowElements.push(tr);\n }\n this.ariaService.setOptions(this.getTable(), { colcount: gObj.getColumns().length.toString() });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector('tbody');\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n if (!isBlazor() || this.parent.isJsComponent) {\n args.rows = this.rows.slice(0);\n }\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(events.beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(tbdy);\n tbdy = _this.parent.createElement('tbody');\n }\n else {\n remove(_this.tbody);\n _this.tbody = _this.parent.createElement('tbody');\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector('tbody');\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector('tbody'), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector('tbody'), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(events.removeInfiniteRows, { args: args });\n _this.parent.notify(events.appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== 'Left-Right'\n && (tableName === 'frozen-left' || tableName === 'frozen-right'))\n || (gObj.getFrozenMode() === 'Left-Right'\n && (tableName === 'frozen-left' || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n ContentRender.prototype.appendContent = function (tbody, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody.appendChild(frag);\n this.getTable().appendChild(tbody);\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.contentModule.maintainRows(row, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(events.setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings.currentPage][index].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][index];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length &&\n (args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && this.parent.contentModule.getGroupCache()[this.parent.pageSettings.currentPage]) {\n this.useGroupCache = true;\n return this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === 'frozen-left' || (this.parent.getFrozenMode() === 'Right' && tableName === 'frozen-right')) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute('aria-rowindex'), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute('aria-rowindex'), 10);\n var last = Math.ceil(index / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i][idx]\n : data.concat(this.infiniteCache[i][idx]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][idx].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[i] : data.concat(this.infiniteCache[i]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row.render(fhdrData[i], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[i]]) : rows.concat(this.infiniteCache[keys[i]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n * @return {Element}\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n * @param {Element} panel\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n * @return {Element}\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n * @param {Element} table\n */\n ContentRender.prototype.setTable = function (table) {\n this.contentTable = table;\n };\n /**\n * Get the Row collection in the Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n * @returns {Row[] | HTMLCollectionOf}\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n * @return {Element}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {Element}\n */\n ContentRender.prototype.setColGroup = function (colGroup) {\n if (!isNullOrUndefined(colGroup)) {\n colGroup.id = 'content-' + colGroup.id;\n }\n return this.colgroup = colGroup;\n };\n /**\n * Function to hide content table column based on visible property\n * @param {Column[]} columns?\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n if (isBlazor() && gObj.isServerRendered) {\n this.parent.notify('setvisibility', columns);\n }\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === 'Left-Right') {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row = void 0; i < rowLen; i++) {\n cellLen = mRows[i].cells.length;\n var rightLen = rightRows.length ? rightRows[i].cells.length : 0;\n row = fRows[i].clone();\n for (var j = 0; j < cellLen; j++) {\n row.cells.push(mRows[i].cells[j]);\n }\n for (var k = 0; k < rightLen; k++) {\n row.cells.push(rightRows[i].cells[k]);\n }\n rows.push(row);\n }\n }\n else {\n rows = this.getRows();\n }\n var element;\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var tasks = [];\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row) { return !row.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === 'frozen-right') {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('colgroup');\n setStyleAttribute(colG.childNodes[idx], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('colgroup');\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[idx], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[idx], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(events.partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(events.partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(events.partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n var trs = Object.keys(tr);\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[i]].querySelectorAll('td.e-rowcell')[idx];\n if (tr[trs[i]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[i]].querySelectorAll('td.e-rowcell')[idx], { 'display': displayVal });\n if (tr[trs[i]].querySelectorAll('td.e-rowcell')[idx].classList.contains('e-hide')) {\n removeClass([tr[trs[i]].querySelectorAll('td.e-rowcell')[idx]], ['e-hide']);\n }\n if (this.parent.isRowDragable()) {\n var index = this.parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[i]].cells[index].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[i]].cells[idx].visible = displayVal === '' ? true : false;\n }\n }\n }\n this.parent.notify(events.infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup = this.parent.getMovableVirtualHeader().querySelector('colgroup').cloneNode(true);\n }\n else {\n colGroup = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup, this.getColGroup());\n this.setColGroup(colGroup);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return isBlazor() ? this.parent.getHeaderTable().querySelector('colgroup').cloneNode(true) :\n this.parent.element.querySelector('.e-gridheader').querySelector('colgroup').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row) || //(1)\n isNullOrUndefined(column.visible) || //(2) \n row.cells[index].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody) {\n if (isBlazor() && !this.parent.isJsComponent && this.parent.frozenRows) {\n return;\n }\n this.getTable().appendChild(tbody);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('tbody').innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(events.setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[i].isSelected = set;\n }\n }\n var row = this.getRows().filter(function (row) { return clearAll || uid === row.uid; });\n for (var j = 0; j < row.length; j++) {\n row[j].isSelected = set;\n var cells = row[j].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[k].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getDataRows()[index];\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[idx].getAttribute('aria-rowindex'), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return this.parent.getMovableDataRows()[index];\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /** @hidden */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody = gObj.createElement('tbody');\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector('tbody').children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[i][key]] = oldKeys[this.prevCurrentView[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[i][key]] = i;\n newIndexes[i] = dataSource[i][key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[i].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[i].uid] = trs[i];\n oldKeys[this.prevCurrentView[i][key]] = i;\n oldIndexes[i] = this.prevCurrentView[i][key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[i][key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.mutableData) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[i], dataSource[i]);\n }\n var tr = oldRowElements[oldRowObjs[oldIndex].uid];\n newRowObjs.push(oldRowObjs[oldIndex]);\n if (this.rowElements[i] && this.rowElements[i].getAttribute('data-uid') === newRowObjs[i].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!hasBatch && (isEqual || this.prevCurrentView[i] === dataSource[i])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n tbody.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[i]]))\n || (!this.mutableData && dataSource[i] !== this.prevCurrentView[oldIndex])\n || (this.mutableData && !isEqual)) {\n oldRowObjs[oldIndex].setRowValue(dataSource[i]);\n }\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n else {\n var row = new RowRenderer(this.serviceLocator, null, gObj);\n var modelData = this.generator.generateRows([dataSource[i]]);\n newRowObjs.push(modelData[0]);\n var tr = row.render(modelData[0], gObj.getColumns());\n tbody.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[i]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody.children);\n remove(this.getTable().querySelector('tbody'));\n this.getTable().appendChild(tbody);\n this.parent.trigger(events.dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(events.freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[i]] !== next[keys[i]]) {\n isEqual = false;\n break;\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords = [];\n var addedRecords = [];\n if (Object.keys(changes).length) {\n changedRecords = changes.changedRecords;\n addedRecords = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(events.immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords.length);\n }\n }\n }\n for (var i = 0; i < changedRecords.length; i++) {\n keys[changedRecords[i][primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row) {\n row.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n row.isAltRow ? tr.classList.add('e-altrow') : tr.classList.remove('e-altrow');\n row.index = index;\n row.edit = undefined;\n row.isDirty = false;\n tr.setAttribute('aria-rowindex', index.toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[i].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\nexport { ContentRender };\n","import { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, closest as getClosest, remove, isBlazor } from '@syncfusion/ej2-base';\nimport { classList } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { RowRenderer } from './row-renderer';\nimport { Cell } from '../models/cell';\nimport { Row } from '../models/row';\nimport * as events from '../base/constant';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { parentsUntil, wrap, measureColumnDepth, appendChildren } from '../base/util';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar HeaderRender = /** @class */ (function () {\n /**\n * Constructor for header renderer module\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.querySelectorAll('.e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var result = void 0;\n var colIndex = gObj.getColumnIndexByField(col.field);\n result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(events.columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n if (isBlazor()) {\n e.bindEvents(e.dragElement);\n }\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest = getClosest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest || closest.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(events.columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(events.columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest = getClosest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest && closest.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(events.headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(events.columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(events.columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(events.initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(events.uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.e-gridheader');\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.e-headercontent') :\n this.parent.createElement('div', { className: 'e-headercontent' });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header table\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.e-table'));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n * @return {Element}\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n * @param {Element} panel\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n * @return {Element}\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n * @param {Element} table\n */\n HeaderRender.prototype.setTable = function (table) {\n this.headerTable = table;\n };\n /**\n * Get the header colgroup element\n * @returns {Element}\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n * @param {Element} colgroup\n * @returns {Element}\n */\n HeaderRender.prototype.setColGroup = function (colGroup) {\n return this.colgroup = colGroup;\n };\n /**\n * Get the header row element collection.\n * @return {Element[]}\n */\n HeaderRender.prototype.getRows = function () {\n var table = this.getTable();\n return table.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n * @return {Element}\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var skipDom = isBlazor() && this.parent.frozenRows !== 0;\n var table = this.createTable();\n var innerDiv = this.getPanel().querySelector('.e-headercontent');\n if (!skipDom) {\n innerDiv.appendChild(table);\n }\n return innerDiv;\n };\n /**\n * @hidden\n */\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var skipDom = isBlazor() && this.parent.frozenRows !== 0;\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (!(isBlazor() && !gObj.isJsComponent) && this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var columns = gObj.getColumns();\n var innerDiv = this.getPanel().querySelector('.e-headercontent');\n var table = skipDom ? tableEle || innerDiv.querySelector('.e-table') :\n this.parent.createElement('table', { className: 'e-table', attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody = this.parent.createElement('tbody', { className: this.parent.frozenRows ? '' : 'e-hide' });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup = this.parent.createElement('colgroup');\n var rowBody = this.parent.createElement('tr');\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, this.parent);\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[i].cells.length; j < len_1; j++) {\n var cell = rows[i].cells[j];\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table.classList.add('e-sortfilter');\n }\n this.updateColGroup(colGroup);\n if (!skipDom) {\n tbody.appendChild(rowBody);\n }\n table.appendChild(this.setColGroup(colGroup));\n table.appendChild(thead);\n if (!skipDom) {\n table.appendChild(tbody);\n }\n table.appendChild(this.caption);\n this.ariaService.setOptions(table, { colcount: gObj.getColumns().length.toString() });\n return table;\n };\n /**\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead');\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader' });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[i] = this.generateRow(i);\n rows[i].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[index]) {\n var colFreezeMode = rows[0].cells[index].column.getFreezeTableName();\n if (colFreezeMode === 'movable' || (frozenMode === 'Left-Right' && colFreezeMode === 'frozen-right')) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === 'frozen-left') {\n rows[0].cells[0].column.freeze = colFreezeMode === 'frozen-left' ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === 'frozen-right') {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[i], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup.id = this.parent.element.id + 'colGroup';\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[i].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup.appendChild(col);\n }\n return colGroup;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[i].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(events.detailIndentCellInfo, args);\n rows[i].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[i].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var column;\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[i], rows, 0, i === 0, false, i === (len - 1), thead, tableName);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName) {\n var lastCol = isLastCol ? 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[index].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[index].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen)\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n var isFirstCol_1 = this.isFirstCol = cols.columns[i].visible && !this.isFirstCol && len !== 1;\n var isLaststackedCol = i === (len - 1);\n rows = this.appendCells(cols.columns[i], rows, index + 1, isFirstObj, isFirstCol_1, isLaststackedCol && isLastCol, isMovable, tableName);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n isTrue = this.ensureStackedFrozen(columns[i].columns, tableName, isTrue);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[i], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[i].columns) {\n count = this.getFrozenColSpan(columns[i].columns, tableName, count);\n }\n else if (columns[i].getFreezeTableName() === tableName) {\n count++;\n }\n }\n return count;\n };\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n * @param {Column[]} columns?\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = [].slice.call(this.getRows()); //NodeList -> Array \n var displayVal;\n var idx;\n var className;\n var element;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[c];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(this.getTable().querySelector('colgroup').children[idx], { 'display': displayVal });\n setStyleAttribute(this.getTable().querySelectorAll('th')[idx], { 'display': displayVal });\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('colgroup');\n var mTbl = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('table');\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n if (isBlazor() && gObj.isServerRendered) {\n setStyleAttribute(mTbl.querySelectorAll('th')[idx - frzCols], { 'display': displayVal });\n }\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[idx], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n if (isBlazor() && this.parent.isServerRendered && this.parent.frozenRows && this.parent.getFrozenColumns()) {\n this.freezeReorder = true;\n }\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var setFrozenTable = isBlazor() && this.parent.isServerRendered && this.parent.frozenRows !== 0 && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table')\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (setFrozenTable && !isVFTable) {\n table = this.freezeReorder ? this.headerPanel.querySelector('.e-movableheader').querySelector('.e-table') :\n this.headerPanel.querySelector('.e-frozenheader').querySelector('.e-table');\n }\n if (table) {\n if (isBlazor() && this.parent.isServerRendered) {\n table.removeChild(table.querySelector('colgroup'));\n table.removeChild(table.querySelector('thead'));\n }\n else {\n remove(table);\n table.removeChild(table.firstChild);\n table.removeChild(table.childNodes[0]);\n }\n var colGroup = this.parent.createElement('colgroup');\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table.insertBefore(findHeaderRow.thead, table.firstChild);\n this.updateColGroup(colGroup);\n table.insertBefore(this.setColGroup(colGroup), table.firstChild);\n if (!isVFTable && !setFrozenTable) {\n this.setTable(table);\n }\n if (!(isBlazor() && this.parent.isServerRendered)) {\n this.appendContent(table);\n }\n this.parent.notify(events.colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var gCells = [].slice.call(row.querySelectorAll('.e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n if (!frzCols) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n }\n if (this.parent.enableColumnVirtualization && parentsUntil(table, 'e-movableheader')) {\n this.parent.notify(events.headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table) {\n this.getPanel().querySelector('.e-headercontent').appendChild(table);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[i], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n var drop = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar && (gObj.allowSorting || gObj.allowFiltering)) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({});\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.e-gridheader'));\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\nexport { HeaderRender };\n","import { remove } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend, isBlazor, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { doesImplementInterface, setStyleAndAttributes, appendChildren, extendObjWithFn } from '../base/util';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { foreignKeyData } from '../base/constant';\nimport { CellType } from '../base/enum';\n/**\n * CellRenderer class which responsible for building cell content.\n * @hidden\n */\nvar CellRenderer = /** @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: 'e-rowcell', attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox' } });\n }\n /**\n * Function to return the wrapper for the TD content\n * @returns string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n * @param {Column} column\n * @param {Object} value\n * @param {Object} data\n */\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string';\n var literals = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n var index = 'index';\n if (isBlazor() && isEdit) {\n var rNumber = this.parent.editSettings.mode !== 'Batch' ? parseInt(attributes[index], 10) : null;\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str], rNumber);\n window[templateID] = null;\n if (this.parent.editSettings.mode !== 'Batch') {\n updateBlazorTemplate(templateID, 'Template', cell.column, false);\n }\n }\n else {\n if (isReactCompiler) {\n var copied = { 'index': attributes[literals[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[str], null, node);\n this.parent.renderTemplates();\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes[literals[0]] }, dummyData), this.parent, 'template', templateID, this.parent[str]);\n }\n }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + ' is template cell' + ' column header ' +\n cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n * @param {Column} column\n * @param {Object} value\n * @param {Object} data\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n CellRenderer.prototype.render = function (cell, data, attributes, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {{[x:string]:Object}} attributes?\n * @param {Element}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n td.innerHTML = '';\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes, isEdit);\n this.cloneAttributes(newTD, td);\n parentRow.cells.length !== cellIndex - 1 ? parentRow.insertBefore(newTD, parentRow.cells[cellIndex])\n : parentRow.appendChild(newTD);\n }\n else {\n var node = this.refreshCell(cell, data, attributes, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // tslint:disable-next-line:no-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // tslint:disable-next-line:no-any\n var attrs = source.attributes;\n // tslint:disable-next-line:no-any\n var i = attrs.length;\n // tslint:disable-next-line:no-any\n var attr;\n while (i--) {\n attr = attrs[i];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + ' column header ' + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, innerHtml, column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add('e-gridchkbox');\n node.setAttribute('aria-label', 'checkbox');\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n checkWrap.classList.add('e-checkbox-disabled');\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + ' column header ' + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns Element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[property] = innerHtml;\n return node;\n };\n /**\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': 'aria-colindex' };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\nexport { CellRenderer };\n","/**\n * AriaService\n * @hidden\n */\nvar AriaService = /** @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[i]], options[props[i]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\nexport { AriaService };\n/**\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove) {\n if (remove && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, extend, isBlazor } from '@syncfusion/ej2-base';\nimport { attributes } from '@syncfusion/ej2-base';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\nimport { AriaService } from '../services/aria-service';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\nimport { headerCellInfo } from '../base/constant';\n/**\n * HeaderCellRenderer class which responsible for building header cell content.\n * @hidden\n */\nvar HeaderCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { role: 'columnheader', tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons' });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox' } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n * @returns string\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\n HeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n * @param {Cell} cell\n * @param {Element} node\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter' });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = value;\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid,\n });\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[count].field === column.field || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[count].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (column.allowSorting) {\n ariaAttr.sort = 'none';\n }\n if (column.allowGrouping) {\n ariaAttr.grabbed = false;\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = isBlazor() ? column.toJSON() : column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n if (isReactCompiler) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[str]);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu' }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[j].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n * @param {Element} node\n * @param {string|Element} innerHtml\n * @returns Element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\nexport { HeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { headerCellInfo } from '../base/constant';\nimport { setStyleAndAttributes, appendChildren } from '../base/util';\n/**\n * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @class */ (function (_super) {\n __extends(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n role: 'columnheader',\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Column} column\n * @param {Object} data\n * @param {Element}\n */\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, column.headerText, column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\nexport { StackedHeaderCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { setStyleAndAttributes } from '../base/util';\nimport { CellRenderer } from './cell-renderer';\n/**\n * IndentCellRenderer class which responsible for building group indent cell.\n * @hidden\n */\nvar IndentCellRenderer = /** @class */ (function (_super) {\n __extends(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\nexport { IndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\nimport { appendChildren, templateCompiler } from '../base/util';\n/**\n * GroupCaptionCellRenderer class which responsible for building group caption cell.\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', role: 'gridcell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var result;\n var helper = {};\n var fKeyValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n if (isBlazor()) {\n var tempID = gObj.element.id + 'captionTemplate';\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, null, null, tempID);\n }\n else {\n if (isReactCompiler) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n }\n if (!isReactCompiler) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node.innerHTML = cell.column.headerText + ': ' + value;\n }\n else {\n node.innerHTML = cell.column.headerText + ': ' + value + ' - ' + data.count + ' ' +\n (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'));\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + ' is groupcaption cell');\n node.setAttribute('title', node.innerHTML);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionCellRenderer };\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @class */ (function (_super) {\n __extends(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n * @param {Cell} cell\n * @param {Object} data\n */\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\nexport { GroupCaptionEmptyCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { IndentCellRenderer } from './indent-cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nvar ExpandCellRenderer = /** @class */ (function (_super) {\n __extends(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n * @param {Cell} cell\n * @param {Object} data\n * @param {{ [x: string]: string }} attr\n * @param {boolean} isExpand\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n node.appendChild(this.parent.createElement('div', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow'\n }));\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\nexport { ExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * HeaderIndentCellRenderer class which responsible for building header indent cell.\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\nexport { HeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @class */ (function (_super) {\n __extends(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\nexport { DetailHeaderIndentCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @class */ (function (_super) {\n __extends(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes) {\n var node = this.element.cloneNode();\n if (attributes && !isNullOrUndefined(attributes['class'])) {\n node.className = '';\n node.className = attributes['class'];\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow' }));\n }\n else {\n node.appendChild(this.parent.createElement('div', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow' }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\nexport { DetailExpandCellRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { CellRenderer } from './cell-renderer';\n/**\n * ExpandCellRenderer class which responsible for building group expand cell.\n * @hidden\n */\nvar RowDragDropRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop',\n attrs: { role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n */\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon'\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\nexport { RowDragDropRenderer };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { createElement } from '@syncfusion/ej2-base';\nimport { CellRenderer } from './cell-renderer';\n/**\n * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @class */ (function (_super) {\n __extends(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n * @param {Cell} cell\n * @param {Object} data\n */\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\nexport { RowDragDropHeaderRenderer };\n","import { remove, resetBlazorTemplate, updateBlazorTemplate, blazorTemplates, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, extend } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Deferred, Predicate, DataUtil } from '@syncfusion/ej2-data';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RenderType, CellType } from '../base/enum';\nimport { Data } from '../actions/data';\nimport { Column } from '../models/column';\nimport { Row } from '../models/row';\nimport { Cell } from '../models/cell';\nimport * as events from '../base/constant';\nimport { prepareColumns, setFormatter, isGroupAdaptive, getDatePredicate, getObject } from '../base/util';\nimport { ContentRender } from '../renderer/content-renderer';\nimport { HeaderRender } from '../renderer/header-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { HeaderCellRenderer } from '../renderer/header-cell-renderer';\nimport { StackedHeaderCellRenderer } from '../renderer/stacked-cell-renderer';\nimport { IndentCellRenderer } from '../renderer/indent-cell-renderer';\nimport { GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer } from '../renderer/caption-cell-renderer';\nimport { ExpandCellRenderer } from '../renderer/expand-cell-renderer';\nimport { HeaderIndentCellRenderer } from '../renderer/header-indent-renderer';\nimport { DetailHeaderIndentCellRenderer } from '../renderer/detail-header-indent-renderer';\nimport { DetailExpandCellRenderer } from '../renderer/detail-expand-cell-renderer';\nimport { RowDragDropRenderer } from './row-drag-drop-renderer';\nimport { RowDragDropHeaderRenderer } from '../renderer/row-drag-header-indent-render';\n/**\n * Content module is used to render grid content\n * @hidden\n */\nvar Render = /** @class */ (function () {\n /**\n * Constructor for render module\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n var isServerRendered = 'isServerRendered';\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n if (!(isBlazor() && this.parent[isServerRendered])) {\n this.refreshDataManager();\n }\n };\n /**\n * Refresh the entire Grid.\n * @return {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n var preventUpdate = 'preventUpdate';\n gObj.notify(e.requestType + \"-begin\", e);\n if (isBlazor()) {\n this.resetTemplates();\n }\n if (isBlazor() && gObj.isServerRendered) {\n var bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].dataSource) {\n delete gObj[bulkChanges].dataSource;\n }\n gObj.notify('blazor-action-begin', e);\n if (e.requestType === 'filtering') {\n var columns = 'columns';\n e[columns] = null;\n }\n if (e.requestType === 'sorting') {\n var target = 'target';\n e[target] = null;\n }\n if (gObj.editSettings.mode === 'Batch' && !gObj.isEdit) {\n gObj.notify('closebatch', {});\n }\n }\n var tempPreventUpdate = this.parent[preventUpdate];\n gObj.trigger(events.actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.requestType === 'delete' && isBlazor() && !gObj.isJsComponent) {\n var data = 'data';\n if (isNullOrUndefined(gObj.commandDelIndex)) {\n args[data] = gObj.getSelectedRecords();\n }\n else {\n var tempSelectedRecord = args[data];\n args[data] = {};\n args[data][0] = tempSelectedRecord;\n }\n }\n if (args.cancel) {\n gObj.notify(events.cancelBegin, args);\n return;\n }\n if (isBlazor() && gObj.editSettings.mode === 'Normal' && gObj.isEdit && e.requestType !== 'infiniteScroll') {\n gObj.notify('closeinline', {});\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n if (!(currentViewData - dataLength) && count && currentViewData !== dataLength) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (isBlazor() && _this.parent.isServerRendered) {\n if (tempPreventUpdate) {\n var bulkChanges = 'bulkChanges';\n gObj[bulkChanges] = {};\n return;\n }\n if (e.requestType === 'refresh') {\n _this.parent.notify('updateaction', args);\n }\n if (args.requestType !== 'virtualscroll') {\n _this.parent.showSpinner();\n }\n if (args.requestType === 'delete' || args.requestType === 'save') {\n _this.parent.notify(events.addDeleteAction, args);\n _this.parent.notify('add-delete-success', args);\n }\n else {\n _this.parent.allowServerDataBinding = true;\n _this.parent.serverDataBind();\n _this.parent.allowServerDataBinding = false;\n }\n }\n else if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && _this.parent.contentModule.getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].template) {\n blazorTemplates[gObj.element.id + gridColumns[i].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid, 'Template');\n }\n if (gridColumns[i].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[i].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[i].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[k].columns.length; j++) {\n if (gObj.aggregates[k].columns[j].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[k].columns[j].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[k].columns[j][guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n * @return {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n if (args.requestType !== 'virtualscroll') {\n this.parent.showSpinner();\n }\n this.parent.notify(events.resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.e-content'), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(events.getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(events.getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n if (isBlazor() && !this.parent.isJsComponent) {\n promise.then(function (e) {\n _this.parent.notify('editsuccess', args);\n }).catch(function (e) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n _this.parent.trigger(events.actionFailure, e);\n });\n }\n else {\n var query_1 = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n promise.then(function (e) {\n _this.data.getData(args, query_1)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n * @return {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody = this.contentRenderer.getTable().querySelector('tbody');\n var tr;\n if (!isNullOrUndefined(tbody)) {\n remove(tbody);\n }\n tbody = this.parent.createElement('tbody');\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n tr = this.parent.createElement('tr', { className: 'e-emptyrow' });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getColumns().length + spanCount).toString() }\n }));\n tbody.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody);\n if (isTrigger) {\n this.parent.trigger(events.dataBound, {});\n this.parent.notify(events.onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[i].field || '', data);\n if (!isNullOrUndefined(columns[i][cFormat])) {\n columns[i].format = columns[i][cFormat];\n }\n if (!isNullOrUndefined(columns[i].validationRules) && !isNullOrUndefined(columns[i].validationRules[equalTo])) {\n columns[i].validationRules[equalTo][0] = this.parent.element.id + columns[i].validationRules[equalTo][0];\n }\n if (columns[i].isForeignColumn() && columns[i].columnData) {\n value = getObject(columns[i].foreignKeyValue || '', columns[i].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[i].type || (isBlazor() && this.parent.isServerRendered && columns[i].type === 'none')) {\n columns[i].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[i].type = columns[i].type || (isBlazor() && this.parent.isServerRendered ? 'none' : null);\n }\n var valueFormatter = new ValueFormatter();\n if (columns[i].format && (columns[i].format.skeleton || columns[i].format.format)) {\n columns[i].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[i].format)));\n columns[i].setParser(valueFormatter.getParserFunction(columns[i].format));\n }\n if (typeof (columns[i].format) === 'string') {\n var isServerRendered = 'isServerRendered';\n var isServerDateMap = this.parent[isServerRendered] || this.parent.printModule.isPrintGrid();\n setFormatter(this.locator, columns[i], isServerDateMap);\n }\n else if (!columns[i].format && columns[i].type === 'number') {\n columns[i].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n }\n };\n /** @hidden */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache\n && (args.requestType === 'delete' || (args.requestType === 'save' && this.parent.infiniteScrollModule.requestType === 'add'));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(events.beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(events.editReset, {});\n _this.parent.notify(events.tooltipDestroy, {});\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(events.refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (isBlazor() && gObj.filterSettings.type === 'FilterBar'\n && (isNullOrUndefined(gObj.currentViewData) ||\n (!isNullOrUndefined(gObj.currentViewData) && !gObj.currentViewData.length))) {\n var gridColumns = gObj.getColumns();\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[i].filterTemplate) {\n var tempID = gObj.element.id + gridColumns[i].uid + 'filterTemplate';\n resetBlazorTemplate(tempID, 'FilterTemplate');\n var fieldName = gridColumns[i].field;\n var filteredColumns = gObj.filterSettings.columns;\n for (var k = 0; k < filteredColumns.length; k++) {\n if (fieldName === filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(tempID, 'FilterTemplate', gridColumns[i], false);\n }\n }\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(events.groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n _this.parent.notify(events.dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content = 'content';\n args.scrollTop = { top: _this.contentRenderer[content].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(events.infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.e-content'), false);\n _this.renderEmptyRow();\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(events.actionComplete, args);\n }\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(events.toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n });\n };\n /** @hidden */\n Render.prototype.dataManagerFailure = function (e, args) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.e-content'), { busy: false, invalid: true });\n this.setRowCount(1);\n this.parent.trigger(events.actionFailure, { error: e });\n this.parent.hideSpinner();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n var gObj = this.parent;\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(events.autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[i]] === 'object' && obj[keys[i]] && !(obj[keys[i]] instanceof Date) ?\n Object.keys(obj[keys[i]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[i]], field + (keys[i] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[i];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[e] !== 'BlazId'; }).\n map(function (field) { return complexCols[field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[i] = { 'field': columns[i] };\n if (this.parent.enableColumnVirtualization) {\n cols[i].width = !isNullOrUndefined(cols[i].width) ? cols[i].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(events.modelChanged, this.refresh, this);\n this.parent.on(events.refreshComplete, this.refreshComplete, this);\n this.parent.on(events.bulkSave, this.sendBulkRequest, this);\n this.parent.on(events.showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(events.autoCol, this.dynamicColumnChange, this);\n };\n /** @hidden */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[index];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[i].field).and(_this.getPredicate('key', 'equal', groups[i].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote() || isBlazor()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[i].field, 'equal', groups[i].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[i].field).and(this.getPredicate('key', 'equal', elements[i].key))))[0];\n elements[i].count = uGroup.count;\n var itemGroup = elements[i].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[i].items = this.updateGroupInfo(elements[i].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row = rows[j];\n for (var k = 0; k < row.columns.length; k++) {\n var types = row.columns[k].type instanceof Array ? (row.columns[k].type) :\n [(row.columns[k].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row.columns[k].field + ' - ' + types[l].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[l] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n elements[i].aggregates[key] = row.columns[k].customAggregate ?\n row.columns[k].customAggregate\n .call(context, data_1, row.columns[k]) : '';\n }\n else {\n elements[i].aggregates[key] = DataUtil.aggregates[types[l].toLowerCase()](data, row.columns[k].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\nexport { Render };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\n/**\n * CellRendererFactory\n * @hidden\n */\nvar CellRendererFactory = /** @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n this.cellRenderMap[name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[name])) {\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[name];\n }\n };\n return CellRendererFactory;\n}());\nexport { CellRendererFactory };\n","import { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * ServiceLocator\n * @hidden\n */\nvar ServiceLocator = /** @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[name])) {\n this.services[name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[name])) {\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[name];\n };\n return ServiceLocator;\n}());\nexport { ServiceLocator };\n","import { isNullOrUndefined, getEnumValue } from '@syncfusion/ej2-base';\nimport { RenderType } from '../base/enum';\n/**\n * RendererFactory\n * @hidden\n */\nvar RendererFactory = /** @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n this.rendererMap[rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[rName])) {\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[rName];\n }\n };\n return RendererFactory;\n}());\nexport { RendererFactory };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { EventHandler, getValue, closest, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, extend, Browser } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport * as event from '../base/constant';\nimport { Row } from '../models/row';\nimport { RowModelGenerator } from './row-model-generator';\nimport { parentsUntil } from '../base/util';\n/**\n * FocusStrategy class\n * @hidden\n */\nvar FocusStrategy = /** @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function () {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n var added = 'addedRecords';\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && !this.parent.editModule.getBatchChanges()[added].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus) {\n this.focus();\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid')))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = false;\n this.currentInfo.skipAction = false;\n if (this.getContent().getFocusInfo().elementToFocus) {\n this.getContent().getFocusInfo().elementToFocus.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.e-gridcontent'));\n var isHeader = !isNullOrUndefined(closest(e.target, '.e-gridheader'));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.e-frozencontent')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozenheader'));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-gridheader')) ||\n e.target.classList.contains('e-content') ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.e-gridheader'))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n this.focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n if (this.skipOn(e)) {\n return;\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(event.beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (returnVal === false) {\n this.clearIndicator();\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || (filterCell ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.e-gridcontent') === null && closest(target, '.e-gridheader') === null)\n || (e.action === 'space' && (!target.classList.contains('e-gridchkbox') && closest(target, '.e-gridchkbox') === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(event.getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // tslint:disable-next-line:no-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll) {\n // tslint:disable-next-line:no-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content, isFrozen, isFrozenRight) {\n this.active = content ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(event.virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /** @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /** @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /** @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && !isNullOrUndefined(e);\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(event.cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content) {\n var _this = this;\n return function (e) {\n if (content && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject();\n var newMovableRows = mRows.map(function (row) { return row.clone(); });\n var newFrozenRows = rows.map(function (row) { return row.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === 'Left-Right') {\n var frRows = _this.parent.getFrozenRightRowsObject();\n var newfrRows = frRows.map(function (row) { return row.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging') {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row, i) {\n index_1 = i;\n return row.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.parent.on(event.keyPressed, this.onKeyPress, this);\n this.parent.on(event.click, this.onClick, this);\n this.parent.on(event.contentReady, this.refMatrix, this);\n this.parent.on(event.partialRefresh, this.refMatrix, this);\n this.parent.on(event.refreshExpandandCollapse, this.refMatrix, this);\n this.parent.on(event.headerRefreshed, this.refreshMatrix(), this);\n this.parent.on('close-edit', this.restoreFocus, this);\n this.parent.on('restore-Focus', this.restoreFocus, this);\n var evts = ['start-edit', 'start-add'];\n for (var i = 0; i < evts.length; i++) {\n this.parent.on(evts[i], this.clearIndicator, this);\n }\n this.parent.on('sorting-complete', this.restoreFocus, this);\n this.parent.on('filtering-complete', this.filterfocus, this);\n var actionsG = ['grouping', 'ungrouping'];\n for (var k = 0; k < actionsG.length; k++) {\n this.parent.on(actionsG[k] + \"-complete\", this.restoreFocusWithAction, this);\n }\n this.parent.on(event.batchAdd, this.refMatrix, this);\n this.parent.on(event.batchCancel, this.refMatrix, this);\n this.parent.on(event.batchDelete, this.refMatrix, this);\n this.parent.on(event.detailDataBound, this.refMatrix, this);\n this.parent.on(event.onEmpty, this.refMatrix, this);\n this.parent.on(event.cellFocused, this.internalCellFocus, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n this.parent.off(event.keyPressed, this.onKeyPress);\n this.parent.off(event.click, this.onClick);\n this.parent.off(event.contentReady, this.refMatrix);\n this.parent.off(event.partialRefresh, this.refMatrix);\n this.parent.off(event.refreshExpandandCollapse, this.refMatrix);\n this.parent.off(event.headerRefreshed, this.refreshMatrix());\n this.parent.off('close-edit', this.restoreFocus);\n this.parent.off('restore-focus', this.restoreFocus);\n var evts = ['start-edit', 'start-add'];\n for (var i = 0; i < evts.length; i++) {\n this.parent.off(evts[i], this.clearOutline);\n }\n this.parent.off('sorting-complete', this.restoreFocus);\n this.parent.off('filtering-complete', this.filterfocus);\n var actionsG = ['grouping', 'ungrouping'];\n for (var k = 0; k < actionsG.length; k++) {\n this.parent.on(actionsG[k] + \"-complete\", this.restoreFocusWithAction);\n }\n this.parent.off(event.batchAdd, this.refMatrix);\n this.parent.off(event.batchDelete, this.refMatrix);\n this.parent.off(event.batchCancel, this.refMatrix);\n this.parent.off(event.detailDataBound, this.refMatrix);\n this.parent.off(event.onEmpty, this.refMatrix);\n this.parent.off(event.cellFocused, this.internalCellFocus);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell') || e.parent.classList.contains('e-templatecell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\nexport { FocusStrategy };\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n * @hidden\n */\nvar Matrix = /** @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[rowIndex] = this.matrix[rowIndex] || [];\n this.matrix[rowIndex][columnIndex] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[rowIndex])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[rowIndex].length - 1));\n if (tmp + navigator[1] > this.matrix[rowIndex].length - 1 && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[rowIndex], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[i].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current[0];\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[index])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[index]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[rowIndex].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[i].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n for (var j = 0; j < cells.length; j++) {\n this.set(i, j, rows[i].visible === false ? false : selector(rows[i], cells[j], isRowTemplate));\n }\n }\n return this.matrix;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\nexport { Matrix };\n/**\n * @hidden\n */\nvar ContentFocus = /** @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if ((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString()) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[rowIndex].cells[cellIndex];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[rowIndex].querySelectorAll('.e-indentcell').length +\n this.getTable().rows[rowIndex].querySelectorAll('.e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains('e-rowcell') && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n target = (target.classList.contains('e-rowcell') ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains('e-table') ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, 'e-rowcell') && !parentsUntil(e.target, 'e-groupcaption'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[rowIndex]) ? this.getTable().rows[rowIndex].cells[cellIndex] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? child[0] : element;\n };\n ContentFocus.prototype.selector = function (row, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row.isDataRow && types.indexOf(cell.cellType) > -1)\n || (cell.column && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row.isDataRow && isRowTemplate))\n && !(row.edit === 'delete' && row.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i < len; i++) {\n if (this.matrix.matrix[index].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[index].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0);\n var right = ((action === 'rightArrow' || action === 'tab') && current[1] === this.matrix.columns);\n var frSwap = this.parent.getFrozenMode() === 'Left-Right' && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n if (action === 'tab' && !this.parent.isEdit &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (action === 'shiftTab' && !this.parent.isEdit &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row.classList.contains('e-row')) {\n var rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n isHeaderFocus = rowIndex > 0;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: (action === 'upArrow' || enterFrozen) && current[0] === 0,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right') {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === 'Left-Right' && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains('e-rowcell');\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute('aria-rowindex'), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute('aria-colindex'), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table.rows[rowIndex])) {\n var cell = void 0;\n cellIndex = table.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table.rows[rowIndex].cells[0].classList.contains('e-editcell')) {\n cell = table.rows[rowIndex].cells[0].querySelectorAll('td')[cellIndex];\n }\n else {\n cell = table.rows[rowIndex].cells[cellIndex];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains('e-rowcell');\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains('e-rowcell')) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains('e-rowcell') && !cell.classList.contains('e-unboundcell')\n && (!cell.classList.contains('e-templatecell') || cell.classList.contains('e-editedbatchcell'))\n && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return !isBlazor() && this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\nexport { ContentFocus };\n/**\n * @hidden\n */\nvar HeaderFocus = /** @class */ (function (_super) {\n __extends(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains('e-rowcell') ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[rowIndex].cells[cellIndex];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template))) ||\n cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && current[1] === 0;\n var right = (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && current[1] === this.matrix.columns;\n var frSwap = this.parent.getFrozenMode() === 'Left-Right' && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right') {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = active.matrix.columns + 1;\n }\n if (this.parent.getFrozenMode() === 'Left-Right'\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n for (var i = 0; i < cells.length; i++) {\n this.matrix.set(length, i, cells[i].visible && cells[i].column.allowFiltering !== false);\n }\n }\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n return HeaderFocus;\n}(ContentFocus));\nexport { HeaderFocus };\nvar FixedContentFocus = /** @class */ (function (_super) {\n __extends(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0);\n return { swap: swap, toHeader: toHeader, toFrozen: toHeader };\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow') && current[1] === this.matrix.columns),\n toHeader: toHeader,\n toFrozen: toHeader\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nexport { FixedContentFocus };\nvar FixedHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frSwap, toFrozen: toFrozen };\n }\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns && isPresent),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n current[1] === this.matrix.columns,\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = active.matrix.columns + 1;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\nexport { FixedHeaderFocus };\n/** @hidden */\nvar SearchBox = /** @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n /** @hidden */\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n };\n SearchBox.prototype.searchBlur = function (args) {\n args.target.parentElement.classList.remove('e-input-focus');\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nexport { SearchBox };\nvar FixedRightContentFocus = /** @class */ (function (_super) {\n __extends(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0),\n toHeader: toHeader,\n toFrozenRight: toHeader\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nexport { FixedRightContentFocus };\nvar FixedRightHeaderFocus = /** @class */ (function (_super) {\n __extends(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && current[1] === 0;\n var swap = ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n return { swap: swap, toHeader: frozenSwap, toFrozenRight: toFrozen };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = 0;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n return current3;\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\nexport { FixedRightHeaderFocus };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @class */ (function (_super) {\n __extends(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\nexport { PageSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @class */ (function (_super) {\n __extends(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\nexport { ColumnChooserSettings };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { Browser, EventHandler, createElement, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, isUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { remove, closest, select } from '@syncfusion/ej2-base';\nimport { Query } from '@syncfusion/ej2-data';\nimport { setCssInGridPopUp, getPosition, isGroupAdaptive, addRemoveActiveClasses, removeAddCboxClasses } from '../base/util';\nimport { getCellsByTableName, getCellByColAndRowIndex, parentsUntil, gridActionHandler } from '../base/util';\nimport * as events from '../base/constant';\nimport { RenderType } from '../base/enum';\nimport { iterateExtend, setChecked } from '../base/util';\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @class */ (function () {\n /**\n * Constructor for the Grid selection module\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables \n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n * @return {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n * @return {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.e-movablecontent')) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === 'Left-Right' && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n var added = 'addedRecords';\n var deleted = 'deletedRecords';\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[added]) :\n this.parent.editModule.getBatchChanges()[added].concat(currentRecords);\n var deletedRecords = this.parent.editModule.getBatchChanges()[deleted];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords[i][primaryKey] === currentRecords[j][primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n this.parent.notify(events.selectVirtualRow, { selectedIndex: index });\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n return;\n }\n }\n else {\n selectData = this.getCurrentBatchRecordChanges()[index];\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (index === this.selectedRowIndexes[0]) : false);\n var args;\n var can = 'cancel';\n if (!isToggle) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, previousRowIndex: this.prevRowIndex,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked\n };\n }\n this.onActionComplete(args, events.rowSelected);\n }\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', [index]);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === 'Left-Right' && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === 'Left-Right' && frRow) {\n mObj[frozenRightRow] = frRow;\n mObj[previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n /**\n * Selects a collection of rows by index.\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @return {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[i]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData.push(rowObj.foreignKeyData);\n }\n }\n var isHybrid = 'isHybrid';\n this.activeTarget();\n var args;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(rowIndexes.slice(-1)[0]);\n var selectRowFn = function (index) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === 'Left-Right' ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIdx = rowIndexes_1[_i];\n selectRowFn(rowIdx);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n args = {\n rowIndexes: rowIndexes, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: isBlazor() ? selectedData : _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n rowIndexes: rowIndexes, rowIndex: rowIndex, previousRowIndex: _this.prevRowIndex,\n row: selectedRows, prevRow: gObj.getRows()[_this.prevRowIndex],\n data: isBlazor() ? selectedData : _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData\n };\n }\n if (_this.isRowSelected) {\n _this.onActionComplete(args, events.rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n * @param {number} startIndex - Specifies the row indexes.\n * @return {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n for (var _i = 0, rowIndexes_2 = rowIndexes; _i < rowIndexes_2.length; _i++) {\n var rowIndex = rowIndexes_2[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(events.rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(events.rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n }\n else {\n var isHybrid = 'isHybrid';\n this.activeTarget();\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n cancel: false,\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.parent.trigger(events.rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n data: rowObj.data, rowIndex: rowIndex, row: selectedRow, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n }\n else {\n args = {\n data: rowObj.data, rowIndex: rowIndex, previousRowIndex: this.prevRowIndex,\n row: selectedRow, prevRow: gObj.getRows()[this.prevRowIndex],\n foreignKeyData: rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n }\n this.onActionComplete(args, events.rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if (chkState) {\n this.selectedRowState[pKey_1] = chkState;\n if (!this.persistSelectedData.some(function (data) { return data[_this.primaryKey] === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey) {\n var _this = this;\n delete (this.selectedRowState[pKey]);\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return data[_this.primaryKey] === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n }\n };\n Selection.prototype.updateCheckBoxes = function (row, chkState, rowIndex) {\n if (!isNullOrUndefined(row)) {\n var chkBox = row.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n * @return {void}\n */\n Selection.prototype.clearSelection = function () {\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n * @return {void}\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n var currentViewData = this.parent.getCurrentViewRecords();\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[i]]\n : this.parent.getDataRows()[this.selectedRowIndexes[i]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[i]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n mRow_1.push(gObj.getMovableRows()[this.selectedRowIndexes[i]]);\n if (gObj.getFrozenMode() === 'Left-Right') {\n fRightRow_1.push(gObj.getFrozenRightRows()[this.selectedRowIndexes[i]]);\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(events.rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[i], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI || isBlazor()) {\n element[j].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[j], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[j], false);\n }\n _this.updateCheckBoxes(element[j]);\n }\n if (isBlazor() && _this.parent.isServerRendered && _this.parent.enableVirtualization) {\n _this.getRenderer().setSelection(null, false, true);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[i]);\n if (movableRow) {\n if (!_this.disableUI || isBlazor()) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[i]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(events.rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row, foreignKeyData, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked)) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && this.parent.checkAllRows === 'Uncheck'\n && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ?\n this.persistSelectedData : data, foreignKeyData: foreignKeyData,\n cancel: false, isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var data_2 = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[rowInString] = row;\n rowDeselectObj[target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[rowidx] = rowIndex[0];\n rowDeselectObj[rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[data_2] = rowDeselectObj[data_2][0];\n rowDeselectObj[rowInString] = rowDeselectObj[rowInString][0];\n rowDeselectObj[foreignKey] = rowDeselectObj[foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[rowidxex] = rowIndex;\n }\n }\n }\n else {\n var rowIndex_2 = 'rowIndex';\n var data_3 = 'data';\n rowDeselectObj[rowIndex_2] = rowDeselectObj[rowIndex_2][rowDeselectObj[rowIndex_2].length - 1];\n rowDeselectObj[data_3] = rowDeselectObj[data_3][rowDeselectObj[data_3].length - 1];\n }\n this.parent.trigger(type, (!isBlazor() || this.parent.isJsComponent) && this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row[0], false);\n _this.updateCheckBoxes(row[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row) {\n if (row === void 0) { row = this.currentIndex; }\n if (isNullOrUndefined(row)) {\n return {};\n }\n if (typeof row === 'number') {\n row = this.parent.getRowByIndex(row);\n }\n if (row) {\n return this.parent.getRowObjectFromUID(row.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var selectedTable;\n var cIdx;\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n if (!isBlazor() || this.parent.isJsComponent) {\n var currentCell = 'currentCell';\n args[currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[currentCell] = cellSelectingArgs[currentCell] ? cellSelectingArgs[currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = void 0;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = _this.prevECIdxs;\n }\n else {\n args = { data: selectedData, cellIndex: cellIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, events.cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @return {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n if (!isBlazor()) {\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n this.parent.trigger(events.cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || _this.parent.isJsComponent || _this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = _this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: edIndex, selectedRowCellIndex: _this.selectedRowCellIndexes };\n }\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, events.cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs;\n var isHybrid = 'isHybrid';\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n }\n this.onActionBegin(cellSelectArgs, events.cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[i].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[i].cellIndexes[j] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[i].rowIndex, rowCellIndexes[i].cellIndexes[j]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[i].rowIndex, cellIndex: rowCellIndexes[i].cellIndexes[j] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n * @param {IIndex} startIndex - Defines the collection of row and column index.\n * @return {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var isHybrid = 'isHybrid';\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === 'frozen-left' ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === 'frozen-right' ? gObj.getFrozenRightRowsObject() : []\n ]);\n var foreignKeyData = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === 'frozen-right' ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n foreignKeyData.push(rowObj.cells[idx].foreignKeyData);\n var args = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest, isCtrlPressed: this.isMultiCtrlRequest\n };\n }\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[index].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(events.cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(events.cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, events.cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, events.cellSelecting);\n if (!isNullOrUndefined(args) && args[cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = void 0;\n if (!isBlazor() || this.parent.isJsComponent || this.parent[isHybrid]) {\n cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[previousRowCellIndex] = this.prevECIdxs;\n }\n else {\n cellSelectedArgs = { data: selectedData, cellIndex: cellIndexes[0], selectedRowCellIndex: this.selectedRowCellIndexes };\n }\n this.onActionComplete(cellSelectedArgs, events.cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[m].getAttribute('aria-colindex'), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[rowIndex].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[rowIndex].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute('aria-colindex'), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains('e-gridchkbox')) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains('e-gridchkbox')) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[i].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[index].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[index].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n * @return {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var selectedTable = void 0;\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell.length; i < len; i++) {\n data.push(currentViewData[rowCell[i].rowIndex]);\n var rowObj = this.getRowObj(rowCell[i].rowIndex);\n for (var j = 0, cLen = rowCell[i].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell[i].cellIndexes[j]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData.push(rowObj.cells[rowCell[i].cellIndexes[j]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell[i].rowIndex, rowCell[i].cellIndexes[j]));\n }\n }\n }\n this.cellDeselect(events.cellDeselecting, rowCell, data, cells, foreignKeyData);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[i].classList.remove('e-cellselectionbackground');\n selectedCells[i].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(events.cellDeselected, rowCell, data, cells, foreignKeyData);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === 'Left-Right') {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[i].querySelectorAll('.e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute('aria-rowindex'), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n }\n else {\n var td = parentsUntil(e.target, 'e-rowcell');\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, 'e-rowcell');\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute('aria-colindex'), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, 'tbody').querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, 'tbody').querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.querySelectorAll('.e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === 'Left-Right' && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = '0 0 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = '2px 0 0 0';\n this.frcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.frcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.mcBdrElement.style.borderWidth = '2p 0 2px 0';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.mhBdrElement.style.borderWidth = '2px 0 2px 0';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frcBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.bdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frhBdrElement.style.borderWidth = rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.mcBdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = '2px 2px 0 2px';\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n this.frcBdrElement.style.borderWidth = '0 2px 2px 2px';\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = '2px';\n this.mcBdrElement.style.borderWidth = '2px';\n this.frcBdrElement.style.borderWidth = '2px';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px';\n this.mhBdrElement.style.borderWidth = '2px';\n this.frhBdrElement.style.borderWidth = '2px';\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.mcBdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? '0 2px 2px 0' : '0 0 2px 2px';\n this.mcBdrElement.style.borderWidth = rtl ? '0 0 2px 2px' : '0 2px 2px 0';\n this.fhBdrElement.style.borderWidth = rtl ? '2px 2px 0 0' : '2px 0 0 2px';\n this.mhBdrElement.style.borderWidth = rtl ? '2px 0 0 2px' : '2px 2px 0 0';\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? '2px 0 2px 2px'\n : '2px 2px 2px 0' : '0 2px 2px 2px';\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? '2px 2px 2px 0'\n : '2px 0 2px 2px' : '0 2px 2px 2px';\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? '2px 2px 0 2px'\n : rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n this.mhBdrElement.style.borderWidth = str.includes('2') ? '2px 2px 0 2px'\n : rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? '2px 2px 2px 0'\n : '2px 0 2px 2px' : '0 2px 2px 2px';\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? '2px 0 2px 2px'\n : '2px 2px 2px 0' : '0 2px 2px 2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? '2px 2px 0 2px'\n : rtl ? '2px 2px 2px 0' : '2px 0 2px 2px';\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? '2px 2px 0 2px'\n : rtl ? '2px 0 2px 2px' : '2px 2px 2px 0';\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = '2px';\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = '2px';\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = '2px';\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = '2px';\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === 'Left-Right') {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-movableheader')) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, 'e-movablecontent') ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, 'e-movablecontent') ||\n parentsUntil(this.startAFCell, 'e-movableheader')) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseInt(args.value, 10));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(events.beforeAutoFill, args);\n return args;\n };\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[rowIndex].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[rowIndex].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === 'Left-Right') {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[rowIndex].querySelectorAll(cls)));\n }\n }\n return cells;\n };\n /* tslint:disable-next-line:max-func-body-length */\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute('aria-colindex'), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n var col;\n switch (true) { //direction \n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, 'e-rowcell'):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, 'e-row').getAttribute('aria-rowindex'), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute('aria-colindex'), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute('aria-colindex'), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute('aria-rowindex'), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute('aria-rowindex'), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[c]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, 'e-rowcell');\n }\n else {\n this.mUPTarget = null;\n }\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell') {\n var target = e.target;\n var rowIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n var cellIndex = parseInt(target.getAttribute('aria-colindex'), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, 'e-rowcell');\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document.body, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute('aria-colindex'), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === 'Left-Right' && col.getFreezeTableName() === 'frozen-right';\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, 'e-table'))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n !isFrozenRow ? !isFrozenCol ? this.parent.getContentTable().parentElement.appendChild(this.autofill) :\n this.parent.contentModule.getMovableContent().appendChild(this.autofill) :\n !isFrozenCol ? this.parent.getHeaderTable().parentElement.appendChild(this.autofill) :\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n if (isFrozenRight) {\n isFrozenRow ? this.parent.getFrozenRightHeader().appendChild(this.autofill)\n : this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, 'e-headercontent') && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, 'e-editedrow')) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, 'e-rowcell') && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit) {\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.querySelectorAll('.e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute('aria-rowindex'), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute('aria-rowindex'), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, 'e-rowcell').getAttribute('aria-colindex'), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document.body, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n };\n /**\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.uiUpdate, this.enableAfterRender, this);\n this.parent.on(events.initialEnd, this.initializeSelection, this);\n this.parent.on(events.rowSelectionComplete, this.onActionComplete, this);\n this.parent.on(events.cellSelectionComplete, this.onActionComplete, this);\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.cellFocused, this.onCellFocused, this);\n this.parent.on(events.beforeFragAppend, this.clearSelAfterRefresh, this);\n this.parent.on(events.columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.on(events.rowsRemoved, this.rowsRemoved, this);\n this.parent.on(events.headerRefreshed, this.refreshHeader, this);\n this.addEventListener_checkbox();\n };\n /**\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.uiUpdate, this.enableAfterRender);\n this.parent.off(events.initialEnd, this.initializeSelection);\n this.parent.off(events.rowSelectionComplete, this.onActionComplete);\n this.parent.off(events.cellSelectionComplete, this.onActionComplete);\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.cellFocused, this.onCellFocused);\n this.parent.off(events.beforeFragAppend, this.clearSelAfterRefresh);\n this.parent.off(events.columnPositionChanged, this.columnPositionChanged);\n this.parent.removeEventListener(events.actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunction);\n this.parent.off(events.rowsRemoved, this.rowsRemoved);\n this.parent.off(events.headerRefreshed, this.refreshHeader);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n delete (this.selectedRowState[e.records[i][this.primaryKey]]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n ;\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n ;\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n this.initPerisistSelection();\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').querySelectorAll('.e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === 'Left-Right';\n if (!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) {\n this.parent.off(events.contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n this.parent.off(events.contentReady, this.checkBoxSelectionChanged);\n var gobj = this.parent;\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n for (var i = 0; i < res.length; i++) {\n if (isNullOrUndefined(this.selectedRowState[res[i][this.primaryKey]]) && res[i][this.chkField]) {\n this.selectedRowState[res[i][this.primaryKey]] = res[i][this.chkField];\n }\n }\n this.persistSelectedData = res;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!this.parent.getDataModule().isRemote() && !isBlazor()) {\n if (state) {\n if (this.parent.groupSettings.columns.length) {\n for (var _i = 0, _a = this.getData().records; _i < _a.length; _i++) {\n var data = _a[_i];\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n else {\n for (var _b = 0, _c = this.getData(); _b < _c.length; _b++) {\n var data = _c[_b];\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === 'Left-Right') {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (rows !== null && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[j]);\n var pKey = rowObj ? rowObj.data ? rowObj.data[this.primaryKey] : null : null;\n if (pKey === null) {\n return;\n }\n var checkState = void 0;\n var chkBox = rows[j].querySelector('.e-checkselect');\n if (this.selectedRowState[pKey] || (this.parent.checkAllRows === 'Check' &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[j].getAttribute('aria-rowindex'), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[j], checkState);\n }\n this.isSingleSel() && indexes.length > 0 ? this.selectRow(indexes[0], true) : this.selectRows(indexes);\n }\n if (this.parent.isCheckBoxSelection && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row = closest(editChkBox, '.e-editedrow');\n if (row) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add' && this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[rowObj.data[this.primaryKey]] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = [];\n if (!isBlazor()) {\n records = e.data;\n }\n else {\n records = this.getSelectedRecords();\n }\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i][this.primaryKey])) {\n this.updatePersistDelete(data[i][this.primaryKey]);\n }\n }\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n this.refreshPersistSelection();\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[i].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[i], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = this.parent.getDataModule().isRemote() ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = (!this.parent.getDataModule().isRemote() && !isBlazor()) ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n if (isBlazor() && this.parent.enableVirtualization &&\n !isNullOrUndefined(this.parent.contentModule.currentInfo.endIndex)) {\n this.selectRowsByRange(this.parent.contentModule.currentInfo.startIndex, this.parent.contentModule.currentInfo.endIndex);\n }\n else {\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return data[_this.primaryKey] in _this.selectedRowState;\n });\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n if (isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization) {\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', !state, 'checkbox', null);\n this.checkBoxState = !state;\n if (!state) {\n var values = 'values';\n var vgenerator = 'vgenerator';\n var rowCache = this.parent.contentModule[vgenerator].rowCache;\n Object[values](rowCache).forEach(function (x) { return x.isSelected = true; });\n for (var i = 0; i < Object.keys(rowCache).length; i++) {\n if (this.parent.selectionModule.selectedRowIndexes.indexOf(Number(Object.keys(rowCache)[i])) === -1) {\n this.parent.selectionModule.selectedRowIndexes.push(Number(Object.keys(rowCache)[i]));\n }\n }\n }\n }\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.e-rowcell');\n var checkObj = checkBox;\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n this.moveIntoUncheckCollection(closest(target, '.e-row'));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row);\n var pKey = rowObj && rowObj.data ? rowObj.data[this.primaryKey] : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(events.checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n if (index && this.parent.getRowByIndex(index).getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n ;\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = void 0;\n var isServerRenderedVirtualization = isBlazor() && this.parent.isServerRendered && this.parent.enableVirtualization;\n if (isServerRenderedVirtualization) {\n var values = 'values';\n var vgenerator = 'vgenerator';\n checkToSelectAll = !Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter(function (x) { return x.isSelected === undefined || x.isSelected === false; }).length &&\n Object[values](this.parent.contentModule[vgenerator].rowCache).\n filter(function (x) { return x.isSelected; }).length === this.selectedRowIndexes.length;\n }\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection && !(isServerRenderedVirtualization)) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if (checkToSelectAll || checkedLen === this.totalRecordsCount && this.totalRecordsCount\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()\n && !(isBlazor() && this.parent.isServerRendered)\n && checkedLen === this.getData().length)) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (isServerRenderedVirtualization && !this.selectedRowIndexes.length ||\n checkedLen === 0 && !isServerRenderedVirtualization || this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !this.parent.getDataModule().isRemote()) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (parentsUntil(target, 'e-row') || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n this.isMultiShiftRequest = e.shiftKey;\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.querySelectorAll('.e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, 'e-row')) ? true : false;\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, 'e-rowcell');\n if ((target && target.parentElement.classList.contains('e-row') && !this.parent.selectionSettings.checkboxOnly) || chkSelect) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute('aria-rowindex'), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.querySelectorAll('.e-addedrow').length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute('aria-colindex'), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.e-row'));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains('e-rowcell') ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.e-rowcell').classList.contains('e-gridchkbox'))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n if (isBlazor() && this.parent.enableVirtualization && this.parent.isServerRendered) {\n var rowIndexes = this.parent.getSelectedRowIndexes();\n var interopAdaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n this.parent[interopAdaptor][invokeMethodAsync]('MaintainSelection', true, 'normal', rowIndexes);\n }\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n /* tslint:disable-next-line:max-func-body-length */\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute('aria-rowindex'));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.e-rowcell'))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.e-rowcell'))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute('aria-colindex'));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n * @return {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType()) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute('aria-colindex'), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex).querySelectorAll('.e-rowcell')[cIndex];\n }\n this.addAttribute(this.target);\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n * @return {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[i].columns) {\n this.getstackedColumns(column[i].columns);\n }\n else {\n innerColumnIndexes.push(column[i]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row) {\n var cells = [].slice.call(row.querySelectorAll('.e-rowcell'));\n var detailIndentCell = row.querySelector('.e-detailrowcollapse') || row.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row ? row.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n * @return {Object[]}\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection) {\n selectedData = this.parent.getRowsObject().filter(function (row) { return row.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n * @param {number} startIndex\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[index])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, events.columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n * @param {number} startIndex\n * @param {number} endIndex\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n * @param {number[]} columnIndexes\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[i]).uid), columnIndexes[i]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n * @param {number} startIndex\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[startIndex])) {\n return;\n }\n var frzCols = gObj.getFrozenColumns();\n var isFreeze = frzCols && startIndex >= frzCols;\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n var rows = !isFreeze ? gObj.getDataRows() : gObj.getMovableRows();\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, events.columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, events.columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === 'frozen-right') {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, events.columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().querySelectorAll('.e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[i]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[i]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[clearIndex].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, events.columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[i]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.e-movablecontent')) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === 'Left-Right') {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[aria-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[i].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[startIndex])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[startIndex].isSelected = true;\n if (col.getFreezeTableName() === 'frozen-right') {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[j].classList.contains('e-row')) {\n if ((rows[j].classList.contains('e-editedrow') || rows[j].classList.contains('e-addedrow')) &&\n this.parent.editSettings.mode === 'Normal' && !isNullOrUndefined(rows[j].querySelector('tr').childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].querySelector('tr').childNodes[startIndex]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[j].childNodes[startIndex])) {\n addRemoveActiveClasses([rows[j].childNodes[startIndex]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(events.dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.on(events.contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(events.beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(events.onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(events.resizeStop, this.resizeEndFn);\n };\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(events.dataReady, this.dataReady);\n this.parent.removeEventListener(events.dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(events.click, this.clickHandler);\n this.parent.off(events.beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode;\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n this.parent.selectedRowIndex = index;\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\nexport { Selection };\n","import { extend, isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { isActionPrevent } from '../base/util';\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @class */ (function () {\n /**\n * Constructor for Grid search module.\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](grid/#searchsettings/).\n * @param {string} searchString - Defines the key.\n * @return {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(events.preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(events.searchComplete, this.onSearchComplete, this);\n this.parent.on(events.destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.on(events.cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(events.searchComplete, this.onSearchComplete);\n this.parent.off(events.destroy, this.destroy);\n this.parent.removeEventListener(events.actionComplete, this.actionCompleteFunc);\n this.parent.off(events.cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n * @return {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(events.modelChanged, {\n requestType: 'searching', type: events.actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n * @return {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n if (isBlazor() && !this.parent.isJsComponent) {\n e.rows = null;\n }\n this.parent.trigger(events.actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: events.actionComplete\n }));\n };\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\nexport { Search };\n","import { isNullOrUndefined, isBlazor } from '@syncfusion/ej2-base';\nimport { iterateArrayOrObject, isGroupAdaptive } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @class */ (function () {\n /**\n * Constructor for the show hide module.\n * @hidden\n */\n function ShowHide(parent) {\n this.parent = parent;\n }\n /**\n * Shows a column by column name.\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[i].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(events.tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[i].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key, index) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item, index) {\n if (item[getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n /**\n * Shows or hides columns by given column collection.\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @return {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns :\n isBlazor() ? (JSON.parse(JSON.stringify(columns))) : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n this.parent.trigger(events.actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[cancel]) {\n _this.parent.notify(events.resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(events.columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(events.actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n };\n return ShowHide;\n}());\nexport { ShowHide };\n","import { Browser, EventHandler } from '@syncfusion/ej2-base';\nimport { addClass, removeClass } from '@syncfusion/ej2-base';\nimport { formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { getScrollBarWidth, getUpdateUsingRaf } from '../base/util';\nimport { scroll, contentReady, uiUpdate, onEmpty, headerRefreshed, textWrapRefresh, virtualScrollEdit, infiniteScrollHandler, closeFilterDialog } from '../base/constant';\nimport { lazyLoadScrollHandler, checkScrollReset } from '../base/constant';\nimport { ColumnWidthService } from '../services/width-controller';\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n * @hidden\n */\n function Scroll(parent) {\n this.lastScrollTop = 0;\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n };\n /**\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content = this.parent.getContent().querySelector('.e-content');\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody = this.parent.getHeaderContent().querySelector('tbody');\n mHdrHeight = tbody ? tbody.offsetHeight : 0;\n if (tbody && mHdrHeight) {\n var add = tbody.querySelectorAll('.e-addedrow').length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n content.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content.style.height = formatUnit(height);\n }\n this.ensureOverflow(content);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === 'Left-Right' ? '0.5px' : '1px';\n content.querySelector('.e-headercontent').style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.e-headercontent');\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](grid/#height/) must be set to 100%.\n * @return\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content);\n content.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.e-gridcontent';\n if (this.parent.isFrozenGrid()) {\n content.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.e-headercontent').scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector('tbody') === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains('e-headercontent');\n return function (e) {\n if (_this.content.querySelector('tbody') === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var sLimit = target.scrollWidth;\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector('tbody') === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.e-movableheader') :\n _this.parent.getHeaderContent().querySelector('.e-headercontent');\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.e-movablecontent') :\n _this.parent.getContent().querySelector('.e-content');\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.e-content');\n this.header = this.parent.getHeaderContent().querySelector('.e-headercontent');\n var mCont = this.content.querySelector('.e-movablecontent');\n var fCont = this.content.querySelector('.e-frozencontent');\n var mHdr = this.header.querySelector('.e-movableheader');\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n else {\n EventHandler.add(this.content, 'scroll', this.onContentScroll(this.header), this);\n EventHandler.add(this.header, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (sHeight < clientHeight) {\n addClass(table.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (_this.parent.isFrozenGrid()) {\n addClass(_this.parent.getContent().querySelector('.e-movablecontent').querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.e-movableheader')) {\n _this.header.querySelector('.e-movableheader').scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.e-movableheader')) {\n _this.header.querySelector('.e-movableheader').scrollLeft =\n _this.content.querySelector('.e-movablecontent').scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content) {\n content.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[width]));\n };\n /**\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.removeEventListener();\n //Remove padding\n this.removePadding();\n var cont = this.parent.getContent().querySelector('.e-content');\n removeClass([this.parent.getHeaderContent().querySelector('.e-headercontent')], 'e-headercontent');\n removeClass([cont], 'e-content');\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n //Remove Dom event\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n };\n /**\n * Function to get the scrollbar width of the browser.\n * @return {number}\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\nexport { Scroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { compile } from '@syncfusion/ej2-base';\nimport { getEnumValue } from '@syncfusion/ej2-base';\nimport { CellType } from '../base/enum';\nimport { Property, Collection, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @class */ (function (_super) {\n __extends(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\nexport { AggregateColumn };\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @class */ (function (_super) {\n __extends(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\nexport { AggregateRow };\n","import { Browser, remove, EventHandler, isUndefined, closest, classList, isBlazor } from '@syncfusion/ej2-base';\nimport { parentsUntil } from '../base/util';\nimport * as events from '../base/constant';\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n * @hidden\n */\n function Clipboard(parent) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.contentReady, this.initialEnd, this);\n this.parent.on(events.keyPressed, this.keyDownHandler, this);\n this.parent.on(events.click, this.clickHandler, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.keyPressed, this.keyDownHandler);\n this.parent.off(events.contentReady, this.initialEnd);\n this.parent.off(events.click, this.clickHandler);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.e-rowcell');\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[r].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[r] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[rIdx];\n var mTr = mRows[rIdx];\n isAvail = !fTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[aria-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[rIdx];\n isAvail = frTr.querySelector('[aria-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[c]) : cols[c];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(events.beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.parent.off(events.contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': 'clipboard' }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === 'Left-Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[i] = this.parent.getVisibleColumns()[i].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[selectedIndexes[i]].\n querySelectorAll('.e-rowcell:not(.e-hide)'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[selectedIndexes[i]].querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[i]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[i]].\n querySelectorAll('.e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[i]]\n .querySelectorAll('.e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[i]]\n .querySelectorAll('.e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.querySelectorAll('.e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false,\n };\n this.parent.trigger(events.beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n this.copyContent += this.parent.getColumns()[parseInt(cells[j].getAttribute('aria-colindex'), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[j].classList.contains('e-hide')) {\n if (isBlazor()) {\n if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-check')).length) {\n this.copyContent += true;\n }\n else if ((!cells[j].classList.contains('e-gridchkbox')) &&\n Object.keys(cells[j].querySelectorAll('.e-uncheck')).length) {\n this.copyContent += false;\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n else {\n this.copyContent += cells[j].innerText;\n }\n }\n }\n else {\n this.copyContent += cells[j];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy')) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n * @return {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var isBox = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[i].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[i].rowIndex);\n }\n if (rowCellIndxes[i].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[i].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[i].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length && rowIndexes[rowIndexes.length - 1] - rowIndexes[0] === rowIndexes.length - 1) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\nexport { Clipboard };\n","import { Observer, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport { Row } from '../models/row';\nimport { AriaService } from '../services/aria-service';\nimport { Cell } from '../models/cell';\nimport { CellType } from '../base/enum';\nimport { DataUtil } from '@syncfusion/ej2-data';\nexport var gridObserver = new Observer();\n/**\n * BlazorAction is used for performing Blazor related Grid Actions.\n * @hidden\n */\nvar BlazorAction = /** @class */ (function () {\n function BlazorAction(parent) {\n this.aria = new AriaService();\n this.actionArgs = {};\n this.virtualHeight = 0;\n this.parent = parent;\n this.addEventListener();\n }\n BlazorAction.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('detailclick', this.onDetailRowClick, this);\n this.parent.on('add-delete-success', this.addDeleteSuccess, this);\n this.parent.on('editsuccess', this.editSuccess, this);\n this.parent.on('setvisibility', this.setColumnVisibility, this);\n this.parent.on('offset', this.setServerOffSet, this);\n this.parent.on('updateaction', this.modelChanged, this);\n this.parent.on(events.modelChanged, this.modelChanged, this);\n this.parent.on('group-expand-collapse', this.onGroupClick, this);\n this.parent.on('setcolumnstyles', this.setColVTableWidthAndTranslate, this);\n this.parent.on('refresh-virtual-indices', this.invokeServerDataBind, this);\n this.parent.on('contentcolgroup', this.contentColGroup, this);\n this.parent.on(events.dataSourceModified, this.dataSourceModified, this);\n };\n BlazorAction.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('detailclick', this.onDetailRowClick);\n this.parent.off('add-delete-success', this.addDeleteSuccess);\n this.parent.off('editsuccess', this.editSuccess);\n this.parent.off('setvisibility', this.setColumnVisibility);\n this.parent.off('offset', this.setServerOffSet);\n this.parent.off('updateaction', this.modelChanged);\n this.parent.off(events.modelChanged, this.modelChanged);\n this.parent.off('group-expand-collapse', this.onGroupClick);\n this.parent.off('setcolumnstyles', this.setColVTableWidthAndTranslate);\n this.parent.off('refresh-virtual-indices', this.invokeServerDataBind);\n this.parent.off('contentcolgroup', this.contentColGroup);\n this.parent.off(events.dataSourceModified, this.dataSourceModified);\n };\n BlazorAction.prototype.getModuleName = function () { return 'blazor'; };\n ;\n BlazorAction.prototype.modelChanged = function (args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n };\n BlazorAction.prototype.addDeleteSuccess = function (args) {\n var _this = this;\n var editArgs;\n var action = 'action';\n var data = 'data';\n var index = 'index';\n editArgs = {\n requestType: args.requestType,\n data: args[data],\n action: args[action]\n };\n if (!isNullOrUndefined(args[index])) {\n editArgs[index] = args[index];\n }\n args.promise.then(function (e) { return _this.editSuccess(editArgs); }).catch(function (e) {\n if (isBlazor() && _this.parent.isServerRendered) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[error]) && !isNullOrUndefined(e[error][message])) {\n e[error] = e[error][message];\n }\n }\n _this.parent.trigger(events.actionFailure, ((isBlazor() && e instanceof Array) ? e[0] : e));\n _this.parent.hideSpinner();\n _this.parent.log('actionfailure', { error: e });\n });\n };\n BlazorAction.prototype.editSuccess = function (args) {\n this.parent.renderModule.resetTemplates();\n this.invokeServerDataBind(args);\n };\n BlazorAction.prototype.invokeServerDataBind = function (args) {\n this.actionArgs = args;\n this.parent.currentAction = args;\n this.parent.allowServerDataBinding = true;\n this.parent.serverDataBind();\n this.parent.allowServerDataBinding = false;\n };\n BlazorAction.prototype.onDetailRowClick = function (target) {\n var gObj = this.parent;\n var adaptor = 'interopAdaptor';\n var rIndex = 'rowIndex';\n var invokeMethodAsync = 'invokeMethodAsync';\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var args = {\n uid: uid, classList: target.classList[0], index: tr.getAttribute('aria-rowindex'),\n rowIndex: gObj.getRowsObject().indexOf(rowObj), colSpan: this.parent.getVisibleColumns().length\n };\n gObj[adaptor][invokeMethodAsync]('OnDetailClick', args);\n if (target.classList.contains('e-detailrowcollapse')) {\n var rows = gObj.getRowsObject();\n var rowData = rowObj.data;\n var gridRowId = this.parent.getRowUid('grid-row');\n var len = gObj.groupSettings.columns.length;\n var gridRow = new Row({\n isDataRow: true,\n isExpand: true,\n uid: gridRowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n for (var i = 0; i < len; i++) {\n gridRow.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n rows.splice(args[rIndex] + 1, 0, gridRow);\n gObj.trigger(events.detailDataBound, { data: rowData });\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = true;\n this.aria.setExpand(target, true);\n }\n else {\n gObj.getRowsObject().splice(args[rIndex] + 1, 1);\n gObj.notify(events.detailDataBound, { rows: gObj.getRowsObject() });\n rowObj.isExpand = false;\n this.aria.setExpand(target, false);\n }\n };\n BlazorAction.prototype.setColumnVisibility = function (columns) {\n var visible = {};\n var adaptor = 'interopAdaptor';\n var invokeMethodAsync = 'invokeMethodAsync';\n for (var i = 0; i < columns.length; i++) {\n visible[columns[i].uid] = columns[i].visible;\n }\n this.parent[adaptor][invokeMethodAsync]('setColumnVisibility', { visible: visible });\n };\n BlazorAction.prototype.dataSuccess = function (args) {\n if (this.parent.enableVirtualization && Object.keys(this.actionArgs).length === 0) {\n this.actionArgs.requestType = 'virtualscroll';\n }\n var startIndex = 'startIndex';\n var endIndex = 'endIndex';\n this.actionArgs[startIndex] = args[startIndex];\n this.actionArgs[endIndex] = args[endIndex];\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n if (this.virtualContentModule.activeKey === 'downArrow' || this.virtualContentModule.activeKey === 'upArrow') {\n var row = this.parent.getRowByIndex(this.virtualContentModule.blzRowIndex);\n if (row) {\n this.parent.selectRow(parseInt(row.getAttribute('aria-rowindex'), 10));\n // tslint:disable-next-line:no-any\n row.cells[0].focus({ preventScroll: true });\n }\n }\n this.virtualContentModule.blazorDataLoad = false;\n }\n if (args.foreignColumnsData) {\n var columns = this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (args.foreignColumnsData[columns[i].field]) {\n columns[i].columnData = args.foreignColumnsData[columns[i].field];\n }\n }\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n var agg = [];\n var aggRows = this.parent.aggregates;\n for (var i = 0; i < aggRows.length; i++) {\n var aggRow = aggRows[i];\n for (var j = 0; j < aggRow.columns.length; j++) {\n var aggr = {};\n var type = aggRow.columns[j].type.toString();\n aggr = { type: type.toLowerCase(), field: aggRow.columns[j].field };\n agg.push(aggr);\n }\n }\n var data = void 0;\n var aggrds = void 0;\n var groupedCols = this.parent.groupSettings.columns;\n for (var k = 0; k < groupedCols.length; k++) {\n aggrds = data ? data : args.result;\n data = DataUtil.group(aggrds, groupedCols[k], agg, null, null);\n }\n args.result = data ? data : args.result;\n }\n var rowUid = 'rowUid';\n var offsetTime = 'offsetTime';\n var off = 'offset';\n this.parent[rowUid] = args[rowUid];\n args[off] = Math.sign(args[off]) === 1 ? -Math.abs(args[off]) : Math.abs(args[off]);\n this.parent[offsetTime] = args[off];\n if (this.parent[offsetTime] !== new Date().getTimezoneOffset() / 60) {\n if (this.parent.editSettings.mode !== 'Batch') {\n var action = 'action';\n var rowIndex = 'rowIndex';\n var index = 'index';\n if (this.actionArgs[action] === 'edit') {\n this.setClientOffSet(args, this.actionArgs[rowIndex]);\n }\n else if (this.actionArgs[action] === 'add') {\n this.setClientOffSet(args, this.actionArgs[index]);\n }\n }\n else if (this.parent.editSettings.mode === 'Batch') {\n var changes = 'changes';\n var changedRecords = 'changedRecords';\n var addedRecords = 'addedRecords';\n var keyField = this.parent.getPrimaryKeyFieldNames()[0];\n var batchChanges = this.actionArgs[changes] || { changedRecords: [], addedRecords: [] };\n for (var i = 0; i < batchChanges[changedRecords].length; i++) {\n for (var j = 0; j < args.result.length; j++) {\n if (batchChanges[changedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n for (var i = 0; i < batchChanges[addedRecords].length; i++) {\n for (var j = 0; j < args.result.length; j++) {\n if (batchChanges[addedRecords][i][keyField] === args.result[j][keyField]) {\n this.setClientOffSet(args, j);\n }\n }\n }\n }\n }\n this.parent.renderModule.dataManagerSuccess(args, this.actionArgs);\n this.parent.getMediaColumns();\n if (this.parent.enableVirtualization) {\n this.virtualContentModule = this.parent.contentModule;\n this.setColVTableWidthAndTranslate();\n if (this.parent.groupSettings.columns.length) {\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n }\n }\n this.actionArgs = this.parent.currentAction = {};\n };\n BlazorAction.prototype.removeDisplayNone = function () {\n var renderedContentRows = this.parent.getContentTable().querySelectorAll('tr');\n for (var i = 0; i < renderedContentRows.length; i++) {\n var renderedContentCells = renderedContentRows[i].querySelectorAll('td');\n for (var j = 0; j < renderedContentCells.length; j++) {\n renderedContentCells[j].style.display = '';\n }\n }\n };\n BlazorAction.prototype.setVirtualTrackHeight = function (args) {\n this.virtualHeight = args.VisibleGroupedRowsCount * this.parent.getRowHeight();\n this.virtualContentModule.setVirtualHeight(this.virtualHeight);\n };\n BlazorAction.prototype.setColVTableWidthAndTranslate = function (args) {\n if (this.parent.enableColumnVirtualization && this.virtualContentModule.prevInfo &&\n (JSON.stringify(this.virtualContentModule.currentInfo.columnIndexes) !==\n JSON.stringify(this.virtualContentModule.prevInfo.columnIndexes)) || ((args && args.refresh))) {\n var translateX = this.virtualContentModule.getColumnOffset(this.virtualContentModule.startColIndex - 1);\n var width = this.virtualContentModule.getColumnOffset(this.virtualContentModule.endColIndex - 1) - translateX + '';\n this.virtualContentModule.header.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.virtualEle.setWrapperWidth(width);\n this.virtualContentModule.header.virtualEle.adjustTable(translateX, 0);\n this.parent.getContentTable().parentElement.style.width = width + 'px';\n }\n if (this.dataSourceChanged) {\n this.virtualContentModule.getPanel().firstElementChild.scrollTop = 0;\n this.virtualContentModule.getPanel().firstElementChild.scrollLeft = 0;\n if (this.virtualContentModule.header.virtualEle) {\n this.virtualContentModule.header.virtualEle.adjustTable(0, 0);\n }\n this.parent.getContentTable().parentElement.style.transform = 'translate(0px,0px)';\n this.virtualContentModule.refreshOffsets();\n this.virtualContentModule.refreshVirtualElement();\n this.dataSourceChanged = false;\n }\n };\n BlazorAction.prototype.dataSourceModified = function () {\n this.dataSourceChanged = true;\n };\n BlazorAction.prototype.setClientOffSet = function (args, index) {\n var timeZone = DataUtil.serverTimezoneOffset;\n DataUtil.serverTimezoneOffset = 0;\n args.result[index] = DataUtil.parse.parseJson(JSON.stringify(args.result[index]));\n DataUtil.serverTimezoneOffset = timeZone;\n };\n BlazorAction.prototype.setServerOffSet = function (args) {\n var serverTimeZone = DataUtil.serverTimezoneOffset;\n var offsetTime = 'offsetTime';\n var data = 'data';\n var timeZone = new Date().getTimezoneOffset() / 60 * 2 + this.parent[offsetTime];\n DataUtil.serverTimezoneOffset = timeZone;\n args[data] = DataUtil.parse.parseJson(JSON.stringify(args[data]));\n DataUtil.serverTimezoneOffset = serverTimeZone;\n };\n BlazorAction.prototype.onGroupClick = function (args) {\n var _this = this;\n var adaptor = 'interopAdaptor';\n var content = 'contentModule';\n var invokeMethodAsync = 'invokeMethodAsync';\n var exactTopIndex = 'exactTopIndex';\n args[exactTopIndex] = Math.round((this.parent.element.querySelector('.e-content').scrollTop) / this.parent.getRowHeight());\n var rowHeight = 'rowHeight';\n args[rowHeight] = this.parent.getRowHeight();\n this.parent[adaptor][invokeMethodAsync]('OnGroupExpandClick', args).then(function () {\n _this.parent[content].rowElements = [].slice.call(_this.parent.getContentTable().querySelectorAll('tr.e-row[data-uid]'));\n });\n };\n BlazorAction.prototype.setPersistData = function (args) {\n var gObj = this.parent;\n gObj.mergePersistGridData(args);\n var bulkChanges = 'bulkChanges';\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n gObj.notify('persist-data-changed', {});\n gObj.notify(events.columnVisibilityChanged, gObj.getColumns());\n };\n ;\n BlazorAction.prototype.resetPersistData = function (args) {\n var gObj = this.parent;\n var bulkChanges = 'bulkChanges';\n var parseArgs = JSON.parse(args);\n var persistArgs = { filterSettings: parseArgs.filterSettings,\n groupSettings: parseArgs.groupSettings, pageSettings: parseArgs.pageSettings, sortSettings: parseArgs.sortSettings,\n searchSettings: parseArgs.searchSettings, columns: parseArgs.columns };\n if (!persistArgs.sortSettings.columns) {\n persistArgs.sortSettings.columns = [];\n }\n if (!persistArgs.groupSettings.columns) {\n persistArgs.groupSettings.columns = [];\n }\n if (!persistArgs.pageSettings.currentPage) {\n gObj.pageSettings.currentPage = 1;\n }\n for (var i = 0; i < gObj.columns.length; i++) {\n if (gObj.groupSettings.columns.indexOf(gObj.columns[i].field) > -1) {\n gObj.columns[i].visible = true;\n }\n }\n gObj.mergePersistGridData(persistArgs);\n gObj.notify('persist-data-changed', {});\n if (gObj[bulkChanges].columns) {\n delete gObj[bulkChanges].columns;\n }\n gObj.headerModule.refreshUI();\n for (var i = 0; i < gObj.columns.length; i++) {\n gObj.columns[i].editType = gObj.columns[i].editType.toLowerCase();\n }\n gObj.setProperties({ filterSettings: { columns: [] } }, true);\n };\n BlazorAction.prototype.contentColGroup = function () {\n var gObj = this.parent;\n var contentTable = gObj.getContent().querySelector('.e-table');\n contentTable.insertBefore(contentTable.querySelector(\"#content-\" + gObj.element.id + \"colGroup\"), contentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n var headerTable = gObj.getHeaderContent().querySelector('.e-table');\n headerTable.insertBefore(headerTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), headerTable.querySelector('tbody'));\n }\n if (gObj.getFrozenColumns() !== 0) {\n var movableContentTable = gObj.getContent().querySelector('.e-movablecontent').querySelector('.e-table');\n movableContentTable.insertBefore(movableContentTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), movableContentTable.querySelector('tbody'));\n if (gObj.frozenRows) {\n var movableHeaderTable = gObj.getHeaderContent().querySelector('.e-movableheader').querySelector('.e-table');\n movableHeaderTable.insertBefore(movableHeaderTable.querySelector(\"#\" + gObj.element.id + \"colGroup\"), movableHeaderTable.querySelector('tbody'));\n }\n }\n };\n BlazorAction.prototype.dataFailure = function (args) {\n this.parent.renderModule.dataManagerFailure(args, this.actionArgs);\n this.actionArgs = this.parent.currentAction = {};\n };\n BlazorAction.prototype.destroy = function () {\n this.removeEventListener();\n };\n return BlazorAction;\n}());\nexport { BlazorAction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, ChildProperty, Browser, closest, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getValue, isBlazor, blazorTemplates } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, append, remove, updateBlazorTemplate, classList, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Property, Collection, Complex, Event, NotifyPropertyChanges, L10n } from '@syncfusion/ej2-base';\nimport { EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { createSpinner, hideSpinner, showSpinner, Tooltip } from '@syncfusion/ej2-popups';\nimport { iterateArrayOrObject, prepareColumns, parentsUntil, wrap, templateCompiler, isGroupAdaptive, refreshForeignData } from './util';\nimport { getRowHeight, setColumnIndex, Global, ispercentageWidth, renderMovable, getNumberFormat } from './util';\nimport { setRowElements, resetRowIndex, compareChanges, getCellByColAndRowIndex, performComplexDataOperation } from './util';\nimport * as events from '../base/constant';\nimport { Render } from '../renderer/render';\nimport { RenderType } from './enum';\nimport { RowRenderer } from '../renderer/row-renderer';\nimport { CellRenderer } from '../renderer/cell-renderer';\nimport { CellRendererFactory } from '../services/cell-render-factory';\nimport { ServiceLocator } from '../services/service-locator';\nimport { ValueFormatter } from '../services/value-formatter';\nimport { RendererFactory } from '../services/renderer-factory';\nimport { ColumnWidthService } from '../services/width-controller';\nimport { AriaService } from '../services/aria-service';\nimport { FocusStrategy } from '../services/focus-strategy';\nimport { PageSettings } from '../models/page-settings';\nimport { ColumnChooserSettings } from '../models/column-chooser-settings';\nimport { Selection } from '../actions/selection';\nimport { Search } from '../actions/search';\nimport { ShowHide } from '../actions/show-hide';\nimport { Scroll } from '../actions/scroll';\nimport { Print } from '../actions/print';\nimport { AggregateRow } from '../models/aggregate';\nimport { Clipboard } from '../actions/clipboard';\nimport { gridObserver } from '../actions/blazor-action';\nimport { RowModelGenerator } from '../services/row-model-generator';\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @class */ (function (_super) {\n __extends(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\nexport { SortDescriptor };\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @class */ (function (_super) {\n __extends(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\nexport { SortSettings };\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate = /** @class */ (function (_super) {\n __extends(Predicate, _super);\n function Predicate() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Predicate.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"operator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"matchCase\", void 0);\n __decorate([\n Property(false)\n ], Predicate.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"predicate\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualFilterValue\", void 0);\n __decorate([\n Property({})\n ], Predicate.prototype, \"actualOperator\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"ejpredicate\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"uid\", void 0);\n __decorate([\n Property()\n ], Predicate.prototype, \"isForeignKey\", void 0);\n return Predicate;\n}(ChildProperty));\nexport { Predicate };\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @class */ (function (_super) {\n __extends(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\nexport { InfiniteScrollSettings };\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @class */ (function (_super) {\n __extends(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Predicate)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\nexport { FilterSettings };\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @class */ (function (_super) {\n __extends(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\nexport { SelectionSettings };\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @class */ (function (_super) {\n __extends(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\nexport { SearchSettings };\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @class */ (function (_super) {\n __extends(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\nexport { RowDropSettings };\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @class */ (function (_super) {\n __extends(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\nexport { TextWrapSettings };\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @class */ (function (_super) {\n __extends(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\nexport { ResizeSettings };\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @class */ (function (_super) {\n __extends(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\nexport { GroupSettings };\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @class */ (function (_super) {\n __extends(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\nexport { EditSettings };\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @class */ (function (_super) {\n __extends(Grid, _super);\n /**\n * Constructor for creating the component\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /**\n * Gets the currently visible records of the Grid.\n */\n _this.currentViewData = [];\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n * @return {string}\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n var ignoreOnColumn = ['filter', 'edit', 'filterBarTemplate', 'headerTemplate', 'template',\n 'commandTemplate', 'commands', 'dataSource', 'headerText'];\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[i]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[i]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[val];\n }\n }\n this.pageSettings.template = undefined;\n /* tslint:disable-next-line:no-any */\n if (this.isAngular) {\n /* tslint:disable:no-string-literal */\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n * @return {ModuleDeclaration[]}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n if (isBlazor()) {\n modules.push({ member: 'blazor', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n /* tslint:disable */\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n if (isBlazor() && this.enableVirtualization && this.allowGrouping) {\n var isExpanded = 'isExpanded';\n this[isExpanded] = false;\n }\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No Matches Found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n EndsWith: 'Ends With',\n Contains: 'Contains',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No Matches Found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser dialog',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n /* tslint:enable */\n };\n /**\n * For internal use only - To Initialize the component rendering.\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { role: 'grid' });\n if (isBlazor()) {\n this.renderComplete();\n }\n createSpinner({ target: this.element }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(events.initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n this.trigger(events.load);\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(events.columnsPrepared, {});\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.getMediaColumns();\n setColumnIndex(this.columns);\n }\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n this.showSpinner();\n this.notify(events.initialEnd, {});\n if (isBlazor() && this.isServerRendered) {\n gridObserver.notify(events.componentRendered, { id: this.element.id, grid: this });\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n */\n Grid.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * Manually showed spinner needs to hide by `hideSpinnner`.\n */\n Grid.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().querySelectorAll('.e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[index].hideAtMedia) && (isNullOrUndefined(gcol[index].visible) || gcol[index].visible)) {\n this.pushMediaColumn(gcol[index], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[index] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[index]);\n };\n /**\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[i].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[columnIndex];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.e-gridfooter');\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (!this.enableAdaptiveUI) {\n this.setProperties({ enableAdaptiveUI: true }, true);\n this.notify(events.setFullScreenDialog, {});\n }\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[i].uid].removeListener(this.mediaBindInstance[this.mediaCol[i].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n * @method destroy\n * @return {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.e-gridheader') &&\n gridElement.querySelector('.e-gridcontent') ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(events.destroy, {});\n this.destroyDependentModules();\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[i]]) {\n this[modules[i]] = null;\n }\n }\n if (!(isBlazor() && this.isServerRendered)) {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'none';\n }\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n if (this.isAngular && !this.isFreezeRefresh) {\n this.element = null;\n }\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.e-gridheader') && !gridElement.querySelector('.e-gridcontent'))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * @hidden\n */\n /* tslint:disable-next-line:max-line-length */\n // tslint:disable-next-line:max-func-body-length\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(events.uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(events.uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(events.uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(events.uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(events.uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(events.uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n break;\n case 'toolbar':\n this.notify(events.uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(events.inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(events.uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh || this.getFrozenColumns() || this.frozenRows) {\n if (!(isBlazor() && this.isServerRendered)) {\n this.freezeRefresh();\n }\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(events.modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n /* tslint:disable */\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(events.rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(events.uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(events.uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(events.uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(events.inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(events.inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(events.inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(events.inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(events.inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(events.freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[i]]), this.dataSource[props[i]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[i], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(events.dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(events.beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(events.setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.refresh();\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(events.contentReady, fn_1);\n };\n this.on(events.contentReady, fn_1, this);\n }\n };\n /**\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft = this.getFrozenLeftColumnsCount();\n var frozenRight = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft && !frozenRight) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft || frozenRight)) {\n if ((frozenLeft && !frozenRight) || (frozenRight && !frozenLeft)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft && frozenRight) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().querySelectorAll('.e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[i];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[i].allowReordering || !cols[i].allowSorting || !cols[i].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[count].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[i].columns) {\n this.updateColumnModel(columns[i].columns);\n }\n else {\n this.columnModel.push(columns[i]);\n }\n }\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n /* tslint:disable-next-line:no-any */\n var col = cols[i];\n if (col.freeze === 'Left') {\n col.freezeTable = 'frozen-left';\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = 'frozen-right';\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n /* tslint:disable-next-line:no-any */\n var col = cols[i];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = 'frozen-left';\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = 'frozen-left';\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].columns) {\n this.checkLockColumns(cols[i].columns);\n }\n else if (cols[i].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[i];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getVisibleColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * Gets the header div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n * @param {Element} element - Specifies the Grid header.\n * @return {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n * @return {Element}\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n * @param {Element} element - Specifies the Grid content table.\n * @return {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n * @param {Element} element - Specifies the Grid content.\n * @return {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n * @return {Element}\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n * @param {Element} element - Specifies the Grid header table.\n * @return {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n * @return {Element}\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n * @return {Element}\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName('e-gridfooter')[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n * @return {Element}\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n * @param {Element} element - Specifies the Grid pager.\n * @return {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getRowByIndex = function (index) {\n return this.contentModule.getRowByIndex(index);\n };\n /**\n * Gets a movable tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[index];\n };\n /**\n * Gets all the data rows of the Grid.\n * @return {Element[]}\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n * @param {number} index - Specifies the row index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n * @param {Element}\n * @return RowInfo\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.e-rowcell');\n if (!cell) {\n var row = closest(ele, '.e-row');\n if (!isNullOrUndefined(row)) {\n var rowObj = this.getRowObjectFromUID(row.getAttribute('data-uid'));\n var rowIndex = parseInt(row.getAttribute('aria-rowindex'), 10);\n args = { row: row, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute('aria-colindex'), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.e-row');\n var rowIndex = parseInt(row_1.getAttribute('aria-rowindex'), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[cellIndex].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === 'frozen-left') {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === 'frozen-right') {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[index].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n * @return {Element[]}\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n * @return {Element[]}\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector('tbody'))) {\n return [];\n }\n var tbody = this.isFrozenGrid() ? this.getFrozenLeftContentTbody() : this.getContentTable().querySelector('tbody');\n var rows = [].slice.call(tbody.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody')\n : this.getHeaderTable().querySelector('tbody');\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[i]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[i].classList.contains('e-row') && (!rows[i].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[i].getAttribute(\"aria-rowindex\"))] = rows[i];\n }\n else {\n dRows.push(rows[i]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-movablecontent').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.e-frozencontent').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozenheader').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n * @return {Element[]}\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector('tbody').children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector('tbody').children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var fieldIdx;\n var col;\n var tr;\n var mTr;\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var selectedRow = {};\n var movableSelectedRow = {};\n var rowObjects = this.contentModule.getRows();\n var movableRowObjects = this.contentModule.getMovableRows();\n fieldIdx = this.getColumnIndexByField(field);\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable()) {\n fieldIdx++;\n }\n col = this.getColumnByField(field);\n selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n movableSelectedRow = movableRowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n tr = !isNullOrUndefined(selectedRow) ? this.element.querySelector('[data-uid=' + selectedRow[rowuID] + ']') : null;\n mTr = !isNullOrUndefined(movableSelectedRow) ? this.element.querySelector('[data-uid=' + movableSelectedRow[rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n setValue(field, value, selectedRow[rowData]);\n var td = !isNullOrUndefined(tr[cells][fieldIdx]) ?\n tr[cells][fieldIdx] : mTr[cells][fieldIdx - this.frozenColumns];\n if (!isNullOrUndefined(td)) {\n var sRow = selectedRow[cells][fieldIdx];\n var mRow = void 0;\n if (this.frozenColumns) {\n mRow = movableSelectedRow[cells][fieldIdx - this.frozenColumns];\n }\n cell.refreshTD(td, !isNullOrUndefined(sRow) ? sRow : mRow, selectedRow[rowData], { index: selectedRow[rowIdx] });\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(movableSelectedRow) && !isNullOrUndefined(movableSelectedRow['changes'])) {\n movableSelectedRow['changes'][field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(events.queryCellInfo, {\n cell: td, column: col, data: selectedRow[rowData]\n });\n }\n }\n else {\n return;\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid) {\n var _this = this;\n if (this.isReact) {\n //tslint:disable-next-line:no-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var rowsObj = _this.getRowsObject();\n var indent = _this.getIndentCount();\n var cellIndex = _this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n if (rowsObj[j].isDataRow && !isNullOrUndefined(rowsObj[j].index)) {\n var cell = rowsObj[j][cells][cellIndex];\n var cellRenderer = new CellRenderer(_this, _this.serviceLocator);\n var td = _this.getCellFromIndex(rowsObj[j].index, cellIndex - indent);\n cellRenderer.refreshTD(td, cell, rowsObj[j].data, { index: rowsObj[j][rowIdx] });\n }\n }\n });\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rwdata = 'data';\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var selectedRow;\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row) { return row.isDataRow; });\n }\n selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n if (!isNullOrUndefined(selectedRow) && this.element.querySelectorAll('[data-uid=' + selectedRow[rowuID] + ']').length) {\n selectedRow.changes = rowData;\n refreshForeignData(selectedRow, this.getForeignKeyColumns(), selectedRow.changes);\n rowRenderer.refresh(selectedRow, this.getColumns(), true);\n if (this.aggregates.length > 0) {\n this.notify(events.refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(events.groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n /**\n * Gets a cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[rowIndex] &&\n this.getMovableDataRows()[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[rowIndex] && rows[rowIndex].querySelectorAll('.e-rowcell')[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().querySelectorAll('.e-headercell')[index];\n };\n /**\n * Gets a movable column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().querySelectorAll('.e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().querySelectorAll('.e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n * @param {number} index - Specifies the column index.\n * @return {Element}\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().querySelectorAll('.e-headercell')[index];\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row || isMovable || isFrozenRight) {\n row = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row;\n }\n }\n if (isNullOrUndefined(row) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row = this.rowObject(this.vRows, uid);\n return row;\n }\n return row;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n if (row.uid === uid) {\n return row;\n }\n }\n return null;\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n * @param {string} field - Specifies the column name.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n * @param {string} field - Specifies the column uid.\n * @return {Element}\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n * @param {string} field - Specifies the column name.\n * @return {Column}\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n * @param {string} field - Specifies the column name.\n * @return {number}\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n * @param {string} uid - Specifies the column UID.\n * @return {Column}\n * @blazorType GridColumn\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item, index) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n * @param {string} uid - Specifies the column UID.\n * @return {number}\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n * @param {string} field - Specifies the column name.\n * @return {string}\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets TH index by column uid value.\n * @private\n * @param {string} uid - Specifies the column uid.\n * @return {number}\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n * @private\n * @return {number}\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n * @return {string[]}\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[i];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n * @return {Function}\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n * @private\n * @return {Function}\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n * @return {string[]}\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[k].isPrimaryKey) {\n keys.push(this.columnModel[k].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n * @return {Element[]}\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n * @return {number[]}\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n * @return {number[]}\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n * @return {Object[]}\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n * @return {string[]}\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[i].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n * @return {Data}\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @return {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].columns) {\n this.splitFrozenCount(columns[i].columns);\n }\n else {\n if (columns[i].freeze === 'Right') {\n if (columns[i].visible !== false) {\n this.visibleFrozenRight++;\n }\n ;\n this.frozenRightColumns.push(columns[i]);\n this.frozenRightCount++;\n }\n else if (columns[i].freeze === 'Left') {\n if (columns[i].visible !== false) {\n this.visibleFrozenLeft++;\n }\n ;\n this.frozenLeftColumns.push(columns[i]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[i].visible !== false) {\n this.visibleMovable++;\n }\n ;\n this.movableColumns.push(columns[i]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n * @return {Object}\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[i].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].visible && (columns[i].freeze === 'Left' || columns[i].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getVisibleFrozenCount(cols[i].columns, cnt);\n }\n else {\n if (cols[i].isFrozen && cols[i].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[i].columns) {\n cnt = this.getFrozenCount(cols[i].columns, cnt, index);\n }\n else {\n if (cols[i].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n * @param {number} pageNo - Defines the page number to navigate.\n * @return {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n * @param {string} message - Defines the message to update.\n * @return {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @return {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n * @return {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n * @param {string} field - Defines the column field name to remove sort.\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * Filters grid row by column name with the given options.\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @return {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n * @return {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @return {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n * @return {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @return {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @return {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n * @param {string} searchString - Defines the key.\n * @return {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n * @return {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n * @return {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n * @return {Object}\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @return {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector('colgroup').childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector('colgroup').childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[index].style.width = newWidth;\n contentCol[index].style.width = newWidth;\n }\n else {\n headerCol[index].style.width = width + 'px';\n contentCol[index].style.width = width + 'px';\n }\n _this.notify(events.columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (this.enableColumnVirtualization || this.isAutoGen) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @return {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @return {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n * @return {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e, args) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector('colgroup').childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector('colgroup').childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[i].firstElementChild;\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[j];\n enable ? addClass([ele], 'e-hide') : removeClass([ele], ['e-hide']);\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n * @param {string |string[]} fieldNames - Defines the column names.\n * @return {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[j].field === gCols[i]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[i], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[j].field);\n }\n else {\n sCols[j].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[i]; })[0] : this_1.getColumnByField(gCols[i]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[i] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[i].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(events.initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n this.setProperties({ enableAdaptiveUI: false }, true);\n this.notify(events.setFullScreenDialog, {});\n }\n };\n Grid.prototype.gridRender = function () {\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content = this.createElement('div', { className: 'e-content', attrs: { tabIndex: '-1' } });\n append([content, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content.appendChild(this.createElement('span'));\n append([content, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n * @return {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.querySelectorAll('.e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n * @return {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.querySelectorAll('.e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(events.refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n * @return {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({ opensOn: 'custom', content: '' }, this.element);\n };\n /** @hidden */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var width;\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerDivTag = 'e-gridheader';\n var contentDivTag = 'e-gridcontent';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var td = element;\n var table = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table.querySelector(ele).className = element.className;\n table.querySelector(ele).innerHTML = element.innerHTML;\n width = table.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('aria-describedby')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n if (element.getElementsByClassName('e-headertext').length) {\n this.toolTipObj.content = element.getElementsByClassName('e-headertext')[0].innerText;\n }\n else {\n this.toolTipObj.content = element.innerText;\n }\n this.prevElement = element;\n this.toolTipObj.open(element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /** @hidden */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row = parentsUntil(e.target, 'e-row');\n if ([].slice.call(this.element.querySelectorAll('.e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.querySelectorAll('.e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n else if (row) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[aria-rowindex=\"' + row.getAttribute('aria-rowindex') + '\"]'));\n rows.splice(rows.indexOf(row), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row.getAttribute('aria-selected') != 'true' && rows[i]) {\n rows[i].classList.add('e-frozenhover');\n }\n else if (rows[i]) {\n rows[i].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[i].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n * @hidden\n */\n Grid.prototype.createTable = function (table, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table');\n myTable.className = table.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr');\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n * @hidden\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n /* tslint:disable-next-line:no-any */\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n * @hidden\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n /* tslint:disable-next-line:no-any */\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(events.dataReady, this.dataReady, this);\n this.on(events.contentReady, this.recalcIndentWidth, this);\n this.on(events.headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(events.dataBound, this.dataBoundFunction);\n this.on(events.keyPressed, this.onKeyPressed, this);\n this.on(events.contentReady, this.blazorTemplate, this);\n };\n /**\n * @hidden\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(events.dataReady, this.dataReady);\n this.off(events.contentReady, this.recalcIndentWidth);\n this.off(events.headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(events.dataBound, this.dataBoundFunction);\n this.off(events.keyPressed, this.onKeyPressed);\n };\n Grid.prototype.blazorTemplate = function () {\n if (isBlazor()) {\n if (this.pageSettings.template) {\n updateBlazorTemplate(this.element.id + \"_template\", 'Template', this.pageSettings);\n }\n for (var i = 0; i < this.columnModel.length; i++) {\n if (this.columnModel[i].template) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid, 'Template', this.columnModel[i], false);\n }\n if (this.columnModel[i].headerTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'headerTemplate', 'HeaderTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type == 'FilterBar' && this.columnModel[i].filterTemplate) {\n var fieldName = this.columnModel[i].field;\n var tempID = this.element.id + this.columnModel[i].uid + 'filterTemplate';\n var filteredColumns = this.filterSettings.columns;\n for (var k = 0; k < filteredColumns.length; k++) {\n if (fieldName == filteredColumns[k].field) {\n blazorTemplates[tempID][0][fieldName] = filteredColumns[k].value;\n }\n }\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i], false);\n }\n if (this.filterSettings.type != 'FilterBar' && this.columnModel[i].filterTemplate) {\n updateBlazorTemplate(this.element.id + this.columnModel[i].uid + 'filterTemplate', 'FilterTemplate', this.columnModel[i]);\n }\n }\n if (this.groupSettings.captionTemplate) {\n updateBlazorTemplate(this.element.id + 'captionTemplate', 'CaptionTemplate', this.groupSettings);\n }\n var guid = 'guid';\n for (var k = 0; k < this.aggregates.length; k++) {\n for (var j = 0; j < this.aggregates[k].columns.length; j++) {\n if (this.aggregates[k].columns[j].footerTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'footerTemplate', 'FooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupFooterTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupFooterTemplate', 'GroupFooterTemplate', this.aggregates[k].columns[j]);\n }\n if (this.aggregates[k].columns[j].groupCaptionTemplate) {\n updateBlazorTemplate(this.element.id + this.aggregates[k].columns[j][guid] + 'groupCaptionTemplate', 'GroupCaptionTemplate', this.aggregates[k].columns[j]);\n }\n }\n }\n }\n };\n /**\n * Get current visible data of grid.\n * @return {Object[]}\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n ;\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length && this.currentViewData.records) ?\n this.currentViewData.records : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.querySelectorAll('.e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, 'e-gridcontent') ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell'))) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isBlazor()) {\n var clonedColumn = extend({}, args.column);\n args = { rowData: args.rowData, rowIndex: args.rowIndex,\n cellIndex: args.cellIndex, column: clonedColumn };\n }\n if (isDataRow) {\n this.trigger(events.recordClick, args);\n }\n this.notify(events.click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, 'e-row');\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains('e-editedrow') || tr.classList.contains('e-addedrow'));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, 'e-rowcell') &&\n parentsUntil(e.target, 'e-rowcell').classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(events.recordDoubleClick, args);\n }\n this.notify(events.dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch') {\n this.editModule.saveCell();\n this.notify(events.editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if (gridElement && gridElement.id !== this.element.id) {\n return true;\n }\n return false;\n };\n /**\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[key] === 'object') && !isNullOrUndefined(this[key])) {\n if (Array.isArray(this[key]) && key === 'columns') {\n if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this[key]);\n }\n this.mergeColumns(dataObj[key], this[key]);\n this[key] = dataObj[key];\n }\n else {\n extend(this[key], dataObj[key]);\n }\n }\n else {\n this[key] = dataObj[key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[i].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[i].columns, localCol.columns);\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n else {\n if (isBlazor()) {\n var guid = 'guid';\n storedColumns[i][guid] = localCol[guid];\n storedColumns[i].uid = localCol.uid;\n }\n storedColumns[i] = extend(localCol, storedColumns[i], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false, });\n this.trigger(\"keyPressed\", presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(events.groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n this.focusModule.focusHeader();\n this.focusModule.addOutline();\n }\n }\n if (e.keyCode === 87) { //alt w\n this.focusModule.focusContent();\n this.focusModule.addOutline();\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(events.groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(events.keyPressed, e);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (!(isBlazor() && this.isServerRendered)) {\n setColumnIndex(this.columns);\n }\n this.initForeignColumn();\n this.notify(events.autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.e-table');\n remove(mTbl.querySelector('colgroup'));\n var colGroup = ((this.getHeaderContent()\n .querySelector('.e-movableheader').querySelector('colgroup')).cloneNode(true));\n mTbl.insertBefore(colGroup, mTbl.querySelector('tbody'));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.e-table');\n remove(frTbl.querySelector('colgroup'));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector('colgroup')).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector('tbody'));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n /* tslint:disable-next-line:no-any */\n workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob);\n return null;\n }\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, workbook, isBlob) {\n if (isBlazor()) {\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob);\n return null;\n }\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n * @param {pdfExportProperties} PdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @return {Promise}\n * @blazorType void\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, \n /* tslint:disable-next-line:no-any */\n isMultipleExport, pdfDoc, isBlob) {\n if (isBlazor()) {\n this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob);\n return null;\n }\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n * @param {string} columnName - Defines the column name to group.\n * @return {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n * @return {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n * @return {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n * @param {Element} target - Defines the target element of the grouped row.\n * @return {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n * @return {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n * @param {string} columnName - Defines the column name to ungroup.\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n * @return {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(events.contentReady, refresh);\n };\n this.on(events.contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n * @param {Element} target - Defines the expanded element to collapse.\n * @return {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n * @return {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n * @param {Element} target - Defines the collapsed element to expand.\n * @return {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n * @return {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n * @return {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n * @return {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @return {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @return {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n * @param {string[]} propertyNames - Defines the collection of template name.\n */\n //tslint:disable-next-line:no-any\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n * @return {void}\n */\n Grid.prototype.hideScroll = function () {\n var content = this.getContent().querySelector('.e-content');\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content.scrollHeight <= content.clientHeight) {\n this.scrollModule.removePadding();\n content.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(events.frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n * @param {string} value - Defines the primary key value.\n * @param {Object} value - Defines the row data.\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[pkName] : value;\n for (var i = 0; i < this.getRowsObject().length; i++) {\n var pKvalue = this.getRowsObject()[i].data[pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, this.getRowsObject()[i].data);\n }\n if (pKvalue === value) {\n return this.getRowsObject()[i].index;\n }\n }\n return -1;\n };\n ;\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[i].field) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[i].uid) {\n column = gCols[i];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n * @return {Object[] | Promise}\n\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n /**\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(events.doubleTap, e);\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.e-movablecontent');\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.e-frozencontent');\n };\n /**\n * @hidden\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.e-movableheader');\n };\n /**\n * @hidden\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozenheader');\n };\n /**\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector('tbody').children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector('tbody').children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector('tbody').children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector('tbody').children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector('tbody').children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector('tbody').children)).concat(frozenRigtRows);\n }\n ;\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector('tbody').children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector('tbody').children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n if (row.getAttribute('data-uid') === uid) {\n rowEle = row;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n * @return {Column[]}\n * @blazorType List\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * calculatePageSizeByParentHeight\n\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode == 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') != -1) {\n containerHeight = parseInt(containerHeight) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector(\".e-columnheader\").clientHeight)) {\n height += this.element.querySelector(\".e-columnheader\").clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.querySelectorAll('.e-summaryrow').length; i++) {\n height += this.element.querySelectorAll('.e-summaryrow')[i].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *@param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n *@param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel data in server side.\n * @param {string} url - Pass Url for server side excel export action.\n * @return {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf data in server side.\n * @param {string} url - Pass Url for server side pdf export action.\n * @return {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n var _this = this;\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = state.data;\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n gridModel.filterSettings.columns = JSON.parse(queries).where;\n gridModel.columns.forEach(function (e) {\n var column = grid.getColumnByUid(e.uid);\n if (column) {\n e.headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n e.template = \"true\";\n }\n ;\n if (e.format) {\n e.format = getNumberFormat(_this.getFormat(e.format), e.type, _this.isExcel);\n }\n }\n if (e.columns) {\n _this.setHeaderText(e.columns);\n }\n });\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: \"gridModel\" } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = \"POST\";\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[i].uid);\n columns[i].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[i].template = \"true\";\n }\n ;\n if (columns[i].format) {\n columns[i].format = getNumberFormat(this.getFormat(columns[i].format), columns[i].type, this.isExcel);\n }\n if (columns[i].columns) {\n this.setHeaderText(columns[i].columns);\n }\n }\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} value - Defines the row data.\n\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData,\n };\n this.showSpinner();\n this.notify(events.updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n };\n /**\n * @hidden\n */\n Grid.prototype.renderTemplates = function () {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[portals]);\n this.renderReactTemplates();\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @return {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @return {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = ['addedRecords', 'changedRecords', 'deletedRecords'];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[i]]) {\n compareChanges(this, changes, loopstring[i], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function (e) {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row) {\n var tr = this.getRowElementByUID(row.uid);\n var index = parseInt(tr.getAttribute('aria-rowindex'), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[index];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[keyField] === rowObj[i].data[keyField]; }).length) {\n this_3.deleteRowElement(rowObj[i]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[keyField] === result[i][keyField]) {\n if (e !== result[i]) {\n _this.setRowData(result[i][keyField], result[i]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[i], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().querySelectorAll('.e-row'));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(events.inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody = this.getContentTable().querySelector('tbody');\n if (tbody.querySelector('.e-emptyrow')) {\n var emptyRow = tbody.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.e-movableheader').querySelector('tbody');\n }\n else {\n mTbody = this.getContent().querySelector('.e-movablecontent').querySelector('tbody');\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(events.frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody = this.getHeaderContent().querySelector('tbody');\n }\n else {\n tbody = this.getContent().querySelector('tbody');\n }\n tbody = this.getContent().querySelector('tbody');\n tbody.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row.cells = row.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row);\n };\n /**\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') != -1) {\n height = parseInt(height) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /** @hidden */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /** @hidden */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector('tbody');\n };\n /** @hidden */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody;\n if (cnt) {\n tbody = this.getFrozenRightContent().querySelector('tbody');\n }\n return tbody;\n };\n /** @hidden */\n Grid.prototype.showResponsiveCustomFilter = function () {\n if (this.filterModule) {\n this.filterModule.showCustomFilter();\n }\n };\n /** @hidden */\n Grid.prototype.showResponsiveCustomSort = function () {\n if (this.sortModule) {\n this.sortModule.showCustomFilter();\n }\n };\n var Grid_1;\n __decorate([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate([\n Property('18.4.47')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\nexport { Grid };\n","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}","import arrayWithoutHoles from \"./arrayWithoutHoles\";\nimport iterableToArray from \"./iterableToArray\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray\";\nimport nonIterableSpread from \"./nonIterableSpread\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(n);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray;","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n","'use strict';\n// ECMAScript 6 symbols shim\nvar global = require('./_global');\nvar has = require('./_has');\nvar DESCRIPTORS = require('./_descriptors');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar META = require('./_meta').KEY;\nvar $fails = require('./_fails');\nvar shared = require('./_shared');\nvar setToStringTag = require('./_set-to-string-tag');\nvar uid = require('./_uid');\nvar wks = require('./_wks');\nvar wksExt = require('./_wks-ext');\nvar wksDefine = require('./_wks-define');\nvar enumKeys = require('./_enum-keys');\nvar isArray = require('./_is-array');\nvar anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar toObject = require('./_to-object');\nvar toIObject = require('./_to-iobject');\nvar toPrimitive = require('./_to-primitive');\nvar createDesc = require('./_property-desc');\nvar _create = require('./_object-create');\nvar gOPNExt = require('./_object-gopn-ext');\nvar $GOPD = require('./_object-gopd');\nvar $GOPS = require('./_object-gops');\nvar $DP = require('./_object-dp');\nvar $keys = require('./_object-keys');\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\nvar _stringify = $JSON && $JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function () { return dP(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function (tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, { enumerable: createDesc(0, false) });\n } return setSymbolDesc(it, key, D);\n } return dP(it, key, D);\n};\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n while (l > i) $defineProperty(it, key = keys[i++], P[key]);\n return it;\n};\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n } return result;\n};\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n } return result;\n};\n\n// 19.4.1.1 Symbol([description])\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n var $set = function (value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, { configurable: true, set: $set });\n return wrap(tag);\n };\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n require('./_object-gopn').f = gOPNExt.f = $getOwnPropertyNames;\n require('./_object-pie').f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !require('./_library')) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Symbol: $Symbol });\n\nfor (var es6Symbols = (\n // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n 'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'\n).split(','), j = 0; es6Symbols.length > j;)wks(es6Symbols[j++]);\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) wksDefine(wellKnownSymbols[k++]);\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function (key) {\n return has(SymbolRegistry, key += '')\n ? SymbolRegistry[key]\n : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n for (var key in SymbolRegistry) if (SymbolRegistry[key] === sym) return key;\n },\n useSetter: function () { setter = true; },\n useSimple: function () { setter = false; }\n});\n\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\nvar FAILS_ON_PRIMITIVES = $fails(function () { $GOPS.f(1); });\n\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n});\n\n// 24.3.2 JSON.stringify(value [, replacer [, space]])\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n return _stringify([S]) != '[null]' || _stringify({ a: S }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n while (arguments.length > i) args.push(arguments[i++]);\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n});\n\n// 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || require('./_hide')($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n// 19.4.3.5 Symbol.prototype[@@toStringTag]\nsetToStringTag($Symbol, 'Symbol');\n// 20.2.1.9 Math[@@toStringTag]\nsetToStringTag(Math, 'Math', true);\n// 24.3.3 JSON[@@toStringTag]\nsetToStringTag(global.JSON, 'JSON', true);\n","module.exports = require('./_hide');\n","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n","// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n","// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)\nvar $keys = require('./_object-keys-internal');\nvar hiddenKeys = require('./_enum-bug-keys').concat('length', 'prototype');\n\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return $keys(O, hiddenKeys);\n};\n","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectProto : null;\n};\n","module.exports = function (done, value) {\n return { value: value, done: !!done };\n};\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","var baseToString = require('./_baseToString');\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\nmodule.exports = toString;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","var baseFlatten = require('./_baseFlatten');\n\n/**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\nfunction flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n}\n\nmodule.exports = flatten;\n","var apply = require('./_apply');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max;\n\n/**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\nfunction overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n}\n\nmodule.exports = overRest;\n","/**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\nfunction apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n}\n\nmodule.exports = apply;\n","var baseSetToString = require('./_baseSetToString'),\n shortOut = require('./_shortOut');\n\n/**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar setToString = shortOut(baseSetToString);\n\nmodule.exports = setToString;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","// call something on iterator step with safe closing on error\nvar anObject = require('./_an-object');\nmodule.exports = function (iterator, fn, value, entries) {\n try {\n return entries ? fn(anObject(value)[0], value[1]) : fn(value);\n // 7.4.6 IteratorClose(iterator, completion)\n } catch (e) {\n var ret = iterator['return'];\n if (ret !== undefined) anObject(ret.call(iterator));\n throw e;\n }\n};\n","// check on default Array iterator\nvar Iterators = require('./_iterators');\nvar ITERATOR = require('./_wks')('iterator');\nvar ArrayProto = Array.prototype;\n\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayProto[ITERATOR] === it);\n};\n","'use strict';\nvar global = require('./_global');\nvar core = require('./_core');\nvar dP = require('./_object-dp');\nvar DESCRIPTORS = require('./_descriptors');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (KEY) {\n var C = typeof core[KEY] == 'function' ? core[KEY] : global[KEY];\n if (DESCRIPTORS && C && !C[SPECIES]) dP.f(C, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n};\n","var isObject = require('./_is-object');\nmodule.exports = function (it, TYPE) {\n if (!isObject(it) || it._t !== TYPE) throw TypeError('Incompatible receiver, ' + TYPE + ' required!');\n return it;\n};\n","var ITERATOR = require('./_wks')('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var riter = [7][ITERATOR]();\n riter['return'] = function () { SAFE_CLOSING = true; };\n // eslint-disable-next-line no-throw-literal\n Array.from(riter, function () { throw 2; });\n} catch (e) { /* empty */ }\n\nmodule.exports = function (exec, skipClosing) {\n if (!skipClosing && !SAFE_CLOSING) return false;\n var safe = false;\n try {\n var arr = [7];\n var iter = arr[ITERATOR]();\n iter.next = function () { return { done: safe = true }; };\n arr[ITERATOR] = function () { return iter; };\n exec(arr);\n } catch (e) { /* empty */ }\n return safe;\n};\n","/**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\nfunction arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n}\n\nmodule.exports = arrayEach;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var root = require('./_root');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined;\n\n/**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\nfunction cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n}\n\nmodule.exports = cloneBuffer;\n","/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\nmodule.exports = stubArray;\n","var arrayPush = require('./_arrayPush'),\n getPrototype = require('./_getPrototype'),\n getSymbols = require('./_getSymbols'),\n stubArray = require('./stubArray');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n};\n\nmodule.exports = getSymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\nfunction cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n}\n\nmodule.exports = cloneTypedArray;\n","var baseCreate = require('./_baseCreate'),\n getPrototype = require('./_getPrototype'),\n isPrototype = require('./_isPrototype');\n\n/**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n}\n\nmodule.exports = initCloneObject;\n","var baseIsEqual = require('./_baseIsEqual');\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\nmodule.exports = isEqual;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var baseFlatten = require('./_baseFlatten'),\n baseOrderBy = require('./_baseOrderBy'),\n baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]]\n */\nvar sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n});\n\nmodule.exports = sortBy;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var baseForOwn = require('./_baseForOwn'),\n createBaseEach = require('./_createBaseEach');\n\n/**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\nvar baseEach = createBaseEach(baseForOwn);\n\nmodule.exports = baseEach;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\nfunction uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n}\n\nmodule.exports = uniq;\n","var baseFindIndex = require('./_baseFindIndex'),\n baseIsNaN = require('./_baseIsNaN'),\n strictIndexOf = require('./_strictIndexOf');\n\n/**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n}\n\nmodule.exports = baseIndexOf;\n","var baseUniq = require('./_baseUniq');\n\n/**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\nfunction uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n}\n\nmodule.exports = uniqWith;\n","var arrayMap = require('./_arrayMap'),\n baseIntersection = require('./_baseIntersection'),\n baseRest = require('./_baseRest'),\n castArrayLikeObject = require('./_castArrayLikeObject'),\n last = require('./last');\n\n/**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\nvar intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n});\n\nmodule.exports = intersectionWith;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMin = Math.min;\n\n/**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\nfunction baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseIntersection;\n","var isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\nfunction castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n}\n\nmodule.exports = castArrayLikeObject;\n","/**\n*\n*\tVALIDATE: integer-array\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is an integer array.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2015. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2015.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' ),\n\tisInteger = require( 'validate.io-integer' );\n\n\n// IS INTEGER ARRAY //\n\n/**\n* FUNCTION: isIntegerArray( value )\n*\tValidates if a value is an integer array.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating if a value is an integer array\n*/\nfunction isIntegerArray( value ) {\n\tvar len;\n\tif ( !isArray( value ) ) {\n\t\treturn false;\n\t}\n\tlen = value.length;\n\tif ( !len ) {\n\t\treturn false;\n\t}\n\tfor ( var i = 0; i < len; i++ ) {\n\t\tif ( !isInteger( value[i] ) ) {\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn true;\n} // end FUNCTION isIntegerArray()\n\n\n// EXPORTS //\n\nmodule.exports = isIntegerArray;\n","/**\n*\n*\tVALIDATE: function\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a function.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: isFunction( value )\n*\tValidates if a value is a function.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is a function\n*/\nfunction isFunction( value ) {\n\treturn ( typeof value === 'function' );\n} // end FUNCTION isFunction()\n\n\n// EXPORTS //\n\nmodule.exports = isFunction;\n","var Stack = require('./_Stack'),\n assignMergeValue = require('./_assignMergeValue'),\n baseFor = require('./_baseFor'),\n baseMergeDeep = require('./_baseMergeDeep'),\n isObject = require('./isObject'),\n keysIn = require('./keysIn'),\n safeGet = require('./_safeGet');\n\n/**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n}\n\nmodule.exports = baseMerge;\n","var baseAssignValue = require('./_baseAssignValue'),\n eq = require('./eq');\n\n/**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n}\n\nmodule.exports = assignMergeValue;\n","/**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n}\n\nmodule.exports = safeGet;\n","'use strict';\n\nvar util = require('./util');\n\nmodule.exports = SchemaObject;\n\nfunction SchemaObject(obj) {\n util.copy(obj, this);\n}\n","'use strict';\n\nmodule.exports = function (data, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (node) {\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n if (node === undefined) return;\n if (typeof node == 'number') return isFinite(node) ? '' + node : 'null';\n if (typeof node !== 'object') return JSON.stringify(node);\n\n var i, out;\n if (Array.isArray(node)) {\n out = '[';\n for (i = 0; i < node.length; i++) {\n if (i) out += ',';\n out += stringify(node[i]) || 'null';\n }\n return out + ']';\n }\n\n if (node === null) return 'null';\n\n if (seen.indexOf(node) !== -1) {\n if (cycles) return JSON.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n\n var seenIndex = seen.push(node) - 1;\n var keys = Object.keys(node).sort(cmp && cmp(node));\n out = '';\n for (i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node[key]);\n\n if (!value) continue;\n if (out) out += ',';\n out += JSON.stringify(key) + ':' + value;\n }\n seen.splice(seenIndex, 1);\n return '{' + out + '}';\n })(data);\n};\n","'use strict';\nmodule.exports = function generate_validate(it, $keyword, $ruleType) {\n var out = '';\n var $async = it.schema.$async === true,\n $refKeywords = it.util.schemaHasRulesExcept(it.schema, it.RULES.all, '$ref'),\n $id = it.self._getId(it.schema);\n if (it.opts.strictKeywords) {\n var $unknownKwd = it.util.schemaUnknownRules(it.schema, it.RULES.keywords);\n if ($unknownKwd) {\n var $keywordsMsg = 'unknown keyword: ' + $unknownKwd;\n if (it.opts.strictKeywords === 'log') it.logger.warn($keywordsMsg);\n else throw new Error($keywordsMsg);\n }\n }\n if (it.isTop) {\n out += ' var validate = ';\n if ($async) {\n it.async = true;\n out += 'async ';\n }\n out += 'function(data, dataPath, parentData, parentDataProperty, rootData) { \\'use strict\\'; ';\n if ($id && (it.opts.sourceCode || it.opts.processCode)) {\n out += ' ' + ('/\\*# sourceURL=' + $id + ' */') + ' ';\n }\n }\n if (typeof it.schema == 'boolean' || !($refKeywords || it.schema.$ref)) {\n var $keyword = 'false schema';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n if (it.schema === false) {\n if (it.isTop) {\n $breakOnError = true;\n } else {\n out += ' var ' + ($valid) + ' = false; ';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'false schema') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'boolean schema is false\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n if (it.isTop) {\n if ($async) {\n out += ' return data; ';\n } else {\n out += ' validate.errors = null; return true; ';\n }\n } else {\n out += ' var ' + ($valid) + ' = true; ';\n }\n }\n if (it.isTop) {\n out += ' }; return validate; ';\n }\n return out;\n }\n if (it.isTop) {\n var $top = it.isTop,\n $lvl = it.level = 0,\n $dataLvl = it.dataLevel = 0,\n $data = 'data';\n it.rootId = it.resolve.fullPath(it.self._getId(it.root.schema));\n it.baseId = it.baseId || it.rootId;\n delete it.isTop;\n it.dataPathArr = [undefined];\n if (it.schema.default !== undefined && it.opts.useDefaults && it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored in the schema root';\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n out += ' var vErrors = null; ';\n out += ' var errors = 0; ';\n out += ' if (rootData === undefined) rootData = data; ';\n } else {\n var $lvl = it.level,\n $dataLvl = it.dataLevel,\n $data = 'data' + ($dataLvl || '');\n if ($id) it.baseId = it.resolve.url(it.baseId, $id);\n if ($async && !it.async) throw new Error('async schema in sync schema');\n out += ' var errs_' + ($lvl) + ' = errors;';\n }\n var $valid = 'valid' + $lvl,\n $breakOnError = !it.opts.allErrors,\n $closingBraces1 = '',\n $closingBraces2 = '';\n var $errorKeyword;\n var $typeSchema = it.schema.type,\n $typeIsArray = Array.isArray($typeSchema);\n if ($typeSchema && it.opts.nullable && it.schema.nullable === true) {\n if ($typeIsArray) {\n if ($typeSchema.indexOf('null') == -1) $typeSchema = $typeSchema.concat('null');\n } else if ($typeSchema != 'null') {\n $typeSchema = [$typeSchema, 'null'];\n $typeIsArray = true;\n }\n }\n if ($typeIsArray && $typeSchema.length == 1) {\n $typeSchema = $typeSchema[0];\n $typeIsArray = false;\n }\n if (it.schema.$ref && $refKeywords) {\n if (it.opts.extendRefs == 'fail') {\n throw new Error('$ref: validation keywords used in schema at path \"' + it.errSchemaPath + '\" (see option extendRefs)');\n } else if (it.opts.extendRefs !== true) {\n $refKeywords = false;\n it.logger.warn('$ref: keywords ignored in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n if (it.schema.$comment && it.opts.$comment) {\n out += ' ' + (it.RULES.all.$comment.code(it, '$comment'));\n }\n if ($typeSchema) {\n if (it.opts.coerceTypes) {\n var $coerceToTypes = it.util.coerceToTypes(it.opts.coerceTypes, $typeSchema);\n }\n var $rulesGroup = it.RULES.types[$typeSchema];\n if ($coerceToTypes || $typeIsArray || $rulesGroup === true || ($rulesGroup && !$shouldUseGroup($rulesGroup))) {\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type',\n $method = $typeIsArray ? 'checkDataTypes' : 'checkDataType';\n out += ' if (' + (it.util[$method]($typeSchema, $data, it.opts.strictNumbers, true)) + ') { ';\n if ($coerceToTypes) {\n var $dataType = 'dataType' + $lvl,\n $coerced = 'coerced' + $lvl;\n out += ' var ' + ($dataType) + ' = typeof ' + ($data) + '; ';\n if (it.opts.coerceTypes == 'array') {\n out += ' if (' + ($dataType) + ' == \\'object\\' && Array.isArray(' + ($data) + ')) ' + ($dataType) + ' = \\'array\\'; ';\n }\n out += ' var ' + ($coerced) + ' = undefined; ';\n var $bracesCoercion = '';\n var arr1 = $coerceToTypes;\n if (arr1) {\n var $type, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $type = arr1[$i += 1];\n if ($i) {\n out += ' if (' + ($coerced) + ' === undefined) { ';\n $bracesCoercion += '}';\n }\n if (it.opts.coerceTypes == 'array' && $type != 'array') {\n out += ' if (' + ($dataType) + ' == \\'array\\' && ' + ($data) + '.length == 1) { ' + ($coerced) + ' = ' + ($data) + ' = ' + ($data) + '[0]; ' + ($dataType) + ' = typeof ' + ($data) + '; } ';\n }\n if ($type == 'string') {\n out += ' if (' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\') ' + ($coerced) + ' = \\'\\' + ' + ($data) + '; else if (' + ($data) + ' === null) ' + ($coerced) + ' = \\'\\'; ';\n } else if ($type == 'number' || $type == 'integer') {\n out += ' if (' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' === null || (' + ($dataType) + ' == \\'string\\' && ' + ($data) + ' && ' + ($data) + ' == +' + ($data) + ' ';\n if ($type == 'integer') {\n out += ' && !(' + ($data) + ' % 1)';\n }\n out += ')) ' + ($coerced) + ' = +' + ($data) + '; ';\n } else if ($type == 'boolean') {\n out += ' if (' + ($data) + ' === \\'false\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === null) ' + ($coerced) + ' = false; else if (' + ($data) + ' === \\'true\\' || ' + ($data) + ' === 1) ' + ($coerced) + ' = true; ';\n } else if ($type == 'null') {\n out += ' if (' + ($data) + ' === \\'\\' || ' + ($data) + ' === 0 || ' + ($data) + ' === false) ' + ($coerced) + ' = null; ';\n } else if (it.opts.coerceTypes == 'array' && $type == 'array') {\n out += ' if (' + ($dataType) + ' == \\'string\\' || ' + ($dataType) + ' == \\'number\\' || ' + ($dataType) + ' == \\'boolean\\' || ' + ($data) + ' == null) ' + ($coerced) + ' = [' + ($data) + ']; ';\n }\n }\n }\n out += ' ' + ($bracesCoercion) + ' if (' + ($coerced) + ' === undefined) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' ' + ($data) + ' = ' + ($coerced) + '; ';\n if (!$dataLvl) {\n out += 'if (' + ($parentData) + ' !== undefined)';\n }\n out += ' ' + ($parentData) + '[' + ($parentDataProperty) + '] = ' + ($coerced) + '; } ';\n } else {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n }\n out += ' } ';\n }\n }\n if (it.schema.$ref && !$refKeywords) {\n out += ' ' + (it.RULES.all.$ref.code(it, '$ref')) + ' ';\n if ($breakOnError) {\n out += ' } if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n } else {\n var arr2 = it.RULES;\n if (arr2) {\n var $rulesGroup, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $rulesGroup = arr2[i2 += 1];\n if ($shouldUseGroup($rulesGroup)) {\n if ($rulesGroup.type) {\n out += ' if (' + (it.util.checkDataType($rulesGroup.type, $data, it.opts.strictNumbers)) + ') { ';\n }\n if (it.opts.useDefaults) {\n if ($rulesGroup.type == 'object' && it.schema.properties) {\n var $schema = it.schema.properties,\n $schemaKeys = Object.keys($schema);\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ($sch.default !== undefined) {\n var $passData = $data + it.util.getProperty($propertyKey);\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n } else if ($rulesGroup.type == 'array' && Array.isArray(it.schema.items)) {\n var arr4 = it.schema.items;\n if (arr4) {\n var $sch, $i = -1,\n l4 = arr4.length - 1;\n while ($i < l4) {\n $sch = arr4[$i += 1];\n if ($sch.default !== undefined) {\n var $passData = $data + '[' + $i + ']';\n if (it.compositeRule) {\n if (it.opts.strictDefaults) {\n var $defaultMsg = 'default is ignored for: ' + $passData;\n if (it.opts.strictDefaults === 'log') it.logger.warn($defaultMsg);\n else throw new Error($defaultMsg);\n }\n } else {\n out += ' if (' + ($passData) + ' === undefined ';\n if (it.opts.useDefaults == 'empty') {\n out += ' || ' + ($passData) + ' === null || ' + ($passData) + ' === \\'\\' ';\n }\n out += ' ) ' + ($passData) + ' = ';\n if (it.opts.useDefaults == 'shared') {\n out += ' ' + (it.useDefault($sch.default)) + ' ';\n } else {\n out += ' ' + (JSON.stringify($sch.default)) + ' ';\n }\n out += '; ';\n }\n }\n }\n }\n }\n }\n var arr5 = $rulesGroup.rules;\n if (arr5) {\n var $rule, i5 = -1,\n l5 = arr5.length - 1;\n while (i5 < l5) {\n $rule = arr5[i5 += 1];\n if ($shouldUseRule($rule)) {\n var $code = $rule.code(it, $rule.keyword, $rulesGroup.type);\n if ($code) {\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n $closingBraces1 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces1) + ' ';\n $closingBraces1 = '';\n }\n if ($rulesGroup.type) {\n out += ' } ';\n if ($typeSchema && $typeSchema === $rulesGroup.type && !$coerceToTypes) {\n out += ' else { ';\n var $schemaPath = it.schemaPath + '.type',\n $errSchemaPath = it.errSchemaPath + '/type';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || 'type') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { type: \\'';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ';\n if ($typeIsArray) {\n out += '' + ($typeSchema.join(\",\"));\n } else {\n out += '' + ($typeSchema);\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (errors === ';\n if ($top) {\n out += '0';\n } else {\n out += 'errs_' + ($lvl);\n }\n out += ') { ';\n $closingBraces2 += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces2) + ' ';\n }\n if ($top) {\n if ($async) {\n out += ' if (errors === 0) return data; ';\n out += ' else throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; ';\n out += ' return errors === 0; ';\n }\n out += ' }; return validate;';\n } else {\n out += ' var ' + ($valid) + ' = errors === errs_' + ($lvl) + ';';\n }\n\n function $shouldUseGroup($rulesGroup) {\n var rules = $rulesGroup.rules;\n for (var i = 0; i < rules.length; i++)\n if ($shouldUseRule(rules[i])) return true;\n }\n\n function $shouldUseRule($rule) {\n return it.schema[$rule.keyword] !== undefined || ($rule.implements && $ruleImplementsSomeKeyword($rule));\n }\n\n function $ruleImplementsSomeKeyword($rule) {\n var impl = $rule.implements;\n for (var i = 0; i < impl.length; i++)\n if (it.schema[impl[i]] !== undefined) return true;\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limit(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $isMax = $keyword == 'maximum',\n $exclusiveKeyword = $isMax ? 'exclusiveMaximum' : 'exclusiveMinimum',\n $schemaExcl = it.schema[$exclusiveKeyword],\n $isDataExcl = it.opts.$data && $schemaExcl && $schemaExcl.$data,\n $op = $isMax ? '<' : '>',\n $notOp = $isMax ? '>' : '<',\n $errorKeyword = undefined;\n if (!($isData || typeof $schema == 'number' || $schema === undefined)) {\n throw new Error($keyword + ' must be number');\n }\n if (!($isDataExcl || $schemaExcl === undefined || typeof $schemaExcl == 'number' || typeof $schemaExcl == 'boolean')) {\n throw new Error($exclusiveKeyword + ' must be number or boolean');\n }\n if ($isDataExcl) {\n var $schemaValueExcl = it.util.getData($schemaExcl.$data, $dataLvl, it.dataPathArr),\n $exclusive = 'exclusive' + $lvl,\n $exclType = 'exclType' + $lvl,\n $exclIsNumber = 'exclIsNumber' + $lvl,\n $opExpr = 'op' + $lvl,\n $opStr = '\\' + ' + $opExpr + ' + \\'';\n out += ' var schemaExcl' + ($lvl) + ' = ' + ($schemaValueExcl) + '; ';\n $schemaValueExcl = 'schemaExcl' + $lvl;\n out += ' var ' + ($exclusive) + '; var ' + ($exclType) + ' = typeof ' + ($schemaValueExcl) + '; if (' + ($exclType) + ' != \\'boolean\\' && ' + ($exclType) + ' != \\'undefined\\' && ' + ($exclType) + ' != \\'number\\') { ';\n var $errorKeyword = $exclusiveKeyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_exclusiveLimit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'' + ($exclusiveKeyword) + ' should be boolean\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($exclType) + ' == \\'number\\' ? ( (' + ($exclusive) + ' = ' + ($schemaValue) + ' === undefined || ' + ($schemaValueExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ') ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValueExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) : ( (' + ($exclusive) + ' = ' + ($schemaValueExcl) + ' === true) ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaValue) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { var op' + ($lvl) + ' = ' + ($exclusive) + ' ? \\'' + ($op) + '\\' : \\'' + ($op) + '=\\'; ';\n if ($schema === undefined) {\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaValueExcl;\n $isData = $isDataExcl;\n }\n } else {\n var $exclIsNumber = typeof $schemaExcl == 'number',\n $opStr = $op;\n if ($exclIsNumber && $isData) {\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ( ' + ($schemaValue) + ' === undefined || ' + ($schemaExcl) + ' ' + ($op) + '= ' + ($schemaValue) + ' ? ' + ($data) + ' ' + ($notOp) + '= ' + ($schemaExcl) + ' : ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' ) || ' + ($data) + ' !== ' + ($data) + ') { ';\n } else {\n if ($exclIsNumber && $schema === undefined) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $schemaValue = $schemaExcl;\n $notOp += '=';\n } else {\n if ($exclIsNumber) $schemaValue = Math[$isMax ? 'min' : 'max']($schemaExcl, $schema);\n if ($schemaExcl === ($exclIsNumber ? $schemaValue : true)) {\n $exclusive = true;\n $errorKeyword = $exclusiveKeyword;\n $errSchemaPath = it.errSchemaPath + '/' + $exclusiveKeyword;\n $notOp += '=';\n } else {\n $exclusive = false;\n $opStr += '=';\n }\n }\n var $opExpr = '\\'' + $opStr + '\\'';\n out += ' if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + ' ' + ($notOp) + ' ' + ($schemaValue) + ' || ' + ($data) + ' !== ' + ($data) + ') { ';\n }\n }\n $errorKeyword = $errorKeyword || $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limit') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { comparison: ' + ($opExpr) + ', limit: ' + ($schemaValue) + ', exclusive: ' + ($exclusive) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be ' + ($opStr) + ' ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxItems' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' ' + ($data) + '.length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxItems') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitLength(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxLength' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n if (it.opts.unicode === false) {\n out += ' ' + ($data) + '.length ';\n } else {\n out += ' ucs2length(' + ($data) + ') ';\n }\n out += ' ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitLength') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be ';\n if ($keyword == 'maxLength') {\n out += 'longer';\n } else {\n out += 'shorter';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' characters\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate__limitProperties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $errorKeyword;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n var $op = $keyword == 'maxProperties' ? '>' : '<';\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'number\\') || ';\n }\n out += ' Object.keys(' + ($data) + ').length ' + ($op) + ' ' + ($schemaValue) + ') { ';\n var $errorKeyword = $keyword;\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ($errorKeyword || '_limitProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have ';\n if ($keyword == 'maxProperties') {\n out += 'more';\n } else {\n out += 'fewer';\n }\n out += ' than ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + ($schema);\n }\n out += ' properties\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","// 7.3.20 SpeciesConstructor(O, defaultConstructor)\nvar anObject = require('./_an-object');\nvar aFunction = require('./_a-function');\nvar SPECIES = require('./_wks')('species');\nmodule.exports = function (O, D) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || (S = anObject(C)[SPECIES]) == undefined ? D : aFunction(S);\n};\n","var ctx = require('./_ctx');\nvar invoke = require('./_invoke');\nvar html = require('./_html');\nvar cel = require('./_dom-create');\nvar global = require('./_global');\nvar process = global.process;\nvar setTask = global.setImmediate;\nvar clearTask = global.clearImmediate;\nvar MessageChannel = global.MessageChannel;\nvar Dispatch = global.Dispatch;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar defer, channel, port;\nvar run = function () {\n var id = +this;\n // eslint-disable-next-line no-prototype-builtins\n if (queue.hasOwnProperty(id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\nvar listener = function (event) {\n run.call(event.data);\n};\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!setTask || !clearTask) {\n setTask = function setImmediate(fn) {\n var args = [];\n var i = 1;\n while (arguments.length > i) args.push(arguments[i++]);\n queue[++counter] = function () {\n // eslint-disable-next-line no-new-func\n invoke(typeof fn == 'function' ? fn : Function(fn), args);\n };\n defer(counter);\n return counter;\n };\n clearTask = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (require('./_cof')(process) == 'process') {\n defer = function (id) {\n process.nextTick(ctx(run, id, 1));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(ctx(run, id, 1));\n };\n // Browsers with MessageChannel, includes WebWorkers\n } else if (MessageChannel) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = listener;\n defer = ctx(port.postMessage, port, 1);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (global.addEventListener && typeof postMessage == 'function' && !global.importScripts) {\n defer = function (id) {\n global.postMessage(id + '', '*');\n };\n global.addEventListener('message', listener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in cel('script')) {\n defer = function (id) {\n html.appendChild(cel('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run.call(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(ctx(run, id, 1), 0);\n };\n }\n}\nmodule.exports = {\n set: setTask,\n clear: clearTask\n};\n","module.exports = function (exec) {\n try {\n return { e: false, v: exec() };\n } catch (e) {\n return { e: true, v: e };\n }\n};\n","var anObject = require('./_an-object');\nvar isObject = require('./_is-object');\nvar newPromiseCapability = require('./_new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","module.exports = require(\"core-js/library/fn/object/get-own-property-descriptor\");","module.exports = require(\"core-js/library/fn/symbol/iterator\");","module.exports = require(\"core-js/library/fn/object/create\");","var basePick = require('./_basePick'),\n flatRest = require('./_flatRest');\n\n/**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\nvar pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n});\n\nmodule.exports = pick;\n","var baseKeys = require('./_baseKeys'),\n getTag = require('./_getTag'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLike = require('./isArrayLike'),\n isBuffer = require('./isBuffer'),\n isPrototype = require('./_isPrototype'),\n isTypedArray = require('./isTypedArray');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n setTag = '[object Set]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\nfunction isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n}\n\nmodule.exports = isEmpty;\n","module.exports = require(\"core-js/library/fn/symbol/to-primitive\");","module.exports = require(\"core-js/library/fn/is-iterable\");","module.exports = require(\"core-js/library/fn/object/assign\");","var cloneDeep = require('lodash/cloneDeep')\nvar compare = require('json-schema-compare')\nvar computeLcm = require('compute-lcm')\nvar defaultsDeep = require('lodash/defaultsDeep')\nvar flatten = require('lodash/flatten')\nvar flattenDeep = require('lodash/flattenDeep')\nvar intersection = require('lodash/intersection')\nvar intersectionWith = require('lodash/intersectionWith')\nvar isEqual = require('lodash/isEqual')\nvar isPlainObject = require('lodash/isPlainObject')\nvar pullAll = require('lodash/pullAll')\nvar sortBy = require('lodash/sortBy')\nvar forEach = require('lodash/forEach')\nvar uniq = require('lodash/uniq')\nvar uniqWith = require('lodash/uniqWith')\nvar without = require('lodash/without')\n\nvar withoutArr = (arr, ...rest) => without.apply(null, [arr].concat(flatten(rest)))\nvar isPropertyRelated = (key) => contains(propertyRelated, key)\nvar isItemsRelated = (key) => contains(itemsRelated, key)\nvar contains = (arr, val) => arr.indexOf(val) !== -1\nvar isEmptySchema = (obj) => (!keys(obj).length) && obj !== false && obj !== true\nvar isSchema = (val) => isPlainObject(val) || val === true || val === false\nvar isFalse = (val) => val === false\nvar isTrue = (val) => val === true\nvar schemaResolver = (compacted, key, mergeSchemas) => mergeSchemas(compacted)\nvar stringArray = (values) => sortBy(uniq(flattenDeep(values)))\nvar notUndefined = (val) => val !== undefined\nvar allUniqueKeys = (arr) => uniq(flattenDeep(arr.map(keys)))\n\n// resolvers\nvar first = compacted => compacted[0]\nvar required = compacted => stringArray(compacted)\nvar maximumValue = compacted => Math.max.apply(Math, compacted)\nvar minimumValue = compacted => Math.min.apply(Math, compacted)\nvar uniqueItems = compacted => compacted.some(isTrue)\nvar examples = compacted => uniqWith(flatten(compacted), isEqual)\n\nfunction compareProp(key) {\n return function(a, b) {\n return compare({\n [key]: a\n }, {[key]: b})\n }\n}\n\nfunction getAllOf(schema) {\n if (Array.isArray(schema.allOf)) {\n var allOf = schema.allOf\n delete schema.allOf\n return [schema].concat(allOf.map(function(allSchema) {\n return getAllOf(allSchema)\n }))\n } else {\n return [schema]\n }\n}\n\nfunction getValues(schemas, key) {\n return schemas.map(function(schema) {\n return schema && schema[key]\n })\n}\n\nfunction getItemSchemas(subSchemas, key) {\n return subSchemas.map(function(sub) {\n if (!sub) {\n return\n }\n\n if (Array.isArray(sub.items)) {\n var schemaAtPos = sub.items[key]\n if (isSchema(schemaAtPos)) {\n return schemaAtPos\n } else if (sub.hasOwnProperty('additionalItems')) {\n return sub.additionalItems\n }\n } else {\n return sub.items\n }\n })\n}\n\nfunction tryMergeSchemaGroups(schemaGroups, mergeSchemas) {\n return schemaGroups.map(function(schemas, index) {\n try {\n return mergeSchemas(schemas, index)\n } catch (e) {\n return undefined\n }\n }).filter(notUndefined)\n}\n\nfunction getAdditionalSchemas(subSchemas) {\n return subSchemas.map(function(sub) {\n if (!sub) {\n return\n }\n if (Array.isArray(sub.items)) {\n return sub.additionalItems\n }\n return sub.items\n })\n}\n\nfunction keys(obj) {\n if (isPlainObject(obj) || Array.isArray(obj)) {\n return Object.keys(obj)\n } else {\n return []\n }\n}\n\nfunction getAnyOfCombinations(arrOfArrays, combinations) {\n combinations = combinations || []\n if (!arrOfArrays.length) {\n return combinations\n }\n\n var values = arrOfArrays.slice(0).shift()\n var rest = arrOfArrays.slice(1)\n if (combinations.length) {\n return getAnyOfCombinations(rest, flatten(combinations.map(combination => values.map(item => ([item].concat(combination))))))\n }\n return getAnyOfCombinations(rest, values.map(item => (item)))\n}\n\nfunction mergeWithArray(base, newItems) {\n if (Array.isArray(base)) {\n base.splice.apply(base, [0, 0].concat(newItems))\n return base\n } else {\n return newItems\n }\n}\n\nfunction throwIncompatible(values, paths) {\n var asJSON\n try {\n asJSON = values.map(function(val) {\n return JSON.stringify(val, null, 2)\n }).join('\\n')\n } catch (variable) {\n asJSON = values.join(', ')\n }\n throw new Error('Could not resolve values for path:\"' + paths.join('.') + '\". They are probably incompatible. Values: \\n' + asJSON)\n}\n\nfunction cleanupReturnValue(returnObject) {\n // cleanup empty\n for (var prop in returnObject) {\n if (returnObject.hasOwnProperty(prop) && isEmptySchema(returnObject[prop])) {\n delete returnObject[prop]\n }\n }\n return returnObject\n}\n\nfunction createRequiredSubMerger(mergeSchemas, key, parents) {\n return function(schemas, subKey) {\n if (subKey === undefined) {\n throw new Error('You need to call merger with a key for the property name or index if array.')\n }\n subKey = String(subKey)\n return mergeSchemas(schemas, null, parents.concat(key, subKey))\n }\n}\n\nfunction callGroupResolver(keys, resolverName, schemas, mergeSchemas, options, parents) {\n if (keys.length) {\n var resolver = options.resolvers[resolverName]\n if (!resolver) {\n throw new Error('No resolver found for ' + resolverName)\n }\n\n var compacted = uniqWith(schemas.map(function(schema) {\n return keys.reduce(function(all, key) {\n if (schema[key] !== undefined) {\n all[key] = schema[key]\n }\n return all\n }, {})\n }).filter(notUndefined), compare)\n\n var related = resolverName === 'properties'\n ? propertyRelated\n : itemsRelated\n\n var mergers = related.reduce(function(all, key) {\n if (contains(schemaGroupProps, key)) {\n all[key] = createRequiredSubMerger(mergeSchemas, key, parents)\n } else {\n all[key] = function(schemas) {\n return mergeSchemas(schemas, null, parents.concat(key))\n }\n }\n return all\n }, {})\n\n if (resolverName === 'items') {\n mergers.itemsArray = createRequiredSubMerger(mergeSchemas, 'items', parents)\n mergers.items = function(schemas) {\n return mergeSchemas(schemas, null, parents.concat('items'))\n }\n }\n\n var result = resolver(compacted, parents.concat(resolverName), mergers, options)\n\n if (!isPlainObject(result)) {\n throwIncompatible(compacted, parents.concat(resolverName))\n }\n\n return cleanupReturnValue(result)\n }\n}\n\n// Provide source when array\nfunction mergeSchemaGroup(group, mergeSchemas, source) {\n var allKeys = allUniqueKeys(source || group)\n var extractor = source\n ? getItemSchemas\n : getValues\n return allKeys.reduce(function(all, key) {\n var schemas = extractor(group, key)\n var compacted = uniqWith(schemas.filter(notUndefined), compare)\n all[key] = mergeSchemas(compacted, key)\n return all\n }, source\n ? []\n : {})\n}\n\nfunction removeFalseSchemas(target) {\n forEach(target, function(schema, prop) {\n if (schema === false) {\n delete target[prop]\n }\n })\n}\n\nfunction removeFalseSchemasFromArray(target) {\n forEach(target, function(schema, index) {\n if (schema === false) {\n target.splice(index, 1)\n }\n })\n}\n\nfunction createRequiredMetaArray(arr) {\n return {required: arr}\n}\n\nvar propertyRelated = ['properties', 'patternProperties', 'additionalProperties']\nvar itemsRelated = ['items', 'additionalItems']\nvar schemaGroupProps = ['properties', 'patternProperties', 'definitions', 'dependencies']\nvar schemaArrays = ['anyOf', 'oneOf']\nvar schemaProps = [\n 'additionalProperties',\n 'additionalItems',\n 'contains',\n 'propertyNames',\n 'not',\n 'items'\n]\n\nvar defaultResolvers = {\n type(compacted) {\n if (compacted.some(Array.isArray)) {\n var normalized = compacted.map(function(val) {\n return Array.isArray(val)\n ? val\n : [val]\n })\n var common = intersection.apply(null, normalized)\n\n if (common.length === 1) {\n return common[0]\n } else if (common.length > 1) {\n return uniq(common)\n }\n }\n },\n properties(values, key, mergers, options) {\n // first get rid of all non permitted properties\n if (!options.ignoreAdditionalProperties) {\n values.forEach(function(subSchema) {\n var otherSubSchemas = values.filter(s => s !== subSchema)\n var ownKeys = keys(subSchema.properties)\n var ownPatternKeys = keys(subSchema.patternProperties)\n var ownPatterns = ownPatternKeys.map(k => new RegExp(k))\n otherSubSchemas.forEach(function(other) {\n var allOtherKeys = keys(other.properties)\n var keysMatchingPattern = allOtherKeys.filter(k => ownPatterns.some(pk => pk.test(k)))\n var additionalKeys = withoutArr(allOtherKeys, ownKeys, keysMatchingPattern)\n additionalKeys.forEach(function(key) {\n other.properties[key] = mergers.properties([\n other.properties[key], subSchema.additionalProperties\n ], key)\n })\n })\n })\n\n // remove disallowed patternProperties\n values.forEach(function(subSchema) {\n var otherSubSchemas = values.filter(s => s !== subSchema)\n var ownPatternKeys = keys(subSchema.patternProperties)\n if (subSchema.additionalProperties === false) {\n otherSubSchemas.forEach(function(other) {\n var allOtherPatterns = keys(other.patternProperties)\n var additionalPatternKeys = withoutArr(allOtherPatterns, ownPatternKeys)\n additionalPatternKeys.forEach(key => delete other.patternProperties[key])\n })\n }\n })\n }\n\n var returnObject = {\n additionalProperties: mergers.additionalProperties(values.map(s => s.additionalProperties)),\n patternProperties: mergeSchemaGroup(values.map(s => s.patternProperties), mergers.patternProperties),\n properties: mergeSchemaGroup(values.map(s => s.properties), mergers.properties)\n }\n\n if (returnObject.additionalProperties === false) {\n removeFalseSchemas(returnObject.properties)\n }\n\n return returnObject\n },\n dependencies(compacted, paths, mergeSchemas) {\n var allChildren = allUniqueKeys(compacted)\n\n return allChildren.reduce(function(all, childKey) {\n var childSchemas = getValues(compacted, childKey)\n var innerCompacted = uniqWith(childSchemas.filter(notUndefined), isEqual)\n\n // to support dependencies\n var innerArrays = innerCompacted.filter(Array.isArray)\n\n if (innerArrays.length) {\n if (innerArrays.length === innerCompacted.length) {\n all[childKey] = stringArray(innerCompacted)\n } else {\n var innerSchemas = innerCompacted.filter(isSchema)\n var arrayMetaScheams = innerArrays.map(createRequiredMetaArray)\n all[childKey] = mergeSchemas(innerSchemas.concat(arrayMetaScheams), childKey)\n }\n return all\n }\n\n innerCompacted = uniqWith(innerCompacted, compare)\n\n all[childKey] = mergeSchemas(innerCompacted, childKey)\n return all\n }, {})\n },\n items(values, paths, mergers) {\n var items = values.map(s => s.items)\n var itemsCompacted = items.filter(notUndefined)\n var returnObject = {}\n\n if (itemsCompacted.every(isSchema)) {\n returnObject.items = mergers.items(items)\n } else {\n returnObject.items = mergeSchemaGroup(values, mergers.itemsArray, items)\n }\n\n var schemasAtLastPos\n if (itemsCompacted.every(Array.isArray)) {\n schemasAtLastPos = values.map(s => s.additionalItems)\n } else if (itemsCompacted.some(Array.isArray)) {\n schemasAtLastPos = getAdditionalSchemas(values)\n }\n\n if (schemasAtLastPos) {\n returnObject.additionalItems = mergers.additionalItems(schemasAtLastPos)\n }\n\n if (returnObject.additionalItems === false && Array.isArray(returnObject.items)) {\n removeFalseSchemasFromArray(returnObject.items)\n }\n\n return returnObject\n },\n oneOf(compacted, paths, mergeSchemas) {\n var combinations = getAnyOfCombinations(cloneDeep(compacted))\n var result = tryMergeSchemaGroups(combinations, mergeSchemas)\n var unique = uniqWith(result, compare)\n\n if (unique.length) {\n return unique\n }\n },\n not(compacted) {\n return {anyOf: compacted}\n },\n pattern(compacted, paths, mergeSchemas, options, reportUnresolved) {\n var key = paths.pop()\n reportUnresolved(compacted.map(function(regexp) {\n return {[key]: regexp}\n }))\n },\n multipleOf(compacted) {\n var integers = compacted.slice(0)\n var factor = 1\n while (integers.some(n => !Number.isInteger(n))) {\n integers = integers.map(n => n * 10)\n factor = factor * 10\n }\n return computeLcm(integers) / factor\n },\n enum(compacted) {\n var enums = intersectionWith.apply(null, compacted.concat(isEqual))\n if (enums.length) {\n return sortBy(enums)\n }\n }\n}\n\ndefaultResolvers.$id = first\ndefaultResolvers.$ref = first\ndefaultResolvers.$schema = first\ndefaultResolvers.additionalItems = schemaResolver\ndefaultResolvers.additionalProperties = schemaResolver\ndefaultResolvers.anyOf = defaultResolvers.oneOf\ndefaultResolvers.contains = schemaResolver\ndefaultResolvers.default = first\ndefaultResolvers.definitions = defaultResolvers.dependencies\ndefaultResolvers.description = first\ndefaultResolvers.examples = examples\ndefaultResolvers.exclusiveMaximum = minimumValue\ndefaultResolvers.exclusiveMinimum = maximumValue\ndefaultResolvers.maximum = minimumValue\ndefaultResolvers.maxItems = minimumValue\ndefaultResolvers.maxLength = minimumValue\ndefaultResolvers.maxProperties = minimumValue\ndefaultResolvers.minimum = maximumValue\ndefaultResolvers.minItems = maximumValue\ndefaultResolvers.minLength = maximumValue\ndefaultResolvers.minProperties = maximumValue\ndefaultResolvers.propertyNames = schemaResolver\ndefaultResolvers.required = required\ndefaultResolvers.title = first\ndefaultResolvers.uniqueItems = uniqueItems\n\nfunction merger(rootSchema, options, totalSchemas) {\n totalSchemas = totalSchemas || []\n options = defaultsDeep(options, {\n ignoreAdditionalProperties: false,\n resolvers: defaultResolvers\n })\n\n function mergeSchemas(schemas, base, parents) {\n schemas = cloneDeep(schemas.filter(notUndefined))\n parents = parents || []\n var merged = isPlainObject(base)\n ? base\n : {}\n\n // return undefined, an empty schema\n if (!schemas.length) {\n return\n }\n\n if (schemas.some(isFalse)) {\n return false\n }\n\n if (schemas.every(isTrue)) {\n return true\n }\n\n // there are no false and we don't need the true ones as they accept everything\n schemas = schemas.filter(isPlainObject)\n\n var allKeys = allUniqueKeys(schemas)\n\n if (contains(allKeys, 'allOf')) {\n return merger({\n allOf: schemas\n }, options, totalSchemas)\n }\n\n var propertyKeys = allKeys.filter(isPropertyRelated)\n pullAll(allKeys, propertyKeys)\n\n var itemKeys = allKeys.filter(isItemsRelated)\n pullAll(allKeys, itemKeys)\n\n allKeys.forEach(function(key) {\n var values = getValues(schemas, key)\n var compacted = uniqWith(values.filter(notUndefined), compareProp(key))\n\n // arrayprops like anyOf and oneOf must be merged first, as they contains schemas\n // allOf is treated differently alltogether\n if (compacted.length === 1 && contains(schemaArrays, key)) {\n merged[key] = compacted[0].map(function(schema) {\n return mergeSchemas([schema], schema)\n })\n // prop groups must always be resolved\n } else if (compacted.length === 1 && !contains(schemaGroupProps, key) && !contains(schemaProps, key)) {\n merged[key] = compacted[0]\n } else {\n var resolver = options.resolvers[key] || options.resolvers.defaultResolver\n\n if (!resolver) {\n throw new Error('No resolver found for key ' + key + '. You can provide a resolver for this keyword in the options, or provide a default resolver.')\n }\n\n var merger\n // get custom merger for groups\n if (contains(schemaGroupProps, key) || contains(schemaArrays, key)) {\n merger = createRequiredSubMerger(mergeSchemas, key, parents)\n } else {\n merger = function(schemas) {\n return mergeSchemas(schemas, null, parents.concat(key))\n }\n }\n\n var calledWithArray = false\n merged[key] = resolver(compacted, parents.concat(key), merger, options, function(unresolvedSchemas) {\n calledWithArray = Array.isArray(unresolvedSchemas)\n return addToAllOf(unresolvedSchemas)\n })\n\n if (merged[key] === undefined && !calledWithArray) {\n throwIncompatible(compacted, parents.concat(key))\n } else if (merged[key] === undefined) {\n delete merged[key]\n }\n }\n })\n\n Object.assign(merged, callGroupResolver(propertyKeys, 'properties', schemas, mergeSchemas, options, parents))\n Object.assign(merged, callGroupResolver(itemKeys, 'items', schemas, mergeSchemas, options, parents))\n\n function addToAllOf(unresolvedSchemas) {\n merged.allOf = mergeWithArray(merged.allOf, unresolvedSchemas)\n }\n\n return merged\n }\n\n var allSchemas = flattenDeep(getAllOf(rootSchema))\n var merged = mergeSchemas(allSchemas, rootSchema)\n\n return merged\n}\n\nmerger.options = {\n resolvers: defaultResolvers\n}\n\nmodule.exports = merger\n","require('../../modules/es6.array.fill');\nmodule.exports = require('../../modules/_core').Array.fill;\n","var arrayMap = require('./_arrayMap'),\n copyArray = require('./_copyArray'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol'),\n stringToPath = require('./_stringToPath'),\n toKey = require('./_toKey'),\n toString = require('./toString');\n\n/**\n * Converts `value` to a property path array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Util\n * @param {*} value The value to convert.\n * @returns {Array} Returns the new property path array.\n * @example\n *\n * _.toPath('a.b.c');\n * // => ['a', 'b', 'c']\n *\n * _.toPath('a[0].b.c');\n * // => ['a', '0', 'b', 'c']\n */\nfunction toPath(value) {\n if (isArray(value)) {\n return arrayMap(value, toKey);\n }\n return isSymbol(value) ? [value] : copyArray(stringToPath(toString(value)));\n}\n\nmodule.exports = toPath;\n","'use strict';\n\nvar compileSchema = require('./compile')\n , resolve = require('./compile/resolve')\n , Cache = require('./cache')\n , SchemaObject = require('./compile/schema_obj')\n , stableStringify = require('fast-json-stable-stringify')\n , formats = require('./compile/formats')\n , rules = require('./compile/rules')\n , $dataMetaSchema = require('./data')\n , util = require('./compile/util');\n\nmodule.exports = Ajv;\n\nAjv.prototype.validate = validate;\nAjv.prototype.compile = compile;\nAjv.prototype.addSchema = addSchema;\nAjv.prototype.addMetaSchema = addMetaSchema;\nAjv.prototype.validateSchema = validateSchema;\nAjv.prototype.getSchema = getSchema;\nAjv.prototype.removeSchema = removeSchema;\nAjv.prototype.addFormat = addFormat;\nAjv.prototype.errorsText = errorsText;\n\nAjv.prototype._addSchema = _addSchema;\nAjv.prototype._compile = _compile;\n\nAjv.prototype.compileAsync = require('./compile/async');\nvar customKeyword = require('./keyword');\nAjv.prototype.addKeyword = customKeyword.add;\nAjv.prototype.getKeyword = customKeyword.get;\nAjv.prototype.removeKeyword = customKeyword.remove;\nAjv.prototype.validateKeyword = customKeyword.validate;\n\nvar errorClasses = require('./compile/error_classes');\nAjv.ValidationError = errorClasses.Validation;\nAjv.MissingRefError = errorClasses.MissingRef;\nAjv.$dataMetaSchema = $dataMetaSchema;\n\nvar META_SCHEMA_ID = 'http://json-schema.org/draft-07/schema';\n\nvar META_IGNORE_OPTIONS = [ 'removeAdditional', 'useDefaults', 'coerceTypes', 'strictDefaults' ];\nvar META_SUPPORT_DATA = ['/properties'];\n\n/**\n * Creates validator instance.\n * Usage: `Ajv(opts)`\n * @param {Object} opts optional options\n * @return {Object} ajv instance\n */\nfunction Ajv(opts) {\n if (!(this instanceof Ajv)) return new Ajv(opts);\n opts = this._opts = util.copy(opts) || {};\n setLogger(this);\n this._schemas = {};\n this._refs = {};\n this._fragments = {};\n this._formats = formats(opts.format);\n\n this._cache = opts.cache || new Cache;\n this._loadingSchemas = {};\n this._compilations = [];\n this.RULES = rules();\n this._getId = chooseGetId(opts);\n\n opts.loopRequired = opts.loopRequired || Infinity;\n if (opts.errorDataPath == 'property') opts._errorDataPathProperty = true;\n if (opts.serialize === undefined) opts.serialize = stableStringify;\n this._metaOpts = getMetaSchemaOptions(this);\n\n if (opts.formats) addInitialFormats(this);\n if (opts.keywords) addInitialKeywords(this);\n addDefaultMetaSchema(this);\n if (typeof opts.meta == 'object') this.addMetaSchema(opts.meta);\n if (opts.nullable) this.addKeyword('nullable', {metaSchema: {type: 'boolean'}});\n addInitialSchemas(this);\n}\n\n\n\n/**\n * Validate data using schema\n * Schema will be compiled and cached (using serialized JSON as key. [fast-json-stable-stringify](https://github.com/epoberezkin/fast-json-stable-stringify) is used to serialize.\n * @this Ajv\n * @param {String|Object} schemaKeyRef key, ref or schema object\n * @param {Any} data to be validated\n * @return {Boolean} validation result. Errors from the last validation will be available in `ajv.errors` (and also in compiled schema: `schema.errors`).\n */\nfunction validate(schemaKeyRef, data) {\n var v;\n if (typeof schemaKeyRef == 'string') {\n v = this.getSchema(schemaKeyRef);\n if (!v) throw new Error('no schema with key or ref \"' + schemaKeyRef + '\"');\n } else {\n var schemaObj = this._addSchema(schemaKeyRef);\n v = schemaObj.validate || this._compile(schemaObj);\n }\n\n var valid = v(data);\n if (v.$async !== true) this.errors = v.errors;\n return valid;\n}\n\n\n/**\n * Create validating function for passed schema.\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally to compile meta schemas of custom keywords.\n * @return {Function} validating function\n */\nfunction compile(schema, _meta) {\n var schemaObj = this._addSchema(schema, undefined, _meta);\n return schemaObj.validate || this._compile(schemaObj);\n}\n\n\n/**\n * Adds schema to the instance.\n * @this Ajv\n * @param {Object|Array} schema schema or array of schemas. If array is passed, `key` and other parameters will be ignored.\n * @param {String} key Optional schema key. Can be passed to `validate` method instead of schema object or id/ref. One schema per instance can have empty `id` and `key`.\n * @param {Boolean} _skipValidation true to skip schema validation. Used internally, option validateSchema should be used instead.\n * @param {Boolean} _meta true if schema is a meta-schema. Used internally, addMetaSchema should be used instead.\n * @return {Ajv} this for method chaining\n */\nfunction addSchema(schema, key, _skipValidation, _meta) {\n if (Array.isArray(schema)){\n for (var i=0; i} errors optional array of validation errors, if not passed errors from the instance are used.\n * @param {Object} options optional options with properties `separator` and `dataVar`.\n * @return {String} human readable string with all errors descriptions\n */\nfunction errorsText(errors, options) {\n errors = errors || this.errors;\n if (!errors) return 'No errors';\n options = options || {};\n var separator = options.separator === undefined ? ', ' : options.separator;\n var dataVar = options.dataVar === undefined ? 'data' : options.dataVar;\n\n var text = '';\n for (var i=0; i [2, 1]\n */\nvar union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n});\n\nmodule.exports = union;\n","var hasExcape = /~/\nvar escapeMatcher = /~[01]/g\nfunction escapeReplacer (m) {\n switch (m) {\n case '~1': return '/'\n case '~0': return '~'\n }\n throw new Error('Invalid tilde escape: ' + m)\n}\n\nfunction untilde (str) {\n if (!hasExcape.test(str)) return str\n return str.replace(escapeMatcher, escapeReplacer)\n}\n\nfunction setter (obj, pointer, value) {\n var part\n var hasNextPart\n\n if (pointer[1] === 'constructor' && pointer[2] === 'prototype') return obj\n if (pointer[1] === '__proto__') return obj\n\n for (var p = 1, len = pointer.length; p < len;) {\n part = untilde(pointer[p++])\n hasNextPart = len > p\n\n if (typeof obj[part] === 'undefined') {\n // support setting of /-\n if (Array.isArray(obj) && part === '-') {\n part = obj.length\n }\n\n // support nested objects/array when setting values\n if (hasNextPart) {\n if ((pointer[p] !== '' && pointer[p] < Infinity) || pointer[p] === '-') obj[part] = []\n else obj[part] = {}\n }\n }\n\n if (!hasNextPart) break\n obj = obj[part]\n }\n\n var oldValue = obj[part]\n if (value === undefined) delete obj[part]\n else obj[part] = value\n return oldValue\n}\n\nfunction compilePointer (pointer) {\n if (typeof pointer === 'string') {\n pointer = pointer.split('/')\n if (pointer[0] === '') return pointer\n throw new Error('Invalid JSON pointer.')\n } else if (Array.isArray(pointer)) {\n return pointer\n }\n\n throw new Error('Invalid JSON pointer.')\n}\n\nfunction get (obj, pointer) {\n if (typeof obj !== 'object') throw new Error('Invalid input object.')\n pointer = compilePointer(pointer)\n var len = pointer.length\n if (len === 1) return obj\n\n for (var p = 1; p < len;) {\n obj = obj[untilde(pointer[p++])]\n if (len === p) return obj\n if (typeof obj !== 'object') return undefined\n }\n}\n\nfunction set (obj, pointer, value) {\n if (typeof obj !== 'object') throw new Error('Invalid input object.')\n pointer = compilePointer(pointer)\n if (pointer.length === 0) throw new Error('Invalid JSON pointer for set.')\n return setter(obj, pointer, value)\n}\n\nfunction compile (pointer) {\n var compiled = compilePointer(pointer)\n return {\n get: function (object) {\n return get(object, compiled)\n },\n set: function (object, value) {\n return set(object, compiled, value)\n }\n }\n}\n\nexports.get = get\nexports.set = set\nexports.compile = compile\n","require('../../modules/es7.array.includes');\nmodule.exports = require('../../modules/_core').Array.includes;\n","'use strict';\nmodule.exports = require('./lib/index');\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n * @private\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER, 'role': role, 'aria-checked': 'false' });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n * @private\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n * @private\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label', innerHTML: options.label });\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n * @private\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createBrowserHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses HTML5 history.\n */\nclass BrowserRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n BrowserRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n forceRefresh: PropTypes.bool,\n getUserConfirmation: PropTypes.func,\n keyLength: PropTypes.number\n };\n\n BrowserRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { BrowserRouter as Router }`.\"\n );\n };\n}\n\nexport default BrowserRouter;\n","import React from \"react\";\nimport { Router } from \"react-router\";\nimport { createHashHistory as createHistory } from \"history\";\nimport PropTypes from \"prop-types\";\nimport warning from \"tiny-warning\";\n\n/**\n * The public API for a that uses window.location.hash.\n */\nclass HashRouter extends React.Component {\n history = createHistory(this.props);\n\n render() {\n return ;\n }\n}\n\nif (__DEV__) {\n HashRouter.propTypes = {\n basename: PropTypes.string,\n children: PropTypes.node,\n getUserConfirmation: PropTypes.func,\n hashType: PropTypes.oneOf([\"hashbang\", \"noslash\", \"slash\"])\n };\n\n HashRouter.prototype.componentDidMount = function() {\n warning(\n !this.props.history,\n \" ignores the history prop. To use a custom history, \" +\n \"use `import { Router }` instead of `import { HashRouter as Router }`.\"\n );\n };\n}\n\nexport default HashRouter;\n","import { createLocation } from \"history\";\n\nexport const resolveToLocation = (to, currentLocation) =>\n typeof to === \"function\" ? to(currentLocation) : to;\n\nexport const normalizeToLocation = (to, currentLocation) => {\n return typeof to === \"string\"\n ? createLocation(to, null, null, currentLocation)\n : to;\n};\n","import React from \"react\";\nimport { __RouterContext as RouterContext } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nconst LinkAnchor = forwardRef(\n (\n {\n innerRef, // TODO: deprecate\n navigate,\n onClick,\n ...rest\n },\n forwardedRef\n ) => {\n const { target } = rest;\n\n let props = {\n ...rest,\n onClick: event => {\n try {\n if (onClick) onClick(event);\n } catch (ex) {\n event.preventDefault();\n throw ex;\n }\n\n if (\n !event.defaultPrevented && // onClick prevented default\n event.button === 0 && // ignore everything but left clicks\n (!target || target === \"_self\") && // let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // ignore clicks with modifier keys\n ) {\n event.preventDefault();\n navigate();\n }\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.ref = innerRef;\n }\n\n /* eslint-disable-next-line jsx-a11y/anchor-has-content */\n return ;\n }\n);\n\nif (__DEV__) {\n LinkAnchor.displayName = \"LinkAnchor\";\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nconst Link = forwardRef(\n (\n {\n component = LinkAnchor,\n replace,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const { history } = context;\n\n const location = normalizeToLocation(\n resolveToLocation(to, context.location),\n context.location\n );\n\n const href = location ? history.createHref(location) : \"\";\n const props = {\n ...rest,\n href,\n navigate() {\n const location = resolveToLocation(to, context.location);\n const method = replace ? history.replace : history.push;\n\n method(location);\n }\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return React.createElement(component, props);\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n const toType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n PropTypes.func\n ]);\n const refType = PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.func,\n PropTypes.shape({ current: PropTypes.any })\n ]);\n\n Link.displayName = \"Link\";\n\n Link.propTypes = {\n innerRef: refType,\n onClick: PropTypes.func,\n replace: PropTypes.bool,\n target: PropTypes.string,\n to: toType.isRequired\n };\n}\n\nexport default Link;\n","import React from \"react\";\nimport { __RouterContext as RouterContext, matchPath } from \"react-router\";\nimport PropTypes from \"prop-types\";\nimport invariant from \"tiny-invariant\";\nimport Link from \"./Link.js\";\nimport {\n resolveToLocation,\n normalizeToLocation\n} from \"./utils/locationUtils.js\";\n\n// React 15 compat\nconst forwardRefShim = C => C;\nlet { forwardRef } = React;\nif (typeof forwardRef === \"undefined\") {\n forwardRef = forwardRefShim;\n}\n\nfunction joinClassnames(...classnames) {\n return classnames.filter(i => i).join(\" \");\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nconst NavLink = forwardRef(\n (\n {\n \"aria-current\": ariaCurrent = \"page\",\n activeClassName = \"active\",\n activeStyle,\n className: classNameProp,\n exact,\n isActive: isActiveProp,\n location: locationProp,\n sensitive,\n strict,\n style: styleProp,\n to,\n innerRef, // TODO: deprecate\n ...rest\n },\n forwardedRef\n ) => {\n return (\n \n {context => {\n invariant(context, \"You should not use outside a \");\n\n const currentLocation = locationProp || context.location;\n const toLocation = normalizeToLocation(\n resolveToLocation(to, currentLocation),\n currentLocation\n );\n const { pathname: path } = toLocation;\n // Regex taken from: https://github.com/pillarjs/path-to-regexp/blob/master/index.js#L202\n const escapedPath =\n path && path.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n\n const match = escapedPath\n ? matchPath(currentLocation.pathname, {\n path: escapedPath,\n exact,\n sensitive,\n strict\n })\n : null;\n const isActive = !!(isActiveProp\n ? isActiveProp(match, currentLocation)\n : match);\n\n const className = isActive\n ? joinClassnames(classNameProp, activeClassName)\n : classNameProp;\n const style = isActive ? { ...styleProp, ...activeStyle } : styleProp;\n\n const props = {\n \"aria-current\": (isActive && ariaCurrent) || null,\n className,\n style,\n to: toLocation,\n ...rest\n };\n\n // React 15 compat\n if (forwardRefShim !== forwardRef) {\n props.ref = forwardedRef || innerRef;\n } else {\n props.innerRef = innerRef;\n }\n\n return ;\n }}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n\n const ariaCurrentType = PropTypes.oneOf([\n \"page\",\n \"step\",\n \"location\",\n \"date\",\n \"time\",\n \"true\"\n ]);\n\n NavLink.propTypes = {\n ...Link.propTypes,\n \"aria-current\": ariaCurrentType,\n activeClassName: PropTypes.string,\n activeStyle: PropTypes.object,\n className: PropTypes.string,\n exact: PropTypes.bool,\n isActive: PropTypes.func,\n location: PropTypes.object,\n sensitive: PropTypes.bool,\n strict: PropTypes.bool,\n style: PropTypes.object\n };\n}\n\nexport default NavLink;\n","import _objectSpread from \"@babel/runtime-corejs2/helpers/esm/objectSpread\";\nimport _Object$keys from \"@babel/runtime-corejs2/core-js/object/keys\";\nimport _Array$isArray from \"@babel/runtime-corejs2/core-js/array/is-array\";\nimport _typeof from \"@babel/runtime-corejs2/helpers/esm/typeof\";\nimport _classCallCheck from \"@babel/runtime-corejs2/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime-corejs2/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime-corejs2/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime-corejs2/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime-corejs2/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime-corejs2/helpers/esm/defineProperty\";\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport _pick from \"lodash/pick\";\nimport _get from \"lodash/get\";\nimport _isEmpty from \"lodash/isEmpty\";\nimport { default as DefaultErrorList } from \"./ErrorList\";\nimport { getDefaultFormState, retrieveSchema, shouldRender, toIdSchema, getDefaultRegistry, deepEquals, toPathSchema, isObject } from \"../utils\";\nimport validateFormData, { toErrorList } from \"../validate\";\nimport { mergeObjects } from \"../utils\";\n\nvar Form =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(Form, _Component);\n\n function Form(props) {\n var _this;\n\n _classCallCheck(this, Form);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Form).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"getUsedFormData\", function (formData, fields) {\n //for the case of a single input form\n if (fields.length === 0 && _typeof(formData) !== \"object\") {\n return formData;\n }\n\n var data = _pick(formData, fields);\n\n if (_Array$isArray(formData)) {\n return _Object$keys(data).map(function (key) {\n return data[key];\n });\n }\n\n return data;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"getFieldNames\", function (pathSchema, formData) {\n var getAllPaths = function getAllPaths(_obj) {\n var acc = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var paths = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [\"\"];\n\n _Object$keys(_obj).forEach(function (key) {\n if (_typeof(_obj[key]) === \"object\") {\n var newPaths = paths.map(function (path) {\n return \"\".concat(path, \".\").concat(key);\n }); // If an object is marked with additionalProperties, all its keys are valid\n\n if (_obj[key].__rjsf_additionalProperties && _obj[key].$name !== \"\") {\n acc.push(_obj[key].$name);\n } else {\n getAllPaths(_obj[key], acc, newPaths);\n }\n } else if (key === \"$name\" && _obj[key] !== \"\") {\n paths.forEach(function (path) {\n path = path.replace(/^\\./, \"\");\n\n var formValue = _get(formData, path); // adds path to fieldNames if it points to a value\n // or an empty object/array\n\n\n if (_typeof(formValue) !== \"object\" || _isEmpty(formValue)) {\n acc.push(path);\n }\n });\n }\n });\n\n return acc;\n };\n\n return getAllPaths(pathSchema);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (formData, newErrorSchema) {\n if (isObject(formData) || _Array$isArray(formData)) {\n var newState = _this.getStateFromProps(_this.props, formData);\n\n formData = newState.formData;\n }\n\n var mustValidate = !_this.props.noValidate && _this.props.liveValidate;\n var state = {\n formData: formData\n };\n var newFormData = formData;\n\n if (_this.props.omitExtraData === true && _this.props.liveOmit === true) {\n var retrievedSchema = retrieveSchema(_this.state.schema, _this.state.schema, formData);\n var pathSchema = toPathSchema(retrievedSchema, \"\", _this.state.schema, formData);\n\n var fieldNames = _this.getFieldNames(pathSchema, formData);\n\n newFormData = _this.getUsedFormData(formData, fieldNames);\n state = {\n formData: newFormData\n };\n }\n\n if (mustValidate) {\n var schemaValidation = _this.validate(newFormData);\n\n var errors = schemaValidation.errors;\n var errorSchema = schemaValidation.errorSchema;\n var schemaValidationErrors = errors;\n var schemaValidationErrorSchema = errorSchema;\n\n if (_this.props.extraErrors) {\n errorSchema = mergeObjects(errorSchema, _this.props.extraErrors, !!\"concat arrays\");\n errors = toErrorList(errorSchema);\n }\n\n state = {\n formData: newFormData,\n errors: errors,\n errorSchema: errorSchema,\n schemaValidationErrors: schemaValidationErrors,\n schemaValidationErrorSchema: schemaValidationErrorSchema\n };\n } else if (!_this.props.noValidate && newErrorSchema) {\n var _errorSchema = _this.props.extraErrors ? mergeObjects(newErrorSchema, _this.props.extraErrors, !!\"concat arrays\") : newErrorSchema;\n\n state = {\n formData: newFormData,\n errorSchema: _errorSchema,\n errors: toErrorList(_errorSchema)\n };\n }\n\n _this.setState(state, function () {\n return _this.props.onChange && _this.props.onChange(_this.state);\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n if (_this.props.onBlur) {\n var _this$props;\n\n (_this$props = _this.props).onBlur.apply(_this$props, arguments);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onFocus\", function () {\n if (_this.props.onFocus) {\n var _this$props2;\n\n (_this$props2 = _this.props).onFocus.apply(_this$props2, arguments);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSubmit\", function (event) {\n event.preventDefault();\n\n if (event.target !== event.currentTarget) {\n return;\n }\n\n event.persist();\n var newFormData = _this.state.formData;\n\n if (_this.props.omitExtraData === true) {\n var retrievedSchema = retrieveSchema(_this.state.schema, _this.state.schema, newFormData);\n var pathSchema = toPathSchema(retrievedSchema, \"\", _this.state.schema, newFormData);\n\n var fieldNames = _this.getFieldNames(pathSchema, newFormData);\n\n newFormData = _this.getUsedFormData(newFormData, fieldNames);\n }\n\n if (!_this.props.noValidate) {\n var schemaValidation = _this.validate(newFormData);\n\n var _errors = schemaValidation.errors;\n var _errorSchema2 = schemaValidation.errorSchema;\n var schemaValidationErrors = _errors;\n var schemaValidationErrorSchema = _errorSchema2;\n\n if (_Object$keys(_errors).length > 0) {\n if (_this.props.extraErrors) {\n _errorSchema2 = mergeObjects(_errorSchema2, _this.props.extraErrors, !!\"concat arrays\");\n _errors = toErrorList(_errorSchema2);\n }\n\n _this.setState({\n errors: _errors,\n errorSchema: _errorSchema2,\n schemaValidationErrors: schemaValidationErrors,\n schemaValidationErrorSchema: schemaValidationErrorSchema\n }, function () {\n if (_this.props.onError) {\n _this.props.onError(_errors);\n } else {\n console.error(\"Form validation failed\", _errors);\n }\n });\n\n return;\n }\n }\n\n var errorSchema;\n var errors;\n\n if (_this.props.extraErrors) {\n errorSchema = _this.props.extraErrors;\n errors = toErrorList(errorSchema);\n } else {\n errorSchema = {};\n errors = [];\n }\n\n _this.setState({\n formData: newFormData,\n errors: errors,\n errorSchema: errorSchema\n }, function () {\n if (_this.props.onSubmit) {\n _this.props.onSubmit(_objectSpread({}, _this.state, {\n formData: newFormData,\n status: \"submitted\"\n }), event);\n }\n });\n });\n\n _this.state = _this.getStateFromProps(props, props.formData);\n\n if (_this.props.onChange && !deepEquals(_this.state.formData, _this.props.formData)) {\n _this.props.onChange(_this.state);\n }\n\n _this.formElement = null;\n return _this;\n }\n\n _createClass(Form, [{\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n var nextState = this.getStateFromProps(nextProps, nextProps.formData);\n\n if (!deepEquals(nextState.formData, nextProps.formData) && !deepEquals(nextState.formData, this.state.formData) && this.props.onChange) {\n this.props.onChange(nextState);\n }\n\n this.setState(nextState);\n }\n }, {\n key: \"getStateFromProps\",\n value: function getStateFromProps(props, inputFormData) {\n var state = this.state || {};\n var schema = \"schema\" in props ? props.schema : this.props.schema;\n var uiSchema = \"uiSchema\" in props ? props.uiSchema : this.props.uiSchema;\n var edit = typeof inputFormData !== \"undefined\";\n var liveValidate = \"liveValidate\" in props ? props.liveValidate : this.props.liveValidate;\n var mustValidate = edit && !props.noValidate && liveValidate;\n var rootSchema = schema;\n var formData = getDefaultFormState(schema, inputFormData, rootSchema);\n var retrievedSchema = retrieveSchema(schema, rootSchema, formData);\n var customFormats = props.customFormats;\n var additionalMetaSchemas = props.additionalMetaSchemas;\n\n var getCurrentErrors = function getCurrentErrors() {\n if (props.noValidate) {\n return {\n errors: [],\n errorSchema: {}\n };\n } else if (!props.liveValidate) {\n return {\n errors: state.schemaValidationErrors || [],\n errorSchema: state.schemaValidationErrorSchema || {}\n };\n }\n\n return {\n errors: state.errors || [],\n errorSchema: state.errorSchema || {}\n };\n };\n\n var errors, errorSchema, schemaValidationErrors, schemaValidationErrorSchema;\n\n if (mustValidate) {\n var schemaValidation = this.validate(formData, schema, additionalMetaSchemas, customFormats);\n errors = schemaValidation.errors;\n errorSchema = schemaValidation.errorSchema;\n schemaValidationErrors = errors;\n schemaValidationErrorSchema = errorSchema;\n } else {\n var currentErrors = getCurrentErrors();\n errors = currentErrors.errors;\n errorSchema = currentErrors.errorSchema;\n schemaValidationErrors = state.schemaValidationErrors;\n schemaValidationErrorSchema = state.schemaValidationErrorSchema;\n }\n\n if (props.extraErrors) {\n errorSchema = mergeObjects(errorSchema, props.extraErrors, !!\"concat arrays\");\n errors = toErrorList(errorSchema);\n }\n\n var idSchema = toIdSchema(retrievedSchema, uiSchema[\"ui:rootFieldId\"], rootSchema, formData, props.idPrefix);\n var nextState = {\n schema: schema,\n uiSchema: uiSchema,\n idSchema: idSchema,\n formData: formData,\n edit: edit,\n errors: errors,\n errorSchema: errorSchema,\n additionalMetaSchemas: additionalMetaSchemas\n };\n\n if (schemaValidationErrors) {\n nextState.schemaValidationErrors = schemaValidationErrors;\n nextState.schemaValidationErrorSchema = schemaValidationErrorSchema;\n }\n\n return nextState;\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return shouldRender(this, nextProps, nextState);\n }\n }, {\n key: \"validate\",\n value: function validate(formData) {\n var schema = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.props.schema;\n var additionalMetaSchemas = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.props.additionalMetaSchemas;\n var customFormats = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : this.props.customFormats;\n var _this$props3 = this.props,\n validate = _this$props3.validate,\n transformErrors = _this$props3.transformErrors;\n\n var _this$getRegistry = this.getRegistry(),\n rootSchema = _this$getRegistry.rootSchema;\n\n var resolvedSchema = retrieveSchema(schema, rootSchema, formData);\n return validateFormData(formData, resolvedSchema, validate, transformErrors, additionalMetaSchemas, customFormats);\n }\n }, {\n key: \"renderErrors\",\n value: function renderErrors() {\n var _this$state = this.state,\n errors = _this$state.errors,\n errorSchema = _this$state.errorSchema,\n schema = _this$state.schema,\n uiSchema = _this$state.uiSchema;\n var _this$props4 = this.props,\n ErrorList = _this$props4.ErrorList,\n showErrorList = _this$props4.showErrorList,\n formContext = _this$props4.formContext;\n\n if (errors.length && showErrorList != false) {\n return React.createElement(ErrorList, {\n errors: errors,\n errorSchema: errorSchema,\n schema: schema,\n uiSchema: uiSchema,\n formContext: formContext\n });\n }\n\n return null;\n }\n }, {\n key: \"getRegistry\",\n value: function getRegistry() {\n // For BC, accept passed SchemaField and TitleField props and pass them to\n // the \"fields\" registry one.\n var _getDefaultRegistry = getDefaultRegistry(),\n fields = _getDefaultRegistry.fields,\n widgets = _getDefaultRegistry.widgets;\n\n return {\n fields: _objectSpread({}, fields, this.props.fields),\n widgets: _objectSpread({}, widgets, this.props.widgets),\n ArrayFieldTemplate: this.props.ArrayFieldTemplate,\n ObjectFieldTemplate: this.props.ObjectFieldTemplate,\n FieldTemplate: this.props.FieldTemplate,\n definitions: this.props.schema.definitions || {},\n rootSchema: this.props.schema,\n formContext: this.props.formContext || {}\n };\n }\n }, {\n key: \"submit\",\n value: function submit() {\n if (this.formElement) {\n this.formElement.dispatchEvent(new CustomEvent(\"submit\", {\n cancelable: true\n }));\n }\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props5 = this.props,\n children = _this$props5.children,\n id = _this$props5.id,\n idPrefix = _this$props5.idPrefix,\n className = _this$props5.className,\n tagName = _this$props5.tagName,\n name = _this$props5.name,\n method = _this$props5.method,\n target = _this$props5.target,\n action = _this$props5.action,\n deprecatedAutocomplete = _this$props5.autocomplete,\n currentAutoComplete = _this$props5.autoComplete,\n enctype = _this$props5.enctype,\n acceptcharset = _this$props5.acceptcharset,\n noHtml5Validate = _this$props5.noHtml5Validate,\n disabled = _this$props5.disabled,\n formContext = _this$props5.formContext;\n var _this$state2 = this.state,\n schema = _this$state2.schema,\n uiSchema = _this$state2.uiSchema,\n formData = _this$state2.formData,\n errorSchema = _this$state2.errorSchema,\n idSchema = _this$state2.idSchema;\n var registry = this.getRegistry();\n var _SchemaField = registry.fields.SchemaField;\n var FormTag = tagName ? tagName : \"form\";\n\n if (deprecatedAutocomplete) {\n console.warn(\"Using autocomplete property of Form is deprecated, use autoComplete instead.\");\n }\n\n var autoComplete = currentAutoComplete ? currentAutoComplete : deprecatedAutocomplete;\n return React.createElement(FormTag, {\n className: className ? className : \"rjsf\",\n id: id,\n name: name,\n method: method,\n target: target,\n action: action,\n autoComplete: autoComplete,\n encType: enctype,\n acceptCharset: acceptcharset,\n noValidate: noHtml5Validate,\n onSubmit: this.onSubmit,\n ref: function ref(form) {\n _this2.formElement = form;\n }\n }, this.renderErrors(), React.createElement(_SchemaField, {\n schema: schema,\n uiSchema: uiSchema,\n errorSchema: errorSchema,\n idSchema: idSchema,\n idPrefix: idPrefix,\n formContext: formContext,\n formData: formData,\n onChange: this.onChange,\n onBlur: this.onBlur,\n onFocus: this.onFocus,\n registry: registry,\n disabled: disabled\n }), children ? children : React.createElement(\"div\", null, React.createElement(\"button\", {\n type: \"submit\",\n className: \"btn btn-info\"\n }, \"Submit\")));\n }\n }]);\n\n return Form;\n}(Component);\n\n_defineProperty(Form, \"defaultProps\", {\n uiSchema: {},\n noValidate: false,\n liveValidate: false,\n disabled: false,\n noHtml5Validate: false,\n ErrorList: DefaultErrorList,\n omitExtraData: false\n});\n\nexport { Form as default };\n\nif (process.env.NODE_ENV !== \"production\") {\n Form.propTypes = {\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.object,\n formData: PropTypes.any,\n widgets: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object])),\n fields: PropTypes.objectOf(PropTypes.elementType),\n ArrayFieldTemplate: PropTypes.elementType,\n ObjectFieldTemplate: PropTypes.elementType,\n FieldTemplate: PropTypes.elementType,\n ErrorList: PropTypes.func,\n onChange: PropTypes.func,\n onError: PropTypes.func,\n showErrorList: PropTypes.bool,\n onSubmit: PropTypes.func,\n id: PropTypes.string,\n className: PropTypes.string,\n tagName: PropTypes.elementType,\n name: PropTypes.string,\n method: PropTypes.string,\n target: PropTypes.string,\n action: PropTypes.string,\n autocomplete: PropTypes.string,\n autoComplete: PropTypes.string,\n enctype: PropTypes.string,\n acceptcharset: PropTypes.string,\n noValidate: PropTypes.bool,\n noHtml5Validate: PropTypes.bool,\n liveValidate: PropTypes.bool,\n validate: PropTypes.func,\n transformErrors: PropTypes.func,\n formContext: PropTypes.object,\n customFormats: PropTypes.object,\n additionalMetaSchemas: PropTypes.arrayOf(PropTypes.object),\n omitExtraData: PropTypes.bool,\n extraErrors: PropTypes.object\n };\n}","import React from \"react\";\nexport default function ErrorList(props) {\n var errors = props.errors;\n return React.createElement(\"div\", {\n className: \"panel panel-danger errors\"\n }, React.createElement(\"div\", {\n className: \"panel-heading\"\n }, React.createElement(\"h3\", {\n className: \"panel-title\"\n }, \"Errors\")), React.createElement(\"ul\", {\n className: \"list-group\"\n }, errors.map(function (error, i) {\n return React.createElement(\"li\", {\n key: i,\n className: \"list-group-item text-danger\"\n }, error.stack);\n })));\n}","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport _objectSpread from \"@babel/runtime-corejs2/helpers/esm/objectSpread\";\nimport _objectWithoutProperties from \"@babel/runtime-corejs2/helpers/esm/objectWithoutProperties\";\nimport React, { forwardRef } from \"react\";\nimport PropTypes from \"prop-types\";\nimport Form from \"./\";\n\nfunction withTheme(themeProps) {\n return forwardRef(function (_ref, ref) {\n var fields = _ref.fields,\n widgets = _ref.widgets,\n directProps = _objectWithoutProperties(_ref, [\"fields\", \"widgets\"]);\n\n fields = _objectSpread({}, themeProps.fields, fields);\n widgets = _objectSpread({}, themeProps.widgets, widgets);\n return React.createElement(Form, _extends({}, themeProps, directProps, {\n fields: fields,\n widgets: widgets,\n ref: ref\n }));\n });\n}\n\nwithTheme.propTypes = {\n widgets: PropTypes.object,\n fields: PropTypes.object\n};\nexport default withTheme;","import Form from \"./components/Form\";\nimport withTheme from \"./withTheme\";\nimport * as utils from \"./utils\";\nexport { withTheme, utils };\nexport default Form;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\n/**\n * Accumulation charts base file\n */\nimport { Animation, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { stringToNumber, ChartLocation, degreeToLocation, getAnimationFunction, getElement } from '../../common/utils/helper';\nimport { Rect } from '@syncfusion/ej2-svg-base';\nimport { animationComplete } from '../../common/model/constants';\nimport { AccumulationBase } from './accumulation-base';\n/**\n * PieBase class used to do pie base calculations.\n */\nvar PieBase = /** @class */ (function (_super) {\n __extends(PieBase, _super);\n function PieBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To initialize the property values.\n * @private\n */\n PieBase.prototype.initProperties = function (chart, series) {\n this.accumulation = chart;\n this.size = Math.min(chart.initialClipRect.width, chart.initialClipRect.height);\n this.initAngles(series);\n var r = parseInt(series.radius, 10);\n if ((series.radius.indexOf('%') !== -1 || typeof r === 'number') && !isNaN(r)) {\n this.isRadiusMapped = false;\n this.radius = stringToNumber(series.radius, this.size / 2);\n this.innerRadius = stringToNumber(series.innerRadius, this.radius);\n this.labelRadius = series.dataLabel.position === 'Inside' ? (((this.radius - this.innerRadius) / 2) + this.innerRadius) :\n (this.radius + stringToNumber(series.dataLabel.connectorStyle.length || '4%', this.size / 2));\n }\n else {\n var radiusCollection = [];\n this.isRadiusMapped = true;\n for (var i = 0; i < Object.keys(series.points).length; i++) {\n if (series.points[i].sliceRadius.indexOf('%') !== -1) {\n radiusCollection[i] = stringToNumber(series.points[i].sliceRadius, this.size / 2);\n }\n else {\n radiusCollection[i] = parseInt(series.points[i].sliceRadius, 10);\n }\n }\n var minRadius = Math.min.apply(null, radiusCollection);\n var maxRadius = Math.max.apply(null, radiusCollection);\n this.radius = this.seriesRadius = maxRadius;\n this.innerRadius = stringToNumber(series.innerRadius, this.seriesRadius);\n this.innerRadius = this.innerRadius > minRadius ? (this.innerRadius / 2) : this.innerRadius;\n }\n // this.radius = stringToNumber(series.radius, size / 2);\n // this.innerRadius = stringToNumber(series.innerRadius, this.radius);\n // this.labelRadius = series.dataLabel.position === 'Inside' ? (((this.radius - this.innerRadius) / 2) + this.innerRadius) :\n // (this.radius + stringToNumber(series.dataLabel.connectorStyle.length || '4%', size / 2));\n chart.explodeDistance = series.explode ? stringToNumber(series.explodeOffset, this.radius) : 0;\n this.findCenter(chart, series);\n this.defaultLabelBound(series, series.dataLabel.visible, series.dataLabel.position);\n this.totalAngle -= 0.001;\n };\n /*\n * To get label radius of the pie.\n * @private\n */\n PieBase.prototype.getLabelRadius = function (series, point) {\n return series.dataLabel.position === 'Inside' ?\n ((((stringToNumber(point.sliceRadius, this.radius) - this.innerRadius)) / 2) + this.innerRadius) :\n (stringToNumber(point.sliceRadius, this.seriesRadius) + stringToNumber(series.dataLabel.connectorStyle.length || '4%', this.size / 2));\n };\n /**\n * To find the center of the accumulation.\n * @private\n */\n PieBase.prototype.findCenter = function (accumulation, series) {\n this.accumulation = accumulation;\n this.center = {\n x: stringToNumber(accumulation.center.x, accumulation.initialClipRect.width) + (accumulation.initialClipRect.x),\n y: stringToNumber(accumulation.center.y, accumulation.initialClipRect.height) + (accumulation.initialClipRect.y)\n };\n var accumulationRect = this.getSeriesBound(series);\n var accumulationRectCenter = new ChartLocation(accumulationRect.x + accumulationRect.width / 2, accumulationRect.y + accumulationRect.height / 2);\n this.center.x += (this.center.x - accumulationRectCenter.x);\n this.center.y += (this.center.y - accumulationRectCenter.y);\n this.accumulation.origin = this.center;\n };\n /**\n * To find angles from series.\n */\n PieBase.prototype.initAngles = function (series) {\n var endAngle = isNullOrUndefined(series.endAngle) ? series.startAngle : series.endAngle;\n this.totalAngle = (endAngle - series.startAngle) % 360;\n this.startAngle = series.startAngle - 90;\n this.totalAngle = this.totalAngle <= 0 ? (360 + this.totalAngle) : this.totalAngle;\n this.startAngle = (this.startAngle < 0 ? (this.startAngle + 360) : this.startAngle) % 360;\n };\n /**\n * To calculate data-label bound\n * @private\n */\n PieBase.prototype.defaultLabelBound = function (series, visible, position) {\n var accumulationBound = this.getSeriesBound(series);\n series.accumulationBound = accumulationBound;\n series.labelBound = new Rect(accumulationBound.x, accumulationBound.y, accumulationBound.width + accumulationBound.x, accumulationBound.height + accumulationBound.y);\n if (visible && position === 'Outside') {\n series.labelBound = new Rect(Infinity, Infinity, -Infinity, -Infinity);\n }\n };\n /**\n * To calculate series bound\n * @private\n */\n PieBase.prototype.getSeriesBound = function (series) {\n var rect = new Rect(Infinity, Infinity, -Infinity, -Infinity);\n this.initAngles(series);\n var start = this.startAngle;\n var total = this.totalAngle;\n var end = (this.startAngle + total) % 360;\n end = (end === 0) ? 360 : end;\n series.findMaxBounds(rect, this.getRectFromAngle(start));\n series.findMaxBounds(rect, this.getRectFromAngle(end));\n series.findMaxBounds(rect, new Rect(this.center.x, this.center.y, 0, 0));\n var nextQuandrant = (Math.floor(start / 90) * 90 + 90) % 360;\n var lastQuadrant = (Math.floor(end / 90) * 90) % 360;\n lastQuadrant = (lastQuadrant === 0) ? 360 : lastQuadrant;\n if (total >= 90 || lastQuadrant === nextQuandrant) {\n series.findMaxBounds(rect, this.getRectFromAngle(nextQuandrant));\n series.findMaxBounds(rect, this.getRectFromAngle(lastQuadrant));\n }\n if (start === 0 || (start + total >= 360)) {\n series.findMaxBounds(rect, this.getRectFromAngle(0));\n }\n var length = nextQuandrant === lastQuadrant ? 0 : Math.floor(total / 90);\n for (var i = 1; i < length; i++) {\n nextQuandrant = nextQuandrant + 90;\n if ((nextQuandrant < lastQuadrant || end < start) || total === 360) {\n series.findMaxBounds(rect, this.getRectFromAngle(nextQuandrant));\n }\n }\n rect.width -= rect.x;\n rect.height -= rect.y;\n return rect;\n };\n /**\n * To get rect location size from angle\n */\n PieBase.prototype.getRectFromAngle = function (angle) {\n var location = degreeToLocation(angle, this.radius, this.center);\n return new Rect(location.x, location.y, 0, 0);\n };\n /**\n * To get path arc direction\n */\n PieBase.prototype.getPathArc = function (center, start, end, radius, innerRadius) {\n var degree = end - start;\n degree = degree < 0 ? (degree + 360) : degree;\n var flag = (degree < 180) ? 0 : 1;\n if (!innerRadius && innerRadius === 0) {\n return this.getPiePath(center, degreeToLocation(start, radius, center), degreeToLocation(end, radius, center), radius, flag);\n }\n else {\n return this.getDoughnutPath(center, degreeToLocation(start, radius, center), degreeToLocation(end, radius, center), radius, degreeToLocation(start, innerRadius, center), degreeToLocation(end, innerRadius, center), innerRadius, flag);\n }\n };\n /**\n * To get pie direction\n */\n PieBase.prototype.getPiePath = function (center, start, end, radius, clockWise) {\n return 'M ' + center.x + ' ' + center.y + ' L ' + start.x + ' ' + start.y + ' A ' + radius + ' ' +\n radius + ' 0 ' + clockWise + ' 1 ' + end.x + ' ' + end.y + ' Z';\n };\n /**\n * To get doughnut direction\n */\n PieBase.prototype.getDoughnutPath = function (center, start, end, radius, innerStart, innerEnd, innerRadius, clockWise) {\n return 'M ' + start.x + ' ' + start.y + ' A ' + radius + ' ' + radius + ' 0 ' + clockWise +\n ' 1 ' + end.x + ' ' + end.y + ' L ' + innerEnd.x + ' ' + innerEnd.y + ' A ' + innerRadius +\n ' ' + innerRadius + ' 0 ' + clockWise + ',0 ' + innerStart.x + ' ' + innerStart.y + ' Z';\n };\n /**\n * Method to start animation for pie series.\n */\n PieBase.prototype.doAnimation = function (slice, series) {\n var _this = this;\n var startAngle = series.startAngle - 90;\n var duration = this.accumulation.duration ? this.accumulation.duration : series.animation.duration;\n var value;\n this.center.x += 1;\n var radius = Math.max(this.accumulation.availableSize.height, this.accumulation.availableSize.width) * 0.75;\n radius += radius * (0.414); // formula r + r / 2 * (1.414 -1)\n var effect = getAnimationFunction('Linear'); // need to check animation type\n new Animation({}).animate(slice, {\n duration: duration,\n delay: series.animation.delay,\n progress: function (args) {\n value = effect(args.timeStamp, startAngle, _this.totalAngle, args.duration);\n slice.setAttribute('d', _this.getPathArc(_this.center, startAngle, value, radius, 0));\n },\n end: function (args) {\n _this.center.x -= 1;\n slice.setAttribute('d', _this.getPathArc(_this.center, 0, 359.99999, radius, 0));\n _this.accumulation.trigger(animationComplete, _this.accumulation.isBlazor ? {} :\n { series: series, accumulation: _this.accumulation, chart: _this.accumulation });\n var datalabelGroup = getElement(_this.accumulation.element.id + '_datalabel_Series_' + series.index);\n datalabelGroup.style.visibility = _this.accumulation.isDestroyed ? 'hidden' : 'visible';\n }\n });\n };\n return PieBase;\n}(AccumulationBase));\nexport { PieBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n }\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PathOption } from '@syncfusion/ej2-svg-base';\nimport { degreeToLocation, getElement, linear, stringToNumber, indexFinder } from '../../common/utils/helper';\nimport { PieBase } from '../renderer/pie-base';\nimport { Animation, createElement, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * PieSeries module used to render `Pie` Series.\n */\nvar PieSeries = /** @class */ (function (_super) {\n __extends(PieSeries, _super);\n function PieSeries() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * To get path option, degree, symbolLocation from the point.\n * @private\n */\n PieSeries.prototype.renderPoint = function (point, series, chart, option, seriesGroup, redraw) {\n var sum = series.sumOfPoints;\n point.startAngle = this.startAngle;\n var yValue = point.visible ? point.y : 0;\n var degree = (sum) ? ((Math.abs(yValue) / sum) * (this.totalAngle)) : null;\n var start = Math.PI / 180 * ((90 - (360 - this.startAngle)) - 90);\n this.radius = this.isRadiusMapped ? stringToNumber(point.sliceRadius, this.seriesRadius) : this.radius;\n option.d = this.getPathOption(point, degree, this.startAngle % 360, yValue);\n point.midAngle = (this.startAngle - (degree / 2)) % 360;\n point.endAngle = this.startAngle % 360;\n point.symbolLocation = degreeToLocation(point.midAngle, (this.radius + this.innerRadius) / 2, this.center);\n if (!redraw) {\n seriesGroup.appendChild(chart.renderer.drawPath(option));\n point.degree = degree;\n point.start = start;\n }\n else {\n seriesGroup.appendChild(chart.renderer.drawPath(option));\n this.refresh(point, degree, start, chart, option, seriesGroup);\n }\n };\n PieSeries.prototype.findSeries = function (e) {\n var innerRadius;\n var radius;\n var borderGap = 3; // Gap between pie/doughnut chart and border\n var width = 2; // width of the border\n radius = this.innerRadius === 0 ? this.radius + borderGap : this.innerRadius - borderGap;\n innerRadius = this.innerRadius === 0 ? radius + width : radius - width;\n this.toggleInnerPoint(e, radius, innerRadius);\n };\n PieSeries.prototype.toggleInnerPoint = function (event, radius, innerRadius) {\n var target = event.target;\n var id = indexFinder(target.id, true);\n var accumulationId = event.target.id.substring(0, (event.target.id.indexOf('Series') - 1));\n var borderElement = document.getElementById(this.accumulation.element.id + 'PointHover_Border');\n var createBorderEle;\n var seriesIndex = id.series;\n var pointIndex = id.point;\n var srcElem = getElement(accumulationId + '_Series_' + seriesIndex + '_Point_' + pointIndex);\n if (!isNaN(id.series) && srcElem) {\n if (!isNullOrUndefined(seriesIndex) && !isNaN(seriesIndex) && !isNullOrUndefined(pointIndex) && !isNaN(pointIndex)) {\n var point = this.accumulation.visibleSeries[0].points[pointIndex];\n var opacity = srcElem.getAttribute('class') === accumulationId + '_ej2_deselected' ?\n this.accumulation.tooltip.enable ? 0.5 : 0.3 : this.accumulation.tooltip.enable ? 0.5 : 1;\n var innerPie = this.getPathArc(this.accumulation.pieSeriesModule.center, point.startAngle % 360, (point.startAngle + point.degree) % 360, radius, innerRadius);\n // while using annotation as a chart border will appear in both chart.so changed checked the id with target id\n if ((borderElement) && (accumulationId === this.accumulation.element.id) &&\n (borderElement.getAttribute('d') !== innerPie || point.isExplode)) {\n borderElement.parentNode.removeChild(borderElement);\n borderElement = null;\n }\n var seriousGroup = getElement(accumulationId + '_Series_' + seriesIndex);\n if (!borderElement && ((!point.isExplode) || (point.isExplode && event.type !== 'click'))) {\n var path = new PathOption(accumulationId + 'PointHover_Border', point.color, 1, point.color, opacity, '', innerPie);\n createBorderEle = this.accumulation.renderer.drawPath(path);\n createBorderEle.removeAttribute('transform');\n if (this.accumulation.selectionMode !== 'None' && event.target.hasAttribute('class')) {\n this.accumulation.accumulationSelectionModule.addSvgClass(createBorderEle, event.target.getAttribute('class'));\n }\n seriousGroup.appendChild(createBorderEle);\n if (point.isExplode && createBorderEle) {\n var borderExplode = srcElem.getAttribute('transform');\n createBorderEle.setAttribute('transform', borderExplode);\n }\n }\n }\n }\n else if (borderElement) {\n this.removeBorder(borderElement, 1000);\n borderElement = null;\n }\n };\n PieSeries.prototype.removeBorder = function (borderElement, duration) {\n if (borderElement) {\n setTimeout(function () {\n if (borderElement.parentNode) {\n borderElement.parentNode.removeChild(borderElement);\n }\n }, duration);\n }\n };\n PieSeries.prototype.refresh = function (point, degree, start, chart, option, seriesGroup) {\n var _this = this;\n var seriesElement = getElement(option.id);\n var duration = chart.duration ? chart.duration : 300;\n var currentStartAngle;\n var curentDegree;\n new Animation({}).animate(createElement('div'), {\n duration: duration,\n delay: 0,\n progress: function (args) {\n curentDegree = linear(args.timeStamp, point.degree, (degree - point.degree), args.duration);\n currentStartAngle = linear(args.timeStamp, point.start, start - point.start, args.duration);\n currentStartAngle = ((currentStartAngle / (Math.PI / 180)) + 360) % 360;\n seriesElement.setAttribute('d', _this.getPathOption(point, curentDegree, currentStartAngle, point.y));\n if (point.isExplode) {\n chart.accBaseModule.explodePoints(point.index, chart, true);\n }\n seriesElement.style.visibility = 'visible';\n },\n end: function (args) {\n seriesElement.style.visibility = point.visible ? 'visible' : 'hidden';\n seriesElement.setAttribute('d', option.d);\n point.degree = degree;\n point.start = start;\n }\n });\n };\n /**\n * To get path option from the point.\n */\n PieSeries.prototype.getPathOption = function (point, degree, startAngle, yValue) {\n if (!degree) {\n return '';\n }\n var path = this.getPathArc(this.center, startAngle % 360, (startAngle + degree) % 360, this.isRadiusMapped ? stringToNumber(point.sliceRadius, this.seriesRadius) : this.radius, this.innerRadius);\n //let path: string = this.getPathArc(this.center, startAngle % 360, (startAngle + degree) % 360, this.radius, this.innerRadius);\n this.startAngle += degree;\n return path;\n };\n /**\n * To animate the pie series.\n * @private\n */\n PieSeries.prototype.animateSeries = function (accumulation, option, series, slice) {\n var groupId = accumulation.element.id + 'SeriesGroup' + series.index;\n if (series.animation.enable && accumulation.animateSeries) {\n var clippath = accumulation.renderer.createClipPath({ id: groupId + '_clipPath' });\n var path = new PathOption(groupId + '_slice', 'transparent', 1, 'transparent', 1, '', '');\n var clipslice = accumulation.renderer.drawPath(path);\n clippath.appendChild(clipslice);\n accumulation.svgObject.appendChild(clippath);\n // I263828 pie chart animation issue fixed for safari browser\n slice.setAttribute('style', 'clip-path:url(#' + clippath.id + '); -webkit-clip-path:url(#' + clippath.id + ');');\n this.doAnimation(clipslice, series);\n }\n };\n /**\n * To get the module name of the Pie series.\n */\n PieSeries.prototype.getModuleName = function () {\n return 'PieSeries';\n };\n /**\n * To destroy the pie series.\n * @return {void}\n * @private\n */\n PieSeries.prototype.destroy = function (accumulation) {\n /**\n * Destroy method calling here\n */\n };\n return PieSeries;\n}(PieBase));\nexport { PieSeries };\n","/** @license React v16.13.1\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var l=require(\"object-assign\"),n=\"function\"===typeof Symbol&&Symbol.for,p=n?Symbol.for(\"react.element\"):60103,q=n?Symbol.for(\"react.portal\"):60106,r=n?Symbol.for(\"react.fragment\"):60107,t=n?Symbol.for(\"react.strict_mode\"):60108,u=n?Symbol.for(\"react.profiler\"):60114,v=n?Symbol.for(\"react.provider\"):60109,w=n?Symbol.for(\"react.context\"):60110,x=n?Symbol.for(\"react.forward_ref\"):60112,y=n?Symbol.for(\"react.suspense\"):60113,z=n?Symbol.for(\"react.memo\"):60115,A=n?Symbol.for(\"react.lazy\"):\n60116,B=\"function\"===typeof Symbol&&Symbol.iterator;function C(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cQ.length&&Q.push(a)}\nfunction T(a,b,c,e){var d=typeof a;if(\"undefined\"===d||\"boolean\"===d)a=null;var g=!1;if(null===a)g=!0;else switch(d){case \"string\":case \"number\":g=!0;break;case \"object\":switch(a.$$typeof){case p:case q:g=!0}}if(g)return c(e,a,\"\"===b?\".\"+U(a,0):b),1;g=0;b=\"\"===b?\".\":b+\":\";if(Array.isArray(a))for(var k=0;kb}return!1}function v(a,b,c,d,e,f){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f}var C={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){C[a]=new v(a,0,!1,a,null,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];C[b]=new v(b,1,!1,a[1],null,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){C[a]=new v(a,2,!1,a.toLowerCase(),null,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){C[a]=new v(a,2,!1,a,null,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){C[a]=new v(a,3,!1,a.toLowerCase(),null,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){C[a]=new v(a,3,!0,a,null,!1)});[\"capture\",\"download\"].forEach(function(a){C[a]=new v(a,4,!1,a,null,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){C[a]=new v(a,6,!1,a,null,!1)});[\"rowSpan\",\"start\"].forEach(function(a){C[a]=new v(a,5,!1,a.toLowerCase(),null,!1)});var Ua=/[\\-:]([a-z])/g;function Va(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(Ua,\nVa);C[b]=new v(b,1,!1,a,null,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(Ua,Va);C[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!1)});\nC.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){C[a]=new v(a,1,!1,a.toLowerCase(),null,!0)});var Wa=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;Wa.hasOwnProperty(\"ReactCurrentDispatcher\")||(Wa.ReactCurrentDispatcher={current:null});Wa.hasOwnProperty(\"ReactCurrentBatchConfig\")||(Wa.ReactCurrentBatchConfig={suspense:null});\nfunction Xa(a,b,c,d){var e=C.hasOwnProperty(b)?C[b]:null;var f=null!==e?0===e.type:d?!1:!(2=c.length))throw Error(u(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:rb(c)}}\nfunction Kb(a,b){var c=rb(b.value),d=rb(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function Lb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}var Mb={html:\"http://www.w3.org/1999/xhtml\",mathml:\"http://www.w3.org/1998/Math/MathML\",svg:\"http://www.w3.org/2000/svg\"};\nfunction Nb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}function Ob(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?Nb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar Pb,Qb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(a.namespaceURI!==Mb.svg||\"innerHTML\"in a)a.innerHTML=b;else{Pb=Pb||document.createElement(\"div\");Pb.innerHTML=\"\"+b.valueOf().toString()+\"\";for(b=Pb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction Rb(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}function Sb(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var Tb={animationend:Sb(\"Animation\",\"AnimationEnd\"),animationiteration:Sb(\"Animation\",\"AnimationIteration\"),animationstart:Sb(\"Animation\",\"AnimationStart\"),transitionend:Sb(\"Transition\",\"TransitionEnd\")},Ub={},Vb={};\nya&&(Vb=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete Tb.animationend.animation,delete Tb.animationiteration.animation,delete Tb.animationstart.animation),\"TransitionEvent\"in window||delete Tb.transitionend.transition);function Wb(a){if(Ub[a])return Ub[a];if(!Tb[a])return a;var b=Tb[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Vb)return Ub[a]=b[c];return a}\nvar Xb=Wb(\"animationend\"),Yb=Wb(\"animationiteration\"),Zb=Wb(\"animationstart\"),$b=Wb(\"transitionend\"),ac=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),bc=new (\"function\"===typeof WeakMap?WeakMap:Map);function cc(a){var b=bc.get(a);void 0===b&&(b=new Map,bc.set(a,b));return b}\nfunction dc(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.effectTag&1026)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function ec(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function fc(a){if(dc(a)!==a)throw Error(u(188));}\nfunction gc(a){var b=a.alternate;if(!b){b=dc(a);if(null===b)throw Error(u(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return fc(e),a;if(f===d)return fc(e),b;f=f.sibling}throw Error(u(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(u(189));}}if(c.alternate!==d)throw Error(u(190));}if(3!==c.tag)throw Error(u(188));return c.stateNode.current===c?a:b}function hc(a){a=gc(a);if(!a)return null;for(var b=a;;){if(5===b.tag||6===b.tag)return b;if(b.child)b.child.return=b,b=b.child;else{if(b===a)break;for(;!b.sibling;){if(!b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}}return null}\nfunction ic(a,b){if(null==b)throw Error(u(30));if(null==a)return b;if(Array.isArray(a)){if(Array.isArray(b))return a.push.apply(a,b),a;a.push(b);return a}return Array.isArray(b)?[a].concat(b):[a,b]}function jc(a,b,c){Array.isArray(a)?a.forEach(b,c):a&&b.call(c,a)}var kc=null;\nfunction lc(a){if(a){var b=a._dispatchListeners,c=a._dispatchInstances;if(Array.isArray(b))for(var d=0;dpc.length&&pc.push(a)}\nfunction rc(a,b,c,d){if(pc.length){var e=pc.pop();e.topLevelType=a;e.eventSystemFlags=d;e.nativeEvent=b;e.targetInst=c;return e}return{topLevelType:a,eventSystemFlags:d,nativeEvent:b,targetInst:c,ancestors:[]}}\nfunction sc(a){var b=a.targetInst,c=b;do{if(!c){a.ancestors.push(c);break}var d=c;if(3===d.tag)d=d.stateNode.containerInfo;else{for(;d.return;)d=d.return;d=3!==d.tag?null:d.stateNode.containerInfo}if(!d)break;b=c.tag;5!==b&&6!==b||a.ancestors.push(c);c=tc(d)}while(c);for(c=0;c=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=ud(c)}}\nfunction wd(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?wd(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}function xd(){for(var a=window,b=td();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=td(a.document)}return b}\nfunction yd(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}var zd=\"$\",Ad=\"/$\",Bd=\"$?\",Cd=\"$!\",Dd=null,Ed=null;function Fd(a,b){switch(a){case \"button\":case \"input\":case \"select\":case \"textarea\":return!!b.autoFocus}return!1}\nfunction Gd(a,b){return\"textarea\"===a||\"option\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}var Hd=\"function\"===typeof setTimeout?setTimeout:void 0,Id=\"function\"===typeof clearTimeout?clearTimeout:void 0;function Jd(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break}return a}\nfunction Kd(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(c===zd||c===Cd||c===Bd){if(0===b)return a;b--}else c===Ad&&b++}a=a.previousSibling}return null}var Ld=Math.random().toString(36).slice(2),Md=\"__reactInternalInstance$\"+Ld,Nd=\"__reactEventHandlers$\"+Ld,Od=\"__reactContainere$\"+Ld;\nfunction tc(a){var b=a[Md];if(b)return b;for(var c=a.parentNode;c;){if(b=c[Od]||c[Md]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Kd(a);null!==a;){if(c=a[Md])return c;a=Kd(a)}return b}a=c;c=a.parentNode}return null}function Nc(a){a=a[Md]||a[Od];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function Pd(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(u(33));}function Qd(a){return a[Nd]||null}\nfunction Rd(a){do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction Sd(a,b){var c=a.stateNode;if(!c)return null;var d=la(c);if(!d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==typeof c)throw Error(u(231,\nb,typeof c));return c}function Td(a,b,c){if(b=Sd(a,c.dispatchConfig.phasedRegistrationNames[b]))c._dispatchListeners=ic(c._dispatchListeners,b),c._dispatchInstances=ic(c._dispatchInstances,a)}function Ud(a){if(a&&a.dispatchConfig.phasedRegistrationNames){for(var b=a._targetInst,c=[];b;)c.push(b),b=Rd(b);for(b=c.length;0this.eventPool.length&&this.eventPool.push(a)}function de(a){a.eventPool=[];a.getPooled=ee;a.release=fe}var ge=G.extend({data:null}),he=G.extend({data:null}),ie=[9,13,27,32],je=ya&&\"CompositionEvent\"in window,ke=null;ya&&\"documentMode\"in document&&(ke=document.documentMode);\nvar le=ya&&\"TextEvent\"in window&&!ke,me=ya&&(!je||ke&&8=ke),ne=String.fromCharCode(32),oe={beforeInput:{phasedRegistrationNames:{bubbled:\"onBeforeInput\",captured:\"onBeforeInputCapture\"},dependencies:[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]},compositionEnd:{phasedRegistrationNames:{bubbled:\"onCompositionEnd\",captured:\"onCompositionEndCapture\"},dependencies:\"blur compositionend keydown keypress keyup mousedown\".split(\" \")},compositionStart:{phasedRegistrationNames:{bubbled:\"onCompositionStart\",\ncaptured:\"onCompositionStartCapture\"},dependencies:\"blur compositionstart keydown keypress keyup mousedown\".split(\" \")},compositionUpdate:{phasedRegistrationNames:{bubbled:\"onCompositionUpdate\",captured:\"onCompositionUpdateCapture\"},dependencies:\"blur compositionupdate keydown keypress keyup mousedown\".split(\" \")}},pe=!1;\nfunction qe(a,b){switch(a){case \"keyup\":return-1!==ie.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"blur\":return!0;default:return!1}}function re(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var se=!1;function te(a,b){switch(a){case \"compositionend\":return re(b);case \"keypress\":if(32!==b.which)return null;pe=!0;return ne;case \"textInput\":return a=b.data,a===ne&&pe?null:a;default:return null}}\nfunction ue(a,b){if(se)return\"compositionend\"===a||!je&&qe(a,b)?(a=ae(),$d=Zd=Yd=null,se=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=document.documentMode,df={select:{phasedRegistrationNames:{bubbled:\"onSelect\",captured:\"onSelectCapture\"},dependencies:\"blur contextmenu dragend focus keydown keyup mousedown mouseup selectionchange\".split(\" \")}},ef=null,ff=null,gf=null,hf=!1;\nfunction jf(a,b){var c=b.window===b?b.document:9===b.nodeType?b:b.ownerDocument;if(hf||null==ef||ef!==td(c))return null;c=ef;\"selectionStart\"in c&&yd(c)?c={start:c.selectionStart,end:c.selectionEnd}:(c=(c.ownerDocument&&c.ownerDocument.defaultView||window).getSelection(),c={anchorNode:c.anchorNode,anchorOffset:c.anchorOffset,focusNode:c.focusNode,focusOffset:c.focusOffset});return gf&&bf(gf,c)?null:(gf=c,a=G.getPooled(df.select,ff,a,b),a.type=\"select\",a.target=ef,Xd(a),a)}\nvar kf={eventTypes:df,extractEvents:function(a,b,c,d,e,f){e=f||(d.window===d?d.document:9===d.nodeType?d:d.ownerDocument);if(!(f=!e)){a:{e=cc(e);f=wa.onSelect;for(var g=0;gzf||(a.current=yf[zf],yf[zf]=null,zf--)}\nfunction I(a,b){zf++;yf[zf]=a.current;a.current=b}var Af={},J={current:Af},K={current:!1},Bf=Af;function Cf(a,b){var c=a.type.contextTypes;if(!c)return Af;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}function L(a){a=a.childContextTypes;return null!==a&&void 0!==a}\nfunction Df(){H(K);H(J)}function Ef(a,b,c){if(J.current!==Af)throw Error(u(168));I(J,b);I(K,c)}function Ff(a,b,c){var d=a.stateNode;a=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in a))throw Error(u(108,pb(b)||\"Unknown\",e));return n({},c,{},d)}function Gf(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Af;Bf=J.current;I(J,a);I(K,K.current);return!0}\nfunction Hf(a,b,c){var d=a.stateNode;if(!d)throw Error(u(169));c?(a=Ff(a,b,Bf),d.__reactInternalMemoizedMergedChildContext=a,H(K),H(J),I(J,a)):H(K);I(K,c)}\nvar If=r.unstable_runWithPriority,Jf=r.unstable_scheduleCallback,Kf=r.unstable_cancelCallback,Lf=r.unstable_requestPaint,Mf=r.unstable_now,Nf=r.unstable_getCurrentPriorityLevel,Of=r.unstable_ImmediatePriority,Pf=r.unstable_UserBlockingPriority,Qf=r.unstable_NormalPriority,Rf=r.unstable_LowPriority,Sf=r.unstable_IdlePriority,Tf={},Uf=r.unstable_shouldYield,Vf=void 0!==Lf?Lf:function(){},Wf=null,Xf=null,Yf=!1,Zf=Mf(),$f=1E4>Zf?Mf:function(){return Mf()-Zf};\nfunction ag(){switch(Nf()){case Of:return 99;case Pf:return 98;case Qf:return 97;case Rf:return 96;case Sf:return 95;default:throw Error(u(332));}}function bg(a){switch(a){case 99:return Of;case 98:return Pf;case 97:return Qf;case 96:return Rf;case 95:return Sf;default:throw Error(u(332));}}function cg(a,b){a=bg(a);return If(a,b)}function dg(a,b,c){a=bg(a);return Jf(a,b,c)}function eg(a){null===Wf?(Wf=[a],Xf=Jf(Of,fg)):Wf.push(a);return Tf}function gg(){if(null!==Xf){var a=Xf;Xf=null;Kf(a)}fg()}\nfunction fg(){if(!Yf&&null!==Wf){Yf=!0;var a=0;try{var b=Wf;cg(99,function(){for(;a=b&&(rg=!0),a.firstContext=null)}\nfunction sg(a,b){if(mg!==a&&!1!==b&&0!==b){if(\"number\"!==typeof b||1073741823===b)mg=a,b=1073741823;b={context:a,observedBits:b,next:null};if(null===lg){if(null===kg)throw Error(u(308));lg=b;kg.dependencies={expirationTime:0,firstContext:b,responders:null}}else lg=lg.next=b}return a._currentValue}var tg=!1;function ug(a){a.updateQueue={baseState:a.memoizedState,baseQueue:null,shared:{pending:null},effects:null}}\nfunction vg(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,baseQueue:a.baseQueue,shared:a.shared,effects:a.effects})}function wg(a,b){a={expirationTime:a,suspenseConfig:b,tag:0,payload:null,callback:null,next:null};return a.next=a}function xg(a,b){a=a.updateQueue;if(null!==a){a=a.shared;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}}\nfunction yg(a,b){var c=a.alternate;null!==c&&vg(c,a);a=a.updateQueue;c=a.baseQueue;null===c?(a.baseQueue=b.next=b,b.next=b):(b.next=c.next,c.next=b)}\nfunction zg(a,b,c,d){var e=a.updateQueue;tg=!1;var f=e.baseQueue,g=e.shared.pending;if(null!==g){if(null!==f){var h=f.next;f.next=g.next;g.next=h}f=g;e.shared.pending=null;h=a.alternate;null!==h&&(h=h.updateQueue,null!==h&&(h.baseQueue=g))}if(null!==f){h=f.next;var k=e.baseState,l=0,m=null,p=null,x=null;if(null!==h){var z=h;do{g=z.expirationTime;if(gl&&(l=g)}else{null!==x&&(x=x.next={expirationTime:1073741823,suspenseConfig:z.suspenseConfig,tag:z.tag,payload:z.payload,callback:z.callback,next:null});Ag(g,z.suspenseConfig);a:{var D=a,t=z;g=b;ca=c;switch(t.tag){case 1:D=t.payload;if(\"function\"===typeof D){k=D.call(ca,k,g);break a}k=D;break a;case 3:D.effectTag=D.effectTag&-4097|64;case 0:D=t.payload;g=\"function\"===typeof D?D.call(ca,k,g):D;if(null===g||void 0===g)break a;k=n({},k,g);break a;case 2:tg=!0}}null!==z.callback&&\n(a.effectTag|=32,g=e.effects,null===g?e.effects=[z]:g.push(z))}z=z.next;if(null===z||z===h)if(g=e.shared.pending,null===g)break;else z=f.next=g.next,g.next=h,e.baseQueue=f=g,e.shared.pending=null}while(1)}null===x?m=k:x.next=p;e.baseState=m;e.baseQueue=x;Bg(l);a.expirationTime=l;a.memoizedState=k}}\nfunction Cg(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;by?(A=m,m=null):A=m.sibling;var q=x(e,m,h[y],k);if(null===q){null===m&&(m=A);break}a&&\nm&&null===q.alternate&&b(e,m);g=f(q,g,y);null===t?l=q:t.sibling=q;t=q;m=A}if(y===h.length)return c(e,m),l;if(null===m){for(;yy?(A=t,t=null):A=t.sibling;var D=x(e,t,q.value,l);if(null===D){null===t&&(t=A);break}a&&t&&null===D.alternate&&b(e,t);g=f(D,g,y);null===m?k=D:m.sibling=D;m=D;t=A}if(q.done)return c(e,t),k;if(null===t){for(;!q.done;y++,q=h.next())q=p(e,q.value,l),null!==q&&(g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);return k}for(t=d(e,t);!q.done;y++,q=h.next())q=z(t,e,y,q.value,l),null!==q&&(a&&null!==\nq.alternate&&t.delete(null===q.key?y:q.key),g=f(q,g,y),null===m?k=q:m.sibling=q,m=q);a&&t.forEach(function(a){return b(e,a)});return k}return function(a,d,f,h){var k=\"object\"===typeof f&&null!==f&&f.type===ab&&null===f.key;k&&(f=f.props.children);var l=\"object\"===typeof f&&null!==f;if(l)switch(f.$$typeof){case Za:a:{l=f.key;for(k=d;null!==k;){if(k.key===l){switch(k.tag){case 7:if(f.type===ab){c(a,k.sibling);d=e(k,f.props.children);d.return=a;a=d;break a}break;default:if(k.elementType===f.type){c(a,\nk.sibling);d=e(k,f.props);d.ref=Pg(a,k,f);d.return=a;a=d;break a}}c(a,k);break}else b(a,k);k=k.sibling}f.type===ab?(d=Wg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Ug(f.type,f.key,f.props,null,a.mode,h),h.ref=Pg(a,d,f),h.return=a,a=h)}return g(a);case $a:a:{for(k=f.key;null!==d;){if(d.key===k)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=\nd.sibling}d=Vg(f,a.mode,h);d.return=a;a=d}return g(a)}if(\"string\"===typeof f||\"number\"===typeof f)return f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):(c(a,d),d=Tg(f,a.mode,h),d.return=a,a=d),g(a);if(Og(f))return ca(a,d,f,h);if(nb(f))return D(a,d,f,h);l&&Qg(a,f);if(\"undefined\"===typeof f&&!k)switch(a.tag){case 1:case 0:throw a=a.type,Error(u(152,a.displayName||a.name||\"Component\"));}return c(a,d)}}var Xg=Rg(!0),Yg=Rg(!1),Zg={},$g={current:Zg},ah={current:Zg},bh={current:Zg};\nfunction ch(a){if(a===Zg)throw Error(u(174));return a}function dh(a,b){I(bh,b);I(ah,a);I($g,Zg);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:Ob(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=Ob(b,a)}H($g);I($g,b)}function eh(){H($g);H(ah);H(bh)}function fh(a){ch(bh.current);var b=ch($g.current);var c=Ob(b,a.type);b!==c&&(I(ah,a),I($g,c))}function gh(a){ah.current===a&&(H($g),H(ah))}var M={current:0};\nfunction hh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||c.data===Bd||c.data===Cd))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.effectTag&64))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}function ih(a,b){return{responder:a,props:b}}\nvar jh=Wa.ReactCurrentDispatcher,kh=Wa.ReactCurrentBatchConfig,lh=0,N=null,O=null,P=null,mh=!1;function Q(){throw Error(u(321));}function nh(a,b){if(null===b)return!1;for(var c=0;cf))throw Error(u(301));f+=1;P=O=null;b.updateQueue=null;jh.current=rh;a=c(d,e)}while(b.expirationTime===lh)}jh.current=sh;b=null!==O&&null!==O.next;lh=0;P=O=N=null;mh=!1;if(b)throw Error(u(300));return a}\nfunction th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===P?N.memoizedState=P=a:P=P.next=a;return P}function uh(){if(null===O){var a=N.alternate;a=null!==a?a.memoizedState:null}else a=O.next;var b=null===P?N.memoizedState:P.next;if(null!==b)P=b,O=a;else{if(null===a)throw Error(u(310));O=a;a={memoizedState:O.memoizedState,baseState:O.baseState,baseQueue:O.baseQueue,queue:O.queue,next:null};null===P?N.memoizedState=P=a:P=P.next=a}return P}\nfunction vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction wh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=O,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){e=e.next;d=d.baseState;var h=g=f=null,k=e;do{var l=k.expirationTime;if(lN.expirationTime&&\n(N.expirationTime=l,Bg(l))}else null!==h&&(h=h.next={expirationTime:1073741823,suspenseConfig:k.suspenseConfig,action:k.action,eagerReducer:k.eagerReducer,eagerState:k.eagerState,next:null}),Ag(l,k.suspenseConfig),d=k.eagerReducer===a?k.eagerState:a(d,k.action);k=k.next}while(null!==k&&k!==e);null===h?f=d:h.next=g;$e(d,b.memoizedState)||(rg=!0);b.memoizedState=d;b.baseState=f;b.baseQueue=h;c.lastRenderedState=d}return[b.memoizedState,c.dispatch]}\nfunction xh(a){var b=uh(),c=b.queue;if(null===c)throw Error(u(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);$e(f,b.memoizedState)||(rg=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}\nfunction yh(a){var b=th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a=b.queue={pending:null,dispatch:null,lastRenderedReducer:vh,lastRenderedState:a};a=a.dispatch=zh.bind(null,N,a);return[b.memoizedState,a]}function Ah(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=N.updateQueue;null===b?(b={lastEffect:null},N.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}\nfunction Bh(){return uh().memoizedState}function Ch(a,b,c,d){var e=th();N.effectTag|=a;e.memoizedState=Ah(1|b,c,void 0,void 0===d?null:d)}function Dh(a,b,c,d){var e=uh();d=void 0===d?null:d;var f=void 0;if(null!==O){var g=O.memoizedState;f=g.destroy;if(null!==d&&nh(d,g.deps)){Ah(b,c,f,d);return}}N.effectTag|=a;e.memoizedState=Ah(1|b,c,f,d)}function Eh(a,b){return Ch(516,4,a,b)}function Fh(a,b){return Dh(516,4,a,b)}function Gh(a,b){return Dh(4,2,a,b)}\nfunction Hh(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function Ih(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return Dh(4,2,Hh.bind(null,b,a),c)}function Jh(){}function Kh(a,b){th().memoizedState=[a,void 0===b?null:b];return a}function Lh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction Mh(a,b){var c=uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&nh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function Nh(a,b,c){var d=ag();cg(98>d?98:d,function(){a(!0)});cg(97\\x3c/script>\",a=a.removeChild(a.firstChild)):\"string\"===typeof d.is?a=g.createElement(e,{is:d.is}):(a=g.createElement(e),\"select\"===e&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,e);a[Md]=b;a[Nd]=d;ni(a,b,!1,!1);b.stateNode=a;g=pd(e,d);switch(e){case \"iframe\":case \"object\":case \"embed\":F(\"load\",\na);h=d;break;case \"video\":case \"audio\":for(h=0;hd.tailExpiration&&1b)&&tj.set(a,b)))}}\nfunction xj(a,b){a.expirationTimea?c:a;return 2>=a&&b!==a?0:a}\nfunction Z(a){if(0!==a.lastExpiredTime)a.callbackExpirationTime=1073741823,a.callbackPriority=99,a.callbackNode=eg(yj.bind(null,a));else{var b=zj(a),c=a.callbackNode;if(0===b)null!==c&&(a.callbackNode=null,a.callbackExpirationTime=0,a.callbackPriority=90);else{var d=Gg();1073741823===b?d=99:1===b||2===b?d=95:(d=10*(1073741821-b)-10*(1073741821-d),d=0>=d?99:250>=d?98:5250>=d?97:95);if(null!==c){var e=a.callbackPriority;if(a.callbackExpirationTime===b&&e>=d)return;c!==Tf&&Kf(c)}a.callbackExpirationTime=\nb;a.callbackPriority=d;b=1073741823===b?eg(yj.bind(null,a)):dg(d,Bj.bind(null,a),{timeout:10*(1073741821-b)-$f()});a.callbackNode=b}}}\nfunction Bj(a,b){wj=0;if(b)return b=Gg(),Cj(a,b),Z(a),null;var c=zj(a);if(0!==c){b=a.callbackNode;if((W&(fj|gj))!==V)throw Error(u(327));Dj();a===T&&c===U||Ej(a,c);if(null!==X){var d=W;W|=fj;var e=Fj();do try{Gj();break}catch(h){Hj(a,h)}while(1);ng();W=d;cj.current=e;if(S===hj)throw b=kj,Ej(a,c),xi(a,c),Z(a),b;if(null===X)switch(e=a.finishedWork=a.current.alternate,a.finishedExpirationTime=c,d=S,T=null,d){case ti:case hj:throw Error(u(345));case ij:Cj(a,2=c){a.lastPingedTime=c;Ej(a,c);break}}f=zj(a);if(0!==f&&f!==c)break;if(0!==d&&d!==c){a.lastPingedTime=d;break}a.timeoutHandle=Hd(Jj.bind(null,a),e);break}Jj(a);break;case vi:xi(a,c);d=a.lastSuspendedTime;c===d&&(a.nextKnownPendingLevel=Ij(e));if(oj&&(e=a.lastPingedTime,0===e||e>=c)){a.lastPingedTime=c;Ej(a,c);break}e=zj(a);if(0!==e&&e!==c)break;if(0!==d&&d!==c){a.lastPingedTime=\nd;break}1073741823!==mj?d=10*(1073741821-mj)-$f():1073741823===lj?d=0:(d=10*(1073741821-lj)-5E3,e=$f(),c=10*(1073741821-c)-e,d=e-d,0>d&&(d=0),d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*bj(d/1960))-d,c=d?d=0:(e=g.busyDelayMs|0,f=$f()-(10*(1073741821-f)-(g.timeoutMs|0||5E3)),d=f<=e?0:e+d-f);if(10 component higher in the tree to provide a loading indicator or placeholder to display.\"+qb(g))}S!==\njj&&(S=ij);h=Ai(h,g);p=f;do{switch(p.tag){case 3:k=h;p.effectTag|=4096;p.expirationTime=b;var B=Xi(p,k,b);yg(p,B);break a;case 1:k=h;var w=p.type,ub=p.stateNode;if(0===(p.effectTag&64)&&(\"function\"===typeof w.getDerivedStateFromError||null!==ub&&\"function\"===typeof ub.componentDidCatch&&(null===aj||!aj.has(ub)))){p.effectTag|=4096;p.expirationTime=b;var vb=$i(p,k,b);yg(p,vb);break a}}p=p.return}while(null!==p)}X=Pj(X)}catch(Xc){b=Xc;continue}break}while(1)}\nfunction Fj(){var a=cj.current;cj.current=sh;return null===a?sh:a}function Ag(a,b){awi&&(wi=a)}function Kj(){for(;null!==X;)X=Qj(X)}function Gj(){for(;null!==X&&!Uf();)X=Qj(X)}function Qj(a){var b=Rj(a.alternate,a,U);a.memoizedProps=a.pendingProps;null===b&&(b=Pj(a));dj.current=null;return b}\nfunction Pj(a){X=a;do{var b=X.alternate;a=X.return;if(0===(X.effectTag&2048)){b=si(b,X,U);if(1===U||1!==X.childExpirationTime){for(var c=0,d=X.child;null!==d;){var e=d.expirationTime,f=d.childExpirationTime;e>c&&(c=e);f>c&&(c=f);d=d.sibling}X.childExpirationTime=c}if(null!==b)return b;null!==a&&0===(a.effectTag&2048)&&(null===a.firstEffect&&(a.firstEffect=X.firstEffect),null!==X.lastEffect&&(null!==a.lastEffect&&(a.lastEffect.nextEffect=X.firstEffect),a.lastEffect=X.lastEffect),1a?b:a}function Jj(a){var b=ag();cg(99,Sj.bind(null,a,b));return null}\nfunction Sj(a,b){do Dj();while(null!==rj);if((W&(fj|gj))!==V)throw Error(u(327));var c=a.finishedWork,d=a.finishedExpirationTime;if(null===c)return null;a.finishedWork=null;a.finishedExpirationTime=0;if(c===a.current)throw Error(u(177));a.callbackNode=null;a.callbackExpirationTime=0;a.callbackPriority=90;a.nextKnownPendingLevel=0;var e=Ij(c);a.firstPendingTime=e;d<=a.lastSuspendedTime?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:d<=a.firstSuspendedTime&&(a.firstSuspendedTime=\nd-1);d<=a.lastPingedTime&&(a.lastPingedTime=0);d<=a.lastExpiredTime&&(a.lastExpiredTime=0);a===T&&(X=T=null,U=0);1h&&(l=h,h=g,g=l),l=vd(q,g),m=vd(q,h),l&&m&&(1!==w.rangeCount||w.anchorNode!==l.node||w.anchorOffset!==l.offset||w.focusNode!==m.node||w.focusOffset!==m.offset)&&(B=B.createRange(),B.setStart(l.node,l.offset),w.removeAllRanges(),g>h?(w.addRange(B),w.extend(m.node,m.offset)):(B.setEnd(m.node,m.offset),w.addRange(B))))));B=[];for(w=q;w=w.parentNode;)1===w.nodeType&&B.push({element:w,left:w.scrollLeft,\ntop:w.scrollTop});\"function\"===typeof q.focus&&q.focus();for(q=0;q=c)return ji(a,b,c);I(M,M.current&1);b=$h(a,b,c);return null!==b?b.sibling:null}I(M,M.current&1);break;case 19:d=b.childExpirationTime>=c;if(0!==(a.effectTag&64)){if(d)return mi(a,b,c);b.effectTag|=64}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null);I(M,M.current);if(!d)return null}return $h(a,b,c)}rg=!1}}else rg=!1;b.expirationTime=0;switch(b.tag){case 2:d=b.type;null!==a&&(a.alternate=null,b.alternate=null,b.effectTag|=2);a=b.pendingProps;e=Cf(b,J.current);qg(b,c);e=oh(null,\nb,d,a,e,c);b.effectTag|=1;if(\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof){b.tag=1;b.memoizedState=null;b.updateQueue=null;if(L(d)){var f=!0;Gf(b)}else f=!1;b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null;ug(b);var g=d.getDerivedStateFromProps;\"function\"===typeof g&&Fg(b,d,g,a);e.updater=Jg;b.stateNode=e;e._reactInternalFiber=b;Ng(b,d,a,c);b=gi(null,b,d,!0,f,c)}else b.tag=0,R(null,b,e,c),b=b.child;return b;case 16:a:{e=b.elementType;null!==a&&(a.alternate=\nnull,b.alternate=null,b.effectTag|=2);a=b.pendingProps;ob(e);if(1!==e._status)throw e._result;e=e._result;b.type=e;f=b.tag=Xj(e);a=ig(e,a);switch(f){case 0:b=di(null,b,e,a,c);break a;case 1:b=fi(null,b,e,a,c);break a;case 11:b=Zh(null,b,e,a,c);break a;case 14:b=ai(null,b,e,ig(e.type,a),d,c);break a}throw Error(u(306,e,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),di(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),fi(a,b,d,e,c);\ncase 3:hi(b);d=b.updateQueue;if(null===a||null===d)throw Error(u(282));d=b.pendingProps;e=b.memoizedState;e=null!==e?e.element:null;vg(a,b);zg(b,d,null,c);d=b.memoizedState.element;if(d===e)Xh(),b=$h(a,b,c);else{if(e=b.stateNode.hydrate)Ph=Jd(b.stateNode.containerInfo.firstChild),Oh=b,e=Qh=!0;if(e)for(c=Yg(b,null,d,c),b.child=c;c;)c.effectTag=c.effectTag&-3|1024,c=c.sibling;else R(a,b,d,c),Xh();b=b.child}return b;case 5:return fh(b),null===a&&Uh(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:\nnull,g=e.children,Gd(d,e)?g=null:null!==f&&Gd(d,f)&&(b.effectTag|=16),ei(a,b),b.mode&4&&1!==c&&e.hidden?(b.expirationTime=b.childExpirationTime=1,b=null):(R(a,b,g,c),b=b.child),b;case 6:return null===a&&Uh(b),null;case 13:return ji(a,b,c);case 4:return dh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Xg(b,null,d,c):R(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:ig(d,e),Zh(a,b,d,e,c);case 7:return R(a,b,b.pendingProps,c),b.child;case 8:return R(a,\nb,b.pendingProps.children,c),b.child;case 12:return R(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;g=b.memoizedProps;f=e.value;var h=b.type._context;I(jg,h._currentValue);h._currentValue=f;if(null!==g)if(h=g.value,f=$e(h,f)?0:(\"function\"===typeof d._calculateChangedBits?d._calculateChangedBits(h,f):1073741823)|0,0===f){if(g.children===e.children&&!K.current){b=$h(a,b,c);break a}}else for(h=b.child,null!==h&&(h.return=b);null!==h;){var k=h.dependencies;if(null!==\nk){g=h.child;for(var l=k.firstContext;null!==l;){if(l.context===d&&0!==(l.observedBits&f)){1===h.tag&&(l=wg(c,null),l.tag=2,xg(h,l));h.expirationTime=b&&a<=b}function xi(a,b){var c=a.firstSuspendedTime,d=a.lastSuspendedTime;cb||0===c)a.lastSuspendedTime=b;b<=a.lastPingedTime&&(a.lastPingedTime=0);b<=a.lastExpiredTime&&(a.lastExpiredTime=0)}\nfunction yi(a,b){b>a.firstPendingTime&&(a.firstPendingTime=b);var c=a.firstSuspendedTime;0!==c&&(b>=c?a.firstSuspendedTime=a.lastSuspendedTime=a.nextKnownPendingLevel=0:b>=a.lastSuspendedTime&&(a.lastSuspendedTime=b+1),b>a.nextKnownPendingLevel&&(a.nextKnownPendingLevel=b))}function Cj(a,b){var c=a.lastExpiredTime;if(0===c||c>b)a.lastExpiredTime=b}\nfunction bk(a,b,c,d){var e=b.current,f=Gg(),g=Dg.suspense;f=Hg(f,e,g);a:if(c){c=c._reactInternalFiber;b:{if(dc(c)!==c||1!==c.tag)throw Error(u(170));var h=c;do{switch(h.tag){case 3:h=h.stateNode.context;break b;case 1:if(L(h.type)){h=h.stateNode.__reactInternalMemoizedMergedChildContext;break b}}h=h.return}while(null!==h);throw Error(u(171));}if(1===c.tag){var k=c.type;if(L(k)){c=Ff(c,k,h);break a}}c=h}else c=Af;null===b.context?b.context=c:b.pendingContext=c;b=wg(f,g);b.payload={element:a};d=void 0===\nd?null:d;null!==d&&(b.callback=d);xg(e,b);Ig(e,f);return f}function ck(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function dk(a,b){a=a.memoizedState;null!==a&&null!==a.dehydrated&&a.retryTime=G};l=function(){};exports.unstable_forceFrameRate=function(a){0>a||125>>1,e=a[d];if(void 0!==e&&0K(n,c))void 0!==r&&0>K(r,n)?(a[d]=r,a[v]=c,d=v):(a[d]=n,a[m]=c,d=m);else if(void 0!==r&&0>K(r,c))a[d]=r,a[v]=c,d=v;else break a}}return b}return null}function K(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}var N=[],O=[],P=1,Q=null,R=3,S=!1,T=!1,U=!1;\nfunction V(a){for(var b=L(O);null!==b;){if(null===b.callback)M(O);else if(b.startTime<=a)M(O),b.sortIndex=b.expirationTime,J(N,b);else break;b=L(O)}}function W(a){U=!1;V(a);if(!T)if(null!==L(N))T=!0,f(X);else{var b=L(O);null!==b&&g(W,b.startTime-a)}}\nfunction X(a,b){T=!1;U&&(U=!1,h());S=!0;var c=R;try{V(b);for(Q=L(N);null!==Q&&(!(Q.expirationTime>b)||a&&!k());){var d=Q.callback;if(null!==d){Q.callback=null;R=Q.priorityLevel;var e=d(Q.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?Q.callback=e:Q===L(N)&&M(N);V(b)}else M(N);Q=L(N)}if(null!==Q)var m=!0;else{var n=L(O);null!==n&&g(W,n.startTime-b);m=!1}return m}finally{Q=null,R=c,S=!1}}\nfunction Y(a){switch(a){case 1:return-1;case 2:return 250;case 5:return 1073741823;case 4:return 1E4;default:return 5E3}}var Z=l;exports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){T||S||(T=!0,f(X))};\nexports.unstable_getCurrentPriorityLevel=function(){return R};exports.unstable_getFirstCallbackNode=function(){return L(N)};exports.unstable_next=function(a){switch(R){case 1:case 2:case 3:var b=3;break;default:b=R}var c=R;R=b;try{return a()}finally{R=c}};exports.unstable_pauseExecution=function(){};exports.unstable_requestPaint=Z;exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=R;R=a;try{return b()}finally{R=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();if(\"object\"===typeof c&&null!==c){var e=c.delay;e=\"number\"===typeof e&&0d?(a.sortIndex=e,J(O,a),null===L(N)&&a===L(O)&&(U?h():U=!0,g(W,e-d))):(a.sortIndex=c,J(N,a),T||S||(T=!0,f(X)));return a};\nexports.unstable_shouldYield=function(){var a=exports.unstable_now();V(a);var b=L(N);return b!==Q&&null!==Q&&null!==b&&null!==b.callback&&b.startTime<=a&&b.expirationTime result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n AsyncIterator.prototype[asyncIteratorSymbol] = function () {\n return this;\n };\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[toStringTagSymbol] = \"Generator\";\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n typeof module === \"object\" ? module.exports : {}\n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n}\n","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nfunction _createForOfIteratorHelper(o) {\n if (typeof Symbol === \"undefined\" || o[Symbol.iterator] == null) {\n if (Array.isArray(o) || (o = unsupportedIterableToArray(o))) {\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var it,\n normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = o[Symbol.iterator]();\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nmodule.exports = _createForOfIteratorHelper;","var arrayWithoutHoles = require(\"./arrayWithoutHoles\");\n\nvar iterableToArray = require(\"./iterableToArray\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray;","var arrayLikeToArray = require(\"./arrayLikeToArray\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread;","'use strict';\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n throw new Error('clearTimeout has not been defined');\n}\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n} ())\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch(e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch(e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n\n\n}\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e){\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e){\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n\n var len = queue.length;\n while(len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n","require('../../modules/es6.object.get-own-property-descriptor');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function getOwnPropertyDescriptor(it, key) {\n return $Object.getOwnPropertyDescriptor(it, key);\n};\n","// 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\nvar toIObject = require('./_to-iobject');\nvar $getOwnPropertyDescriptor = require('./_object-gopd').f;\n\nrequire('./_object-sap')('getOwnPropertyDescriptor', function () {\n return function getOwnPropertyDescriptor(it, key) {\n return $getOwnPropertyDescriptor(toIObject(it), key);\n };\n});\n","require('../../modules/es6.symbol');\nmodule.exports = require('../../modules/_core').Object.getOwnPropertySymbols;\n","// all enumerable object keys, includes symbols\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nmodule.exports = function (it) {\n var result = getKeys(it);\n var getSymbols = gOPS.f;\n if (getSymbols) {\n var symbols = getSymbols(it);\n var isEnum = pIE.f;\n var i = 0;\n var key;\n while (symbols.length > i) if (isEnum.call(it, key = symbols[i++])) result.push(key);\n } return result;\n};\n","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = getKeys(Properties);\n var length = keys.length;\n var i = 0;\n var P;\n while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n return O;\n};\n","// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nvar toIObject = require('./_to-iobject');\nvar gOPN = require('./_object-gopn').f;\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return gOPN(it);\n } catch (e) {\n return windowNames.slice();\n }\n};\n\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]' ? getWindowNames(it) : gOPN(toIObject(it));\n};\n","require('../../modules/es6.object.keys');\nmodule.exports = require('../../modules/_core').Object.keys;\n","// 19.1.2.14 Object.keys(O)\nvar toObject = require('./_to-object');\nvar $keys = require('./_object-keys');\n\nrequire('./_object-sap')('keys', function () {\n return function keys(it) {\n return $keys(toObject(it));\n };\n});\n","require('../../modules/es6.object.define-property');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function defineProperty(it, key, desc) {\n return $Object.defineProperty(it, key, desc);\n};\n","var $export = require('./_export');\n// 19.1.2.4 / 15.2.3.6 Object.defineProperty(O, P, Attributes)\n$export($export.S + $export.F * !require('./_descriptors'), 'Object', { defineProperty: require('./_object-dp').f });\n","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/web.dom.iterable');\nmodule.exports = require('../../modules/_wks-ext').f('iterator');\n","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n return function (that, pos) {\n var s = String(defined(that));\n var i = toInteger(pos);\n var l = s.length;\n var a, b;\n if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n a = s.charCodeAt(i);\n return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n ? TO_STRING ? s.charAt(i) : a\n : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n };\n};\n","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n setToStringTag(Constructor, NAME + ' Iterator');\n};\n","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n this._t = toIObject(iterated); // target\n this._i = 0; // next index\n this._k = kind; // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n var O = this._t;\n var kind = this._k;\n var index = this._i++;\n if (!O || index >= O.length) {\n this._t = undefined;\n return step(1);\n }\n if (kind == 'keys') return step(0, index);\n if (kind == 'values') return step(0, O[index]);\n return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","require('../../modules/es6.symbol');\nrequire('../../modules/es6.object.to-string');\nrequire('../../modules/es7.symbol.async-iterator');\nrequire('../../modules/es7.symbol.observable');\nmodule.exports = require('../../modules/_core').Symbol;\n","require('./_wks-define')('asyncIterator');\n","require('./_wks-define')('observable');\n","require('../../modules/es6.object.get-prototype-of');\nmodule.exports = require('../../modules/_core').Object.getPrototypeOf;\n","// 19.1.2.9 Object.getPrototypeOf(O)\nvar toObject = require('./_to-object');\nvar $getPrototypeOf = require('./_object-gpo');\n\nrequire('./_object-sap')('getPrototypeOf', function () {\n return function getPrototypeOf(it) {\n return $getPrototypeOf(toObject(it));\n };\n});\n","require('../../modules/es6.object.set-prototype-of');\nmodule.exports = require('../../modules/_core').Object.setPrototypeOf;\n","// 19.1.3.19 Object.setPrototypeOf(O, proto)\nvar $export = require('./_export');\n$export($export.S, 'Object', { setPrototypeOf: require('./_set-proto').set });\n","// Works with __proto__ only. Old v8 can't work with null proto objects.\n/* eslint-disable no-proto */\nvar isObject = require('./_is-object');\nvar anObject = require('./_an-object');\nvar check = function (O, proto) {\n anObject(O);\n if (!isObject(proto) && proto !== null) throw TypeError(proto + \": can't set as prototype!\");\n};\nmodule.exports = {\n set: Object.setPrototypeOf || ('__proto__' in {} ? // eslint-disable-line\n function (test, buggy, set) {\n try {\n set = require('./_ctx')(Function.call, require('./_object-gopd').f(Object.prototype, '__proto__').set, 2);\n set(test, []);\n buggy = !(test instanceof Array);\n } catch (e) { buggy = true; }\n return function setPrototypeOf(O, proto) {\n check(O, proto);\n if (buggy) O.__proto__ = proto;\n else set(O, proto);\n return O;\n };\n }({}, false) : undefined),\n check: check\n};\n","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n return $Object.create(P, D);\n};\n","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","var basePickBy = require('./_basePickBy'),\n hasIn = require('./hasIn');\n\n/**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\nfunction basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n}\n\nmodule.exports = basePick;\n","var baseGet = require('./_baseGet'),\n baseSet = require('./_baseSet'),\n castPath = require('./_castPath');\n\n/**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\nfunction basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n}\n\nmodule.exports = basePickBy;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var MapCache = require('./_MapCache');\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Expose `MapCache`.\nmemoize.Cache = MapCache;\n\nmodule.exports = memoize;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","var assignValue = require('./_assignValue'),\n castPath = require('./_castPath'),\n isIndex = require('./_isIndex'),\n isObject = require('./isObject'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\nfunction baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n}\n\nmodule.exports = baseSet;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var flatten = require('./flatten'),\n overRest = require('./_overRest'),\n setToString = require('./_setToString');\n\n/**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\nfunction flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n}\n\nmodule.exports = flatRest;\n","var Symbol = require('./_Symbol'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray');\n\n/** Built-in value references. */\nvar spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined;\n\n/**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\nfunction isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n}\n\nmodule.exports = isFlattenable;\n","var constant = require('./constant'),\n defineProperty = require('./_defineProperty'),\n identity = require('./identity');\n\n/**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\nvar baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n};\n\nmodule.exports = baseSetToString;\n","/**\n * Creates a function that returns `value`.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {*} value The value to return from the new function.\n * @returns {Function} Returns the new constant function.\n * @example\n *\n * var objects = _.times(2, _.constant({ 'a': 1 }));\n *\n * console.log(objects);\n * // => [{ 'a': 1 }, { 'a': 1 }]\n *\n * console.log(objects[0] === objects[1]);\n * // => true\n */\nfunction constant(value) {\n return function() {\n return value;\n };\n}\n\nmodule.exports = constant;\n","/** Used to detect hot functions by number of calls within a span of milliseconds. */\nvar HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeNow = Date.now;\n\n/**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\nfunction shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n}\n\nmodule.exports = shortOut;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","module.exports = require('../../modules/_wks-ext').f('toPrimitive');\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.set');\nrequire('../modules/es7.set.to-json');\nrequire('../modules/es7.set.of');\nrequire('../modules/es7.set.from');\nmodule.exports = require('../modules/_core').Set;\n","'use strict';\nvar strong = require('./_collection-strong');\nvar validate = require('./_validate-collection');\nvar SET = 'Set';\n\n// 23.2 Set Objects\nmodule.exports = require('./_collection')(SET, function (get) {\n return function Set() { return get(this, arguments.length > 0 ? arguments[0] : undefined); };\n}, {\n // 23.2.3.1 Set.prototype.add(value)\n add: function add(value) {\n return strong.def(validate(this, SET), value = value === 0 ? 0 : value, value);\n }\n}, strong);\n","'use strict';\nvar dP = require('./_object-dp').f;\nvar create = require('./_object-create');\nvar redefineAll = require('./_redefine-all');\nvar ctx = require('./_ctx');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar $iterDefine = require('./_iter-define');\nvar step = require('./_iter-step');\nvar setSpecies = require('./_set-species');\nvar DESCRIPTORS = require('./_descriptors');\nvar fastKey = require('./_meta').fastKey;\nvar validate = require('./_validate-collection');\nvar SIZE = DESCRIPTORS ? '_s' : 'size';\n\nvar getEntry = function (that, key) {\n // fast case\n var index = fastKey(key);\n var entry;\n if (index !== 'F') return that._i[index];\n // frozen object case\n for (entry = that._f; entry; entry = entry.n) {\n if (entry.k == key) return entry;\n }\n};\n\nmodule.exports = {\n getConstructor: function (wrapper, NAME, IS_MAP, ADDER) {\n var C = wrapper(function (that, iterable) {\n anInstance(that, C, NAME, '_i');\n that._t = NAME; // collection type\n that._i = create(null); // index\n that._f = undefined; // first entry\n that._l = undefined; // last entry\n that[SIZE] = 0; // size\n if (iterable != undefined) forOf(iterable, IS_MAP, that[ADDER], that);\n });\n redefineAll(C.prototype, {\n // 23.1.3.1 Map.prototype.clear()\n // 23.2.3.2 Set.prototype.clear()\n clear: function clear() {\n for (var that = validate(this, NAME), data = that._i, entry = that._f; entry; entry = entry.n) {\n entry.r = true;\n if (entry.p) entry.p = entry.p.n = undefined;\n delete data[entry.i];\n }\n that._f = that._l = undefined;\n that[SIZE] = 0;\n },\n // 23.1.3.3 Map.prototype.delete(key)\n // 23.2.3.4 Set.prototype.delete(value)\n 'delete': function (key) {\n var that = validate(this, NAME);\n var entry = getEntry(that, key);\n if (entry) {\n var next = entry.n;\n var prev = entry.p;\n delete that._i[entry.i];\n entry.r = true;\n if (prev) prev.n = next;\n if (next) next.p = prev;\n if (that._f == entry) that._f = next;\n if (that._l == entry) that._l = prev;\n that[SIZE]--;\n } return !!entry;\n },\n // 23.2.3.6 Set.prototype.forEach(callbackfn, thisArg = undefined)\n // 23.1.3.5 Map.prototype.forEach(callbackfn, thisArg = undefined)\n forEach: function forEach(callbackfn /* , that = undefined */) {\n validate(this, NAME);\n var f = ctx(callbackfn, arguments.length > 1 ? arguments[1] : undefined, 3);\n var entry;\n while (entry = entry ? entry.n : this._f) {\n f(entry.v, entry.k, this);\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n }\n },\n // 23.1.3.7 Map.prototype.has(key)\n // 23.2.3.7 Set.prototype.has(value)\n has: function has(key) {\n return !!getEntry(validate(this, NAME), key);\n }\n });\n if (DESCRIPTORS) dP(C.prototype, 'size', {\n get: function () {\n return validate(this, NAME)[SIZE];\n }\n });\n return C;\n },\n def: function (that, key, value) {\n var entry = getEntry(that, key);\n var prev, index;\n // change existing entry\n if (entry) {\n entry.v = value;\n // create new entry\n } else {\n that._l = entry = {\n i: index = fastKey(key, true), // <- index\n k: key, // <- key\n v: value, // <- value\n p: prev = that._l, // <- previous entry\n n: undefined, // <- next entry\n r: false // <- removed\n };\n if (!that._f) that._f = entry;\n if (prev) prev.n = entry;\n that[SIZE]++;\n // add to index\n if (index !== 'F') that._i[index] = entry;\n } return that;\n },\n getEntry: getEntry,\n setStrong: function (C, NAME, IS_MAP) {\n // add .keys, .values, .entries, [@@iterator]\n // 23.1.3.4, 23.1.3.8, 23.1.3.11, 23.1.3.12, 23.2.3.5, 23.2.3.8, 23.2.3.10, 23.2.3.11\n $iterDefine(C, NAME, function (iterated, kind) {\n this._t = validate(iterated, NAME); // target\n this._k = kind; // kind\n this._l = undefined; // previous\n }, function () {\n var that = this;\n var kind = that._k;\n var entry = that._l;\n // revert to the last existing entry\n while (entry && entry.r) entry = entry.p;\n // get next entry\n if (!that._t || !(that._l = entry = entry ? entry.n : that._t._f)) {\n // or finish the iteration\n that._t = undefined;\n return step(1);\n }\n // return step by kind\n if (kind == 'keys') return step(0, entry.k);\n if (kind == 'values') return step(0, entry.v);\n return step(0, [entry.k, entry.v]);\n }, IS_MAP ? 'entries' : 'values', !IS_MAP, true);\n\n // add [@@species], 23.1.2.2, 23.2.2.2\n setSpecies(NAME);\n }\n};\n","'use strict';\nvar global = require('./_global');\nvar $export = require('./_export');\nvar meta = require('./_meta');\nvar fails = require('./_fails');\nvar hide = require('./_hide');\nvar redefineAll = require('./_redefine-all');\nvar forOf = require('./_for-of');\nvar anInstance = require('./_an-instance');\nvar isObject = require('./_is-object');\nvar setToStringTag = require('./_set-to-string-tag');\nvar dP = require('./_object-dp').f;\nvar each = require('./_array-methods')(0);\nvar DESCRIPTORS = require('./_descriptors');\n\nmodule.exports = function (NAME, wrapper, methods, common, IS_MAP, IS_WEAK) {\n var Base = global[NAME];\n var C = Base;\n var ADDER = IS_MAP ? 'set' : 'add';\n var proto = C && C.prototype;\n var O = {};\n if (!DESCRIPTORS || typeof C != 'function' || !(IS_WEAK || proto.forEach && !fails(function () {\n new C().entries().next();\n }))) {\n // create collection constructor\n C = common.getConstructor(wrapper, NAME, IS_MAP, ADDER);\n redefineAll(C.prototype, methods);\n meta.NEED = true;\n } else {\n C = wrapper(function (target, iterable) {\n anInstance(target, C, NAME, '_c');\n target._c = new Base();\n if (iterable != undefined) forOf(iterable, IS_MAP, target[ADDER], target);\n });\n each('add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON'.split(','), function (KEY) {\n var IS_ADDER = KEY == 'add' || KEY == 'set';\n if (KEY in proto && !(IS_WEAK && KEY == 'clear')) hide(C.prototype, KEY, function (a, b) {\n anInstance(this, C, KEY);\n if (!IS_ADDER && IS_WEAK && !isObject(a)) return KEY == 'get' ? undefined : false;\n var result = this._c[KEY](a === 0 ? 0 : a, b);\n return IS_ADDER ? this : result;\n });\n });\n IS_WEAK || dP(C.prototype, 'size', {\n get: function () {\n return this._c.size;\n }\n });\n }\n\n setToStringTag(C, NAME);\n\n O[NAME] = C;\n $export($export.G + $export.W + $export.F, O);\n\n if (!IS_WEAK) common.setStrong(C, NAME, IS_MAP);\n\n return C;\n};\n","// 0 -> Array#forEach\n// 1 -> Array#map\n// 2 -> Array#filter\n// 3 -> Array#some\n// 4 -> Array#every\n// 5 -> Array#find\n// 6 -> Array#findIndex\nvar ctx = require('./_ctx');\nvar IObject = require('./_iobject');\nvar toObject = require('./_to-object');\nvar toLength = require('./_to-length');\nvar asc = require('./_array-species-create');\nmodule.exports = function (TYPE, $create) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n var create = $create || asc;\n return function ($this, callbackfn, that) {\n var O = toObject($this);\n var self = IObject(O);\n var f = ctx(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var result = IS_MAP ? create($this, length) : IS_FILTER ? create($this, 0) : undefined;\n var val, res;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n val = self[index];\n res = f(val, index, O);\n if (TYPE) {\n if (IS_MAP) result[index] = res; // map\n else if (res) switch (TYPE) {\n case 3: return true; // some\n case 5: return val; // find\n case 6: return index; // findIndex\n case 2: result.push(val); // filter\n } else if (IS_EVERY) return false; // every\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : result;\n };\n};\n","// 9.4.2.3 ArraySpeciesCreate(originalArray, length)\nvar speciesConstructor = require('./_array-species-constructor');\n\nmodule.exports = function (original, length) {\n return new (speciesConstructor(original))(length);\n};\n","var isObject = require('./_is-object');\nvar isArray = require('./_is-array');\nvar SPECIES = require('./_wks')('species');\n\nmodule.exports = function (original) {\n var C;\n if (isArray(original)) {\n C = original.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar $export = require('./_export');\n\n$export($export.P + $export.R, 'Set', { toJSON: require('./_collection-to-json')('Set') });\n","// https://github.com/DavidBruant/Map-Set.prototype.toJSON\nvar classof = require('./_classof');\nvar from = require('./_array-from-iterable');\nmodule.exports = function (NAME) {\n return function toJSON() {\n if (classof(this) != NAME) throw TypeError(NAME + \"#toJSON isn't generic\");\n return from(this);\n };\n};\n","var forOf = require('./_for-of');\n\nmodule.exports = function (iter, ITERATOR) {\n var result = [];\n forOf(iter, false, result.push, result, ITERATOR);\n return result;\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.of\nrequire('./_set-collection-of')('Set');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { of: function of() {\n var length = arguments.length;\n var A = new Array(length);\n while (length--) A[length] = arguments[length];\n return new this(A);\n } });\n};\n","// https://tc39.github.io/proposal-setmap-offrom/#sec-set.from\nrequire('./_set-collection-from')('Set');\n","'use strict';\n// https://tc39.github.io/proposal-setmap-offrom/\nvar $export = require('./_export');\nvar aFunction = require('./_a-function');\nvar ctx = require('./_ctx');\nvar forOf = require('./_for-of');\n\nmodule.exports = function (COLLECTION) {\n $export($export.S, COLLECTION, { from: function from(source /* , mapFn, thisArg */) {\n var mapFn = arguments[1];\n var mapping, A, n, cb;\n aFunction(this);\n mapping = mapFn !== undefined;\n if (mapping) aFunction(mapFn);\n if (source == undefined) return new this();\n A = [];\n if (mapping) {\n n = 0;\n cb = ctx(mapFn, arguments[2], 2);\n forOf(source, false, function (nextItem) {\n A.push(cb(nextItem, n++));\n });\n } else {\n forOf(source, false, A.push, A);\n }\n return new this(A);\n } });\n};\n","require('../../modules/es6.string.iterator');\nrequire('../../modules/es6.array.from');\nmodule.exports = require('../../modules/_core').Array.from;\n","'use strict';\nvar ctx = require('./_ctx');\nvar $export = require('./_export');\nvar toObject = require('./_to-object');\nvar call = require('./_iter-call');\nvar isArrayIter = require('./_is-array-iter');\nvar toLength = require('./_to-length');\nvar createProperty = require('./_create-property');\nvar getIterFn = require('./core.get-iterator-method');\n\n$export($export.S + $export.F * !require('./_iter-detect')(function (iter) { Array.from(iter); }), 'Array', {\n // 22.1.2.1 Array.from(arrayLike, mapfn = undefined, thisArg = undefined)\n from: function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var aLen = arguments.length;\n var mapfn = aLen > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var index = 0;\n var iterFn = getIterFn(O);\n var length, result, step, iterator;\n if (mapping) mapfn = ctx(mapfn, aLen > 2 ? arguments[2] : undefined, 2);\n // if object isn't iterable or it's array with default iterator - use simple case\n if (iterFn != undefined && !(C == Array && isArrayIter(iterFn))) {\n for (iterator = iterFn.call(O), result = new C(); !(step = iterator.next()).done; index++) {\n createProperty(result, index, mapping ? call(iterator, mapfn, [step.value, index], true) : step.value);\n }\n } else {\n length = toLength(O.length);\n for (result = new C(length); length > index; index++) {\n createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);\n }\n }\n result.length = index;\n return result;\n }\n});\n","'use strict';\nvar $defineProperty = require('./_object-dp');\nvar createDesc = require('./_property-desc');\n\nmodule.exports = function (object, index, value) {\n if (index in object) $defineProperty.f(object, index, createDesc(0, value));\n else object[index] = value;\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.is-iterable');\n","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').isIterable = function (it) {\n var O = Object(it);\n return O[ITERATOR] !== undefined\n || '@@iterator' in O\n // eslint-disable-next-line no-prototype-builtins\n || Iterators.hasOwnProperty(classof(O));\n};\n","require('../../modules/es6.number.is-nan');\nmodule.exports = require('../../modules/_core').Number.isNaN;\n","// 20.1.2.4 Number.isNaN(number)\nvar $export = require('./_export');\n\n$export($export.S, 'Number', {\n isNaN: function isNaN(number) {\n // eslint-disable-next-line no-self-compare\n return number != number;\n }\n});\n","require('../../modules/es6.object.assign');\nmodule.exports = require('../../modules/_core').Object.assign;\n","// 19.1.3.1 Object.assign(target, source)\nvar $export = require('./_export');\n\n$export($export.S + $export.F, 'Object', { assign: require('./_object-assign') });\n","'use strict';\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = require('./_descriptors');\nvar getKeys = require('./_object-keys');\nvar gOPS = require('./_object-gops');\nvar pIE = require('./_object-pie');\nvar toObject = require('./_to-object');\nvar IObject = require('./_iobject');\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || require('./_fails')(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var baseClone = require('./_baseClone');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_SYMBOLS_FLAG = 4;\n\n/**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\nfunction cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n}\n\nmodule.exports = cloneDeep;\n","var Stack = require('./_Stack'),\n arrayEach = require('./_arrayEach'),\n assignValue = require('./_assignValue'),\n baseAssign = require('./_baseAssign'),\n baseAssignIn = require('./_baseAssignIn'),\n cloneBuffer = require('./_cloneBuffer'),\n copyArray = require('./_copyArray'),\n copySymbols = require('./_copySymbols'),\n copySymbolsIn = require('./_copySymbolsIn'),\n getAllKeys = require('./_getAllKeys'),\n getAllKeysIn = require('./_getAllKeysIn'),\n getTag = require('./_getTag'),\n initCloneArray = require('./_initCloneArray'),\n initCloneByTag = require('./_initCloneByTag'),\n initCloneObject = require('./_initCloneObject'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isMap = require('./isMap'),\n isObject = require('./isObject'),\n isSet = require('./isSet'),\n keys = require('./keys');\n\n/** Used to compose bitmasks for cloning. */\nvar CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values supported by `_.clone`. */\nvar cloneableTags = {};\ncloneableTags[argsTag] = cloneableTags[arrayTag] =\ncloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\ncloneableTags[boolTag] = cloneableTags[dateTag] =\ncloneableTags[float32Tag] = cloneableTags[float64Tag] =\ncloneableTags[int8Tag] = cloneableTags[int16Tag] =\ncloneableTags[int32Tag] = cloneableTags[mapTag] =\ncloneableTags[numberTag] = cloneableTags[objectTag] =\ncloneableTags[regexpTag] = cloneableTags[setTag] =\ncloneableTags[stringTag] = cloneableTags[symbolTag] =\ncloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\ncloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\ncloneableTags[errorTag] = cloneableTags[funcTag] =\ncloneableTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\nfunction baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n}\n\nmodule.exports = baseClone;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var copyObject = require('./_copyObject'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n}\n\nmodule.exports = baseAssign;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\nfunction baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n}\n\nmodule.exports = baseAssignIn;\n","var isObject = require('./isObject'),\n isPrototype = require('./_isPrototype'),\n nativeKeysIn = require('./_nativeKeysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeysIn;\n","/**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = nativeKeysIn;\n","var copyObject = require('./_copyObject'),\n getSymbols = require('./_getSymbols');\n\n/**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n}\n\nmodule.exports = copySymbols;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var copyObject = require('./_copyObject'),\n getSymbolsIn = require('./_getSymbolsIn');\n\n/**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\nfunction copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n}\n\nmodule.exports = copySymbolsIn;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbolsIn = require('./_getSymbolsIn'),\n keysIn = require('./keysIn');\n\n/**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n}\n\nmodule.exports = getAllKeysIn;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\nfunction initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n}\n\nmodule.exports = initCloneArray;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer'),\n cloneDataView = require('./_cloneDataView'),\n cloneRegExp = require('./_cloneRegExp'),\n cloneSymbol = require('./_cloneSymbol'),\n cloneTypedArray = require('./_cloneTypedArray');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\nfunction initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n}\n\nmodule.exports = initCloneByTag;\n","var cloneArrayBuffer = require('./_cloneArrayBuffer');\n\n/**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\nfunction cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n}\n\nmodule.exports = cloneDataView;\n","/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\nfunction cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n}\n\nmodule.exports = cloneRegExp;\n","var Symbol = require('./_Symbol');\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\nfunction cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n}\n\nmodule.exports = cloneSymbol;\n","var isObject = require('./isObject');\n\n/** Built-in value references. */\nvar objectCreate = Object.create;\n\n/**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\nvar baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n}());\n\nmodule.exports = baseCreate;\n","var baseIsMap = require('./_baseIsMap'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsMap = nodeUtil && nodeUtil.isMap;\n\n/**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\nvar isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\nmodule.exports = isMap;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]';\n\n/**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\nfunction baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n}\n\nmodule.exports = baseIsMap;\n","var baseIsSet = require('./_baseIsSet'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsSet = nodeUtil && nodeUtil.isSet;\n\n/**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\nvar isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\nmodule.exports = isSet;\n","var getTag = require('./_getTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar setTag = '[object Set]';\n\n/**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\nfunction baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n}\n\nmodule.exports = baseIsSet;\n","var isEqual = require('lodash/isEqual')\nvar sortBy = require('lodash/sortBy')\nvar uniq = require('lodash/uniq')\nvar uniqWith = require('lodash/uniqWith')\nvar defaults = require('lodash/defaults')\nvar intersectionWith = require('lodash/intersectionWith')\nvar isPlainObject = require('lodash/isPlainObject')\nvar isBoolean = require('lodash/isBoolean')\n\nvar normalizeArray = val => Array.isArray(val)\n ? val : [val]\nvar undef = val => val === undefined\nvar keys = obj => isPlainObject(obj) || Array.isArray(obj) ? Object.keys(obj) : []\nvar has = (obj, key) => obj.hasOwnProperty(key)\nvar stringArray = arr => sortBy(uniq(arr))\nvar undefEmpty = val => undef(val) || (Array.isArray(val) && val.length === 0)\nvar keyValEqual = (a, b, key, compare) => b && has(b, key) && a && has(a, key) && compare(a[key], b[key])\nvar undefAndZero = (a, b) => (undef(a) && b === 0) || (undef(b) && a === 0) || isEqual(a, b)\nvar falseUndefined = (a, b) => (undef(a) && b === false) || (undef(b) && a === false) || isEqual(a, b)\nvar emptySchema = schema => undef(schema) || isEqual(schema, {}) || schema === true\nvar emptyObjUndef = schema => undef(schema) || isEqual(schema, {})\nvar isSchema = val => undef(val) || isPlainObject(val) || val === true || val === false\n\nfunction undefArrayEqual(a, b) {\n if (undefEmpty(a) && undefEmpty(b)) {\n return true\n } else {\n return isEqual(stringArray(a), stringArray(b))\n }\n}\n\nfunction unsortedNormalizedArray(a, b) {\n a = normalizeArray(a)\n b = normalizeArray(b)\n return isEqual(stringArray(a), stringArray(b))\n}\n\nfunction schemaGroup(a, b, key, compare) {\n var allProps = uniq(keys(a).concat(keys(b)))\n if (emptyObjUndef(a) && emptyObjUndef(b)) {\n return true\n } else if (emptyObjUndef(a) && keys(b).length) {\n return false\n } else if (emptyObjUndef(b) && keys(a).length) {\n return false\n }\n\n return allProps.every(function(key) {\n var aVal = a[key]\n var bVal = b[key]\n if (Array.isArray(aVal) && Array.isArray(bVal)) {\n return isEqual(stringArray(a), stringArray(b))\n } else if (Array.isArray(aVal) && !Array.isArray(bVal)) {\n return false\n } else if (Array.isArray(bVal) && !Array.isArray(aVal)) {\n return false\n }\n return keyValEqual(a, b, key, compare)\n })\n}\n\nfunction items(a, b, key, compare) {\n if (isPlainObject(a) && isPlainObject(b)) {\n return compare(a, b)\n } else if (Array.isArray(a) && Array.isArray(b)) {\n return schemaGroup(a, b, key, compare)\n } else {\n return isEqual(a, b)\n }\n}\n\nfunction unsortedArray(a, b, key, compare) {\n var uniqueA = uniqWith(a, compare)\n var uniqueB = uniqWith(b, compare)\n var inter = intersectionWith(uniqueA, uniqueB, compare)\n return inter.length === Math.max(uniqueA.length, uniqueB.length)\n}\n\nvar comparers = {\n title: isEqual,\n uniqueItems: falseUndefined,\n minLength: undefAndZero,\n minItems: undefAndZero,\n minProperties: undefAndZero,\n required: undefArrayEqual,\n enum: undefArrayEqual,\n type: unsortedNormalizedArray,\n items: items,\n anyOf: unsortedArray,\n allOf: unsortedArray,\n oneOf: unsortedArray,\n properties: schemaGroup,\n patternProperties: schemaGroup,\n dependencies: schemaGroup\n}\n\nvar acceptsUndefined = [\n 'properties',\n 'patternProperties',\n 'dependencies',\n 'uniqueItems',\n 'minLength',\n 'minItems',\n 'minProperties',\n 'required'\n]\n\nvar schemaProps = ['additionalProperties', 'additionalItems', 'contains', 'propertyNames', 'not']\n\nfunction compare(a, b, options) {\n options = defaults(options, {\n ignore: []\n })\n\n if (emptySchema(a) && emptySchema(b)) {\n return true\n }\n\n if (!isSchema(a) || !isSchema(b)) {\n throw new Error('Either of the values are not a JSON schema.')\n }\n if (a === b) {\n return true\n }\n\n if (isBoolean(a) && isBoolean(b)) {\n return a === b\n }\n\n if ((a === undefined && b === false) || (b === undefined && a === false)) {\n return false\n }\n\n if ((undef(a) && !undef(b)) || (!undef(a) && undef(b))) {\n return false\n }\n\n var allKeys = uniq(Object.keys(a).concat(Object.keys(b)))\n\n if (options.ignore.length) {\n allKeys = allKeys.filter(k => options.ignore.indexOf(k) === -1)\n }\n\n if (!allKeys.length) {\n return true\n }\n\n function innerCompare(a, b) {\n return compare(a, b, options)\n }\n\n return allKeys.every(function(key) {\n var aValue = a[key]\n var bValue = b[key]\n\n if (schemaProps.indexOf(key) !== -1) {\n return compare(aValue, bValue, options)\n }\n\n var comparer = comparers[key]\n if (!comparer) {\n comparer = isEqual\n }\n\n // do simple lodash check first\n if (isEqual(aValue, bValue)) {\n return true\n }\n\n if (acceptsUndefined.indexOf(key) === -1) {\n if ((!has(a, key) && has(b, key)) || (has(a, key) && !has(b, key))) {\n return aValue === bValue\n }\n }\n\n var result = comparer(aValue, bValue, key, innerCompare)\n if (!isBoolean(result)) {\n throw new Error('Comparer must return true or false')\n }\n return result\n })\n}\n\nmodule.exports = compare\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","var arrayMap = require('./_arrayMap'),\n baseIteratee = require('./_baseIteratee'),\n baseMap = require('./_baseMap'),\n baseSortBy = require('./_baseSortBy'),\n baseUnary = require('./_baseUnary'),\n compareMultiple = require('./_compareMultiple'),\n identity = require('./identity');\n\n/**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\nfunction baseOrderBy(collection, iteratees, orders) {\n var index = -1;\n iteratees = arrayMap(iteratees.length ? iteratees : [identity], baseUnary(baseIteratee));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n}\n\nmodule.exports = baseOrderBy;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","var baseProperty = require('./_baseProperty'),\n basePropertyDeep = require('./_basePropertyDeep'),\n isKey = require('./_isKey'),\n toKey = require('./_toKey');\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = property;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","var baseEach = require('./_baseEach'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n}\n\nmodule.exports = baseMap;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var isArrayLike = require('./isArrayLike');\n\n/**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n}\n\nmodule.exports = createBaseEach;\n","/**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\nfunction baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n}\n\nmodule.exports = baseSortBy;\n","var compareAscending = require('./_compareAscending');\n\n/**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\nfunction compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n}\n\nmodule.exports = compareMultiple;\n","var isSymbol = require('./isSymbol');\n\n/**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\nfunction compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n}\n\nmodule.exports = compareAscending;\n","/**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseFindIndex;\n","/**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\nfunction baseIsNaN(value) {\n return value !== value;\n}\n\nmodule.exports = baseIsNaN;\n","/**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = strictIndexOf;\n","var Set = require('./_Set'),\n noop = require('./noop'),\n setToArray = require('./_setToArray');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\nvar createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n};\n\nmodule.exports = createSet;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","var baseRest = require('./_baseRest'),\n eq = require('./eq'),\n isIterateeCall = require('./_isIterateeCall'),\n keysIn = require('./keysIn');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\nvar defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n});\n\nmodule.exports = defaults;\n","/**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\nfunction last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n}\n\nmodule.exports = last;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]';\n\n/**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\nfunction isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n}\n\nmodule.exports = isBoolean;\n","'use strict';\n\n// MODULES //\n\nvar gcd = require( 'compute-gcd' ),\n\tisArray = require( 'validate.io-array' ),\n\tisIntegerArray = require( 'validate.io-integer-array' ),\n\tisFunction = require( 'validate.io-function' );\n\n\n// LEAST COMMON MULTIPLE //\n\n/**\n* FUNCTION: lcm( arr[, clbk] )\n*\tComputes the least common multiple (lcm).\n*\n* @param {Number[]|Number} arr - input array of integers\n* @param {Function|Number} [accessor] - accessor function for accessing array values\n* @returns {Number|Null} least common multiple or null\n*/\nfunction lcm() {\n\tvar nargs = arguments.length,\n\t\targs,\n\t\tclbk,\n\t\tarr,\n\t\tlen,\n\t\ta, b,\n\t\ti;\n\n\t// Copy the input arguments to an array...\n\targs = new Array( nargs );\n\tfor ( i = 0; i < nargs; i++ ) {\n\t\targs[ i ] = arguments[ i ];\n\t}\n\t// Have we been provided with integer arguments?\n\tif ( isIntegerArray( args ) ) {\n\t\tif ( nargs === 2 ) {\n\t\t\ta = args[ 0 ];\n\t\t\tb = args[ 1 ];\n\t\t\tif ( a < 0 ) {\n\t\t\t\ta = -a;\n\t\t\t}\n\t\t\tif ( b < 0 ) {\n\t\t\t\tb = -b;\n\t\t\t}\n\t\t\tif ( a === 0 || b === 0 ) {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t\treturn ( a/gcd(a,b) ) * b;\n\t\t}\n\t\tarr = args;\n\t}\n\t// If not integers, ensure that the first argument is an array...\n\telse if ( !isArray( args[ 0 ] ) ) {\n\t\tthrow new TypeError( 'lcm()::invalid input argument. Must provide an array of integers. Value: `' + args[ 0 ] + '`.' );\n\t}\n\t// Have we been provided with more than one argument? If so, ensure that the accessor argument is a function...\n\telse if ( nargs > 1 ) {\n\t\tarr = args[ 0 ];\n\t\tclbk = args[ 1 ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( 'lcm()::invalid input argument. Accessor must be a function. Value: `' + clbk + '`.' );\n\t\t}\n\t}\n\t// We have been provided an array...\n\telse {\n\t\tarr = args[ 0 ];\n\t}\n\tlen = arr.length;\n\n\t// Check if a sufficient number of values have been provided...\n\tif ( len < 2 ) {\n\t\treturn null;\n\t}\n\t// If an accessor is provided, extract the array values...\n\tif ( clbk ) {\n\t\ta = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\ta[ i ] = clbk( arr[ i ], i );\n\t\t}\n\t\tarr = a;\n\t}\n\t// Given an input array, ensure all array values are integers...\n\tif ( nargs < 3 ) {\n\t\tif ( !isIntegerArray( arr ) ) {\n\t\t\tthrow new TypeError( 'lcm()::invalid input argument. Accessed array values must be integers. Value: `' + arr + '`.' );\n\t\t}\n\t}\n\t// Convert any negative integers to positive integers...\n\tfor ( i = 0; i < len; i++ ) {\n\t\ta = arr[ i ];\n\t\tif ( a < 0 ) {\n\t\t\tarr[ i ] = -a;\n\t\t}\n\t}\n\t// Exploit the fact that the lcm is an associative function...\n\ta = arr[ 0 ];\n\tfor ( i = 1; i < len; i++ ) {\n\t\tb = arr[ i ];\n\t\tif ( a === 0 || b === 0 ) {\n\t\t\treturn 0;\n\t\t}\n\t\ta = ( a/gcd(a,b) ) * b;\n\t}\n\treturn a;\n} // end FUNCTION lcm()\n\n\n// EXPORTS //\n\nmodule.exports = lcm;\n","'use strict';\n\n// MODULES //\n\nvar isArray = require( 'validate.io-array' ),\n\tisIntegerArray = require( 'validate.io-integer-array' ),\n\tisFunction = require( 'validate.io-function' );\n\n\n// VARIABLES //\n\nvar MAXINT = Math.pow( 2, 53 ) - 1;\n\n\n// FUNCTIONS //\n\n/**\n* FUNCTION: gcd( a, b )\n*\tComputes the greatest common divisor of two integers `a` and `b`, using the binary GCD algorithm.\n*\n* @param {Number} a - integer\n* @param {Number} b - integer\n* @returns {Number} greatest common divisor\n*/\nfunction gcd( a, b ) {\n\tvar k = 1,\n\t\tt;\n\t// Simple cases:\n\tif ( a === 0 ) {\n\t\treturn b;\n\t}\n\tif ( b === 0 ) {\n\t\treturn a;\n\t}\n\t// Reduce `a` and/or `b` to odd numbers and keep track of the greatest power of 2 dividing both `a` and `b`...\n\twhile ( a%2 === 0 && b%2 === 0 ) {\n\t\ta = a / 2; // right shift\n\t\tb = b / 2; // right shift\n\t\tk = k * 2; // left shift\n\t}\n\t// Reduce `a` to an odd number...\n\twhile ( a%2 === 0 ) {\n\t\ta = a / 2; // right shift\n\t}\n\t// Henceforth, `a` is always odd...\n\twhile ( b ) {\n\t\t// Remove all factors of 2 in `b`, as they are not common...\n\t\twhile ( b%2 === 0 ) {\n\t\t\tb = b / 2; // right shift\n\t\t}\n\t\t// `a` and `b` are both odd. Swap values such that `b` is the larger of the two values, and then set `b` to the difference (which is even)...\n\t\tif ( a > b ) {\n\t\t\tt = b;\n\t\t\tb = a;\n\t\t\ta = t;\n\t\t}\n\t\tb = b - a; // b=0 iff b=a\n\t}\n\t// Restore common factors of 2...\n\treturn k * a;\n} // end FUNCTION gcd()\n\n/**\n* FUNCTION: bitwise( a, b )\n*\tComputes the greatest common divisor of two integers `a` and `b`, using the binary GCD algorithm and bitwise operations.\n*\n* @param {Number} a - safe integer\n* @param {Number} b - safe integer\n* @returns {Number} greatest common divisor\n*/\nfunction bitwise( a, b ) {\n\tvar k = 0,\n\t\tt;\n\t// Simple cases:\n\tif ( a === 0 ) {\n\t\treturn b;\n\t}\n\tif ( b === 0 ) {\n\t\treturn a;\n\t}\n\t// Reduce `a` and/or `b` to odd numbers and keep track of the greatest power of 2 dividing both `a` and `b`...\n\twhile ( (a & 1) === 0 && (b & 1) === 0 ) {\n\t\ta >>>= 1; // right shift\n\t\tb >>>= 1; // right shift\n\t\tk++;\n\t}\n\t// Reduce `a` to an odd number...\n\twhile ( (a & 1) === 0 ) {\n\t\ta >>>= 1; // right shift\n\t}\n\t// Henceforth, `a` is always odd...\n\twhile ( b ) {\n\t\t// Remove all factors of 2 in `b`, as they are not common...\n\t\twhile ( (b & 1) === 0 ) {\n\t\t\tb >>>= 1; // right shift\n\t\t}\n\t\t// `a` and `b` are both odd. Swap values such that `b` is the larger of the two values, and then set `b` to the difference (which is even)...\n\t\tif ( a > b ) {\n\t\t\tt = b;\n\t\t\tb = a;\n\t\t\ta = t;\n\t\t}\n\t\tb = b - a; // b=0 iff b=a\n\t}\n\t// Restore common factors of 2...\n\treturn a << k;\n} // end FUNCTION bitwise()\n\n\n// GREATEST COMMON DIVISOR //\n\n/**\n* FUNCTION: compute( arr[, clbk] )\n*\tComputes the greatest common divisor.\n*\n* @param {Number[]|Number} arr - input array of integers\n* @param {Function|Number} [clbk] - accessor function for accessing array values\n* @returns {Number|Null} greatest common divisor or null\n*/\nfunction compute() {\n\tvar nargs = arguments.length,\n\t\targs,\n\t\tclbk,\n\t\tarr,\n\t\tlen,\n\t\ta, b,\n\t\ti;\n\n\t// Copy the input arguments to an array...\n\targs = new Array( nargs );\n\tfor ( i = 0; i < nargs; i++ ) {\n\t\targs[ i ] = arguments[ i ];\n\t}\n\t// Have we been provided with integer arguments?\n\tif ( isIntegerArray( args ) ) {\n\t\tif ( nargs === 2 ) {\n\t\t\ta = args[ 0 ];\n\t\t\tb = args[ 1 ];\n\t\t\tif ( a < 0 ) {\n\t\t\t\ta = -a;\n\t\t\t}\n\t\t\tif ( b < 0 ) {\n\t\t\t\tb = -b;\n\t\t\t}\n\t\t\tif ( a <= MAXINT && b <= MAXINT ) {\n\t\t\t\treturn bitwise( a, b );\n\t\t\t} else {\n\t\t\t\treturn gcd( a, b );\n\t\t\t}\n\t\t}\n\t\tarr = args;\n\t}\n\t// If not integers, ensure the first argument is an array...\n\telse if ( !isArray( args[ 0 ] ) ) {\n\t\tthrow new TypeError( 'gcd()::invalid input argument. Must provide an array of integers. Value: `' + args[ 0 ] + '`.' );\n\t}\n\t// Have we been provided with more than one argument? If so, ensure that the accessor argument is a function...\n\telse if ( nargs > 1 ) {\n\t\tarr = args[ 0 ];\n\t\tclbk = args[ 1 ];\n\t\tif ( !isFunction( clbk ) ) {\n\t\t\tthrow new TypeError( 'gcd()::invalid input argument. Accessor must be a function. Value: `' + clbk + '`.' );\n\t\t}\n\t}\n\t// We have been provided an array...\n\telse {\n\t\tarr = args[ 0 ];\n\t}\n\tlen = arr.length;\n\n\t// Check if a sufficient number of values have been provided...\n\tif ( len < 2 ) {\n\t\treturn null;\n\t}\n\t// If an accessor is provided, extract the array values...\n\tif ( clbk ) {\n\t\ta = new Array( len );\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\ta[ i ] = clbk( arr[ i ], i );\n\t\t}\n\t\tarr = a;\n\t}\n\t// Given an input array, ensure all array values are integers...\n\tif ( nargs < 3 ) {\n\t\tif ( !isIntegerArray( arr ) ) {\n\t\t\tthrow new TypeError( 'gcd()::invalid input argument. Accessed array values must be integers. Value: `' + arr + '`.' );\n\t\t}\n\t}\n\t// Convert any negative integers to positive integers...\n\tfor ( i = 0; i < len; i++ ) {\n\t\ta = arr[ i ];\n\t\tif ( a < 0 ) {\n\t\t\tarr[ i ] = -a;\n\t\t}\n\t}\n\t// Exploit the fact that the gcd is an associative function...\n\ta = arr[ 0 ];\n\tfor ( i = 1; i < len; i++ ) {\n\t\tb = arr[ i ];\n\t\tif ( b <= MAXINT && a <= MAXINT ) {\n\t\t\ta = bitwise( a, b );\n\t\t} else {\n\t\t\ta = gcd( a, b );\n\t\t}\n\t}\n\treturn a;\n} // end FUNCTION compute()\n\n\n// EXPORTS //\n\nmodule.exports = compute;\n","/**\n*\n*\tVALIDATE: integer\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is an integer.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n// MODULES //\n\nvar isNumber = require( 'validate.io-number' );\n\n\n// ISINTEGER //\n\n/**\n* FUNCTION: isInteger( value )\n*\tValidates if a value is an integer.\n*\n* @param {Number} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is an integer\n*/\nfunction isInteger( value ) {\n\treturn isNumber( value ) && value%1 === 0;\n} // end FUNCTION isInteger()\n\n\n// EXPORTS //\n\nmodule.exports = isInteger;\n","/**\n*\n*\tVALIDATE: number\n*\n*\n*\tDESCRIPTION:\n*\t\t- Validates if a value is a number.\n*\n*\n*\tNOTES:\n*\t\t[1]\n*\n*\n*\tTODO:\n*\t\t[1]\n*\n*\n*\tLICENSE:\n*\t\tMIT\n*\n*\tCopyright (c) 2014. Athan Reines.\n*\n*\n*\tAUTHOR:\n*\t\tAthan Reines. kgryte@gmail.com. 2014.\n*\n*/\n\n'use strict';\n\n/**\n* FUNCTION: isNumber( value )\n*\tValidates if a value is a number.\n*\n* @param {*} value - value to be validated\n* @returns {Boolean} boolean indicating whether value is a number\n*/\nfunction isNumber( value ) {\n\treturn ( typeof value === 'number' || Object.prototype.toString.call( value ) === '[object Number]' ) && value.valueOf() === value.valueOf();\n} // end FUNCTION isNumber()\n\n\n// EXPORTS //\n\nmodule.exports = isNumber;\n","var apply = require('./_apply'),\n baseRest = require('./_baseRest'),\n customDefaultsMerge = require('./_customDefaultsMerge'),\n mergeWith = require('./mergeWith');\n\n/**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\nvar defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n});\n\nmodule.exports = defaultsDeep;\n","var baseMerge = require('./_baseMerge'),\n isObject = require('./isObject');\n\n/**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\nfunction customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n}\n\nmodule.exports = customDefaultsMerge;\n","var assignMergeValue = require('./_assignMergeValue'),\n cloneBuffer = require('./_cloneBuffer'),\n cloneTypedArray = require('./_cloneTypedArray'),\n copyArray = require('./_copyArray'),\n initCloneObject = require('./_initCloneObject'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isArrayLikeObject = require('./isArrayLikeObject'),\n isBuffer = require('./isBuffer'),\n isFunction = require('./isFunction'),\n isObject = require('./isObject'),\n isPlainObject = require('./isPlainObject'),\n isTypedArray = require('./isTypedArray'),\n safeGet = require('./_safeGet'),\n toPlainObject = require('./toPlainObject');\n\n/**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\nfunction baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n}\n\nmodule.exports = baseMergeDeep;\n","var copyObject = require('./_copyObject'),\n keysIn = require('./keysIn');\n\n/**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\nfunction toPlainObject(value) {\n return copyObject(value, keysIn(value));\n}\n\nmodule.exports = toPlainObject;\n","var baseMerge = require('./_baseMerge'),\n createAssigner = require('./_createAssigner');\n\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\nvar mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\n\nmodule.exports = mergeWith;\n","var baseRest = require('./_baseRest'),\n isIterateeCall = require('./_isIterateeCall');\n\n/**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\nfunction createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n}\n\nmodule.exports = createAssigner;\n","var baseFlatten = require('./_baseFlatten');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\nfunction flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n}\n\nmodule.exports = flattenDeep;\n","var arrayMap = require('./_arrayMap'),\n baseIntersection = require('./_baseIntersection'),\n baseRest = require('./_baseRest'),\n castArrayLikeObject = require('./_castArrayLikeObject');\n\n/**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\nvar intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n});\n\nmodule.exports = intersection;\n","var basePullAll = require('./_basePullAll');\n\n/**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\nfunction pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n}\n\nmodule.exports = pullAll;\n","var arrayMap = require('./_arrayMap'),\n baseIndexOf = require('./_baseIndexOf'),\n baseIndexOfWith = require('./_baseIndexOfWith'),\n baseUnary = require('./_baseUnary'),\n copyArray = require('./_copyArray');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\nfunction basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n}\n\nmodule.exports = basePullAll;\n","/**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n}\n\nmodule.exports = baseIndexOfWith;\n","var arrayEach = require('./_arrayEach'),\n baseEach = require('./_baseEach'),\n castFunction = require('./_castFunction'),\n isArray = require('./isArray');\n\n/**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\nfunction forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, castFunction(iteratee));\n}\n\nmodule.exports = forEach;\n","var identity = require('./identity');\n\n/**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\nfunction castFunction(value) {\n return typeof value == 'function' ? value : identity;\n}\n\nmodule.exports = castFunction;\n","var baseDifference = require('./_baseDifference'),\n baseRest = require('./_baseRest'),\n isArrayLikeObject = require('./isArrayLikeObject');\n\n/**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\nvar without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n});\n\nmodule.exports = without;\n","var SetCache = require('./_SetCache'),\n arrayIncludes = require('./_arrayIncludes'),\n arrayIncludesWith = require('./_arrayIncludesWith'),\n arrayMap = require('./_arrayMap'),\n baseUnary = require('./_baseUnary'),\n cacheHas = require('./_cacheHas');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\nfunction baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n}\n\nmodule.exports = baseDifference;\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\nvar $export = require('./_export');\n\n$export($export.P, 'Array', { fill: require('./_array-fill') });\n\nrequire('./_add-to-unscopables')('fill');\n","// 22.1.3.6 Array.prototype.fill(value, start = 0, end = this.length)\n'use strict';\nvar toObject = require('./_to-object');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nvar toLength = require('./_to-length');\nmodule.exports = function fill(value /* , start = 0, end = @length */) {\n var O = toObject(this);\n var length = toLength(O.length);\n var aLen = arguments.length;\n var index = toAbsoluteIndex(aLen > 1 ? arguments[1] : undefined, length);\n var end = aLen > 2 ? arguments[2] : undefined;\n var endPos = end === undefined ? length : toAbsoluteIndex(end, length);\n while (endPos > index) O[index++] = value;\n return O;\n};\n","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n var iterFn = get(it);\n if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n return anObject(iterFn.call(it));\n};\n","'use strict';\n\nvar resolve = require('./resolve')\n , util = require('./util')\n , errorClasses = require('./error_classes')\n , stableStringify = require('fast-json-stable-stringify');\n\nvar validateGenerator = require('../dotjs/validate');\n\n/**\n * Functions below are used inside compiled validations function\n */\n\nvar ucs2length = util.ucs2length;\nvar equal = require('fast-deep-equal');\n\n// this error is thrown by async schemas to return validation errors via exception\nvar ValidationError = errorClasses.Validation;\n\nmodule.exports = compile;\n\n\n/**\n * Compiles schema to validation function\n * @this Ajv\n * @param {Object} schema schema object\n * @param {Object} root object with information about the root schema for this schema\n * @param {Object} localRefs the hash of local references inside the schema (created by resolve.id), used for inline resolution\n * @param {String} baseId base ID for IDs in the schema\n * @return {Function} validation function\n */\nfunction compile(schema, root, localRefs, baseId) {\n /* jshint validthis: true, evil: true */\n /* eslint no-shadow: 0 */\n var self = this\n , opts = this._opts\n , refVal = [ undefined ]\n , refs = {}\n , patterns = []\n , patternsHash = {}\n , defaults = []\n , defaultsHash = {}\n , customRules = [];\n\n root = root || { schema: schema, refVal: refVal, refs: refs };\n\n var c = checkCompiling.call(this, schema, root, baseId);\n var compilation = this._compilations[c.index];\n if (c.compiling) return (compilation.callValidate = callValidate);\n\n var formats = this._formats;\n var RULES = this.RULES;\n\n try {\n var v = localCompile(schema, root, localRefs, baseId);\n compilation.validate = v;\n var cv = compilation.callValidate;\n if (cv) {\n cv.schema = v.schema;\n cv.errors = null;\n cv.refs = v.refs;\n cv.refVal = v.refVal;\n cv.root = v.root;\n cv.$async = v.$async;\n if (opts.sourceCode) cv.source = v.source;\n }\n return v;\n } finally {\n endCompiling.call(this, schema, root, baseId);\n }\n\n /* @this {*} - custom context, see passContext option */\n function callValidate() {\n /* jshint validthis: true */\n var validate = compilation.validate;\n var result = validate.apply(this, arguments);\n callValidate.errors = validate.errors;\n return result;\n }\n\n function localCompile(_schema, _root, localRefs, baseId) {\n var isRoot = !_root || (_root && _root.schema == _schema);\n if (_root.schema != root.schema)\n return compile.call(self, _schema, _root, localRefs, baseId);\n\n var $async = _schema.$async === true;\n\n var sourceCode = validateGenerator({\n isTop: true,\n schema: _schema,\n isRoot: isRoot,\n baseId: baseId,\n root: _root,\n schemaPath: '',\n errSchemaPath: '#',\n errorPath: '\"\"',\n MissingRefError: errorClasses.MissingRef,\n RULES: RULES,\n validate: validateGenerator,\n util: util,\n resolve: resolve,\n resolveRef: resolveRef,\n usePattern: usePattern,\n useDefault: useDefault,\n useCustomRule: useCustomRule,\n opts: opts,\n formats: formats,\n logger: self.logger,\n self: self\n });\n\n sourceCode = vars(refVal, refValCode) + vars(patterns, patternCode)\n + vars(defaults, defaultCode) + vars(customRules, customRuleCode)\n + sourceCode;\n\n if (opts.processCode) sourceCode = opts.processCode(sourceCode, _schema);\n // console.log('\\n\\n\\n *** \\n', JSON.stringify(sourceCode));\n var validate;\n try {\n var makeValidate = new Function(\n 'self',\n 'RULES',\n 'formats',\n 'root',\n 'refVal',\n 'defaults',\n 'customRules',\n 'equal',\n 'ucs2length',\n 'ValidationError',\n sourceCode\n );\n\n validate = makeValidate(\n self,\n RULES,\n formats,\n root,\n refVal,\n defaults,\n customRules,\n equal,\n ucs2length,\n ValidationError\n );\n\n refVal[0] = validate;\n } catch(e) {\n self.logger.error('Error compiling schema, function code:', sourceCode);\n throw e;\n }\n\n validate.schema = _schema;\n validate.errors = null;\n validate.refs = refs;\n validate.refVal = refVal;\n validate.root = isRoot ? validate : _root;\n if ($async) validate.$async = true;\n if (opts.sourceCode === true) {\n validate.source = {\n code: sourceCode,\n patterns: patterns,\n defaults: defaults\n };\n }\n\n return validate;\n }\n\n function resolveRef(baseId, ref, isRoot) {\n ref = resolve.url(baseId, ref);\n var refIndex = refs[ref];\n var _refVal, refCode;\n if (refIndex !== undefined) {\n _refVal = refVal[refIndex];\n refCode = 'refVal[' + refIndex + ']';\n return resolvedRef(_refVal, refCode);\n }\n if (!isRoot && root.refs) {\n var rootRefId = root.refs[ref];\n if (rootRefId !== undefined) {\n _refVal = root.refVal[rootRefId];\n refCode = addLocalRef(ref, _refVal);\n return resolvedRef(_refVal, refCode);\n }\n }\n\n refCode = addLocalRef(ref);\n var v = resolve.call(self, localCompile, root, ref);\n if (v === undefined) {\n var localSchema = localRefs && localRefs[ref];\n if (localSchema) {\n v = resolve.inlineRef(localSchema, opts.inlineRefs)\n ? localSchema\n : compile.call(self, localSchema, root, localRefs, baseId);\n }\n }\n\n if (v === undefined) {\n removeLocalRef(ref);\n } else {\n replaceLocalRef(ref, v);\n return resolvedRef(v, refCode);\n }\n }\n\n function addLocalRef(ref, v) {\n var refId = refVal.length;\n refVal[refId] = v;\n refs[ref] = refId;\n return 'refVal' + refId;\n }\n\n function removeLocalRef(ref) {\n delete refs[ref];\n }\n\n function replaceLocalRef(ref, v) {\n var refId = refs[ref];\n refVal[refId] = v;\n }\n\n function resolvedRef(refVal, code) {\n return typeof refVal == 'object' || typeof refVal == 'boolean'\n ? { code: code, schema: refVal, inline: true }\n : { code: code, $async: refVal && !!refVal.$async };\n }\n\n function usePattern(regexStr) {\n var index = patternsHash[regexStr];\n if (index === undefined) {\n index = patternsHash[regexStr] = patterns.length;\n patterns[index] = regexStr;\n }\n return 'pattern' + index;\n }\n\n function useDefault(value) {\n switch (typeof value) {\n case 'boolean':\n case 'number':\n return '' + value;\n case 'string':\n return util.toQuotedString(value);\n case 'object':\n if (value === null) return 'null';\n var valueStr = stableStringify(value);\n var index = defaultsHash[valueStr];\n if (index === undefined) {\n index = defaultsHash[valueStr] = defaults.length;\n defaults[index] = value;\n }\n return 'default' + index;\n }\n }\n\n function useCustomRule(rule, schema, parentSchema, it) {\n if (self._opts.validateSchema !== false) {\n var deps = rule.definition.dependencies;\n if (deps && !deps.every(function(keyword) {\n return Object.prototype.hasOwnProperty.call(parentSchema, keyword);\n }))\n throw new Error('parent schema must have all required keywords: ' + deps.join(','));\n\n var validateSchema = rule.definition.validateSchema;\n if (validateSchema) {\n var valid = validateSchema(schema);\n if (!valid) {\n var message = 'keyword schema is invalid: ' + self.errorsText(validateSchema.errors);\n if (self._opts.validateSchema == 'log') self.logger.error(message);\n else throw new Error(message);\n }\n }\n }\n\n var compile = rule.definition.compile\n , inline = rule.definition.inline\n , macro = rule.definition.macro;\n\n var validate;\n if (compile) {\n validate = compile.call(self, schema, parentSchema, it);\n } else if (macro) {\n validate = macro.call(self, schema, parentSchema, it);\n if (opts.validateSchema !== false) self.validateSchema(validate, true);\n } else if (inline) {\n validate = inline.call(self, it, rule.keyword, schema, parentSchema);\n } else {\n validate = rule.definition.validate;\n if (!validate) return;\n }\n\n if (validate === undefined)\n throw new Error('custom keyword \"' + rule.keyword + '\"failed to compile');\n\n var index = customRules.length;\n customRules[index] = validate;\n\n return {\n code: 'customRule' + index,\n validate: validate\n };\n }\n}\n\n\n/**\n * Checks if the schema is currently compiled\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Object} object with properties \"index\" (compilation index) and \"compiling\" (boolean)\n */\nfunction checkCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var index = compIndex.call(this, schema, root, baseId);\n if (index >= 0) return { index: index, compiling: true };\n index = this._compilations.length;\n this._compilations[index] = {\n schema: schema,\n root: root,\n baseId: baseId\n };\n return { index: index, compiling: false };\n}\n\n\n/**\n * Removes the schema from the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n */\nfunction endCompiling(schema, root, baseId) {\n /* jshint validthis: true */\n var i = compIndex.call(this, schema, root, baseId);\n if (i >= 0) this._compilations.splice(i, 1);\n}\n\n\n/**\n * Index of schema compilation in the currently compiled list\n * @this Ajv\n * @param {Object} schema schema to compile\n * @param {Object} root root object\n * @param {String} baseId base schema ID\n * @return {Integer} compilation index\n */\nfunction compIndex(schema, root, baseId) {\n /* jshint validthis: true */\n for (var i=0; i):string {\n\tif (sets.length > 1) {\n\t\tsets[0] = sets[0].slice(0, -1);\n\t\tconst xl = sets.length - 1;\n\t\tfor (let x = 1; x < xl; ++x) {\n\t\t\tsets[x] = sets[x].slice(1, -1);\n\t\t}\n\t\tsets[xl] = sets[xl].slice(1);\n\t\treturn sets.join('');\n\t} else {\n\t\treturn sets[0];\n\t}\n}\n\nexport function subexp(str:string):string {\n\treturn \"(?:\" + str + \")\";\n}\n\nexport function typeOf(o:any):string {\n\treturn o === undefined ? \"undefined\" : (o === null ? \"null\" : Object.prototype.toString.call(o).split(\" \").pop().split(\"]\").shift().toLowerCase());\n}\n\nexport function toUpperCase(str:string):string {\n\treturn str.toUpperCase();\n}\n\nexport function toArray(obj:any):Array {\n\treturn obj !== undefined && obj !== null ? (obj instanceof Array ? obj : (typeof obj.length !== \"number\" || obj.split || obj.setInterval || obj.call ? [obj] : Array.prototype.slice.call(obj))) : [];\n}\n\n\nexport function assign(target: object, source: any): any {\n\tconst obj = target as any;\n\tif (source) {\n\t\tfor (const key in source) {\n\t\t\tobj[key] = source[key];\n\t\t}\n\t}\n\treturn obj;\n}","import { URIRegExps } from \"./uri\";\nimport { merge, subexp } from \"./util\";\n\nexport function buildExps(isIRI:boolean):URIRegExps {\n\tconst\n\t\tALPHA$$ = \"[A-Za-z]\",\n\t\tCR$ = \"[\\\\x0D]\",\n\t\tDIGIT$$ = \"[0-9]\",\n\t\tDQUOTE$$ = \"[\\\\x22]\",\n\t\tHEXDIG$$ = merge(DIGIT$$, \"[A-Fa-f]\"), //case-insensitive\n\t\tLF$$ = \"[\\\\x0A]\",\n\t\tSP$$ = \"[\\\\x20]\",\n\t\tPCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)), //expanded\n\t\tGEN_DELIMS$$ = \"[\\\\:\\\\/\\\\?\\\\#\\\\[\\\\]\\\\@]\",\n\t\tSUB_DELIMS$$ = \"[\\\\!\\\\$\\\\&\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\=]\",\n\t\tRESERVED$$ = merge(GEN_DELIMS$$, SUB_DELIMS$$),\n\t\tUCSCHAR$$ = isIRI ? \"[\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF]\" : \"[]\", //subset, excludes bidi control characters\n\t\tIPRIVATE$$ = isIRI ? \"[\\\\uE000-\\\\uF8FF]\" : \"[]\", //subset\n\t\tUNRESERVED$$ = merge(ALPHA$$, DIGIT$$, \"[\\\\-\\\\.\\\\_\\\\~]\", UCSCHAR$$),\n\t\tSCHEME$ = subexp(ALPHA$$ + merge(ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\") + \"*\"),\n\t\tUSERINFO$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\")) + \"*\"),\n\t\tDEC_OCTET$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"[1-9]\" + DIGIT$$) + \"|\" + DIGIT$$),\n\t\tDEC_OCTET_RELAXED$ = subexp(subexp(\"25[0-5]\") + \"|\" + subexp(\"2[0-4]\" + DIGIT$$) + \"|\" + subexp(\"1\" + DIGIT$$ + DIGIT$$) + \"|\" + subexp(\"0?[1-9]\" + DIGIT$$) + \"|0?0?\" + DIGIT$$), //relaxed parsing rules\n\t\tIPV4ADDRESS$ = subexp(DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$ + \"\\\\.\" + DEC_OCTET_RELAXED$),\n\t\tH16$ = subexp(HEXDIG$$ + \"{1,4}\"),\n\t\tLS32$ = subexp(subexp(H16$ + \"\\\\:\" + H16$) + \"|\" + IPV4ADDRESS$),\n\t\tIPV6ADDRESS1$ = subexp( subexp(H16$ + \"\\\\:\") + \"{6}\" + LS32$), // 6( h16 \":\" ) ls32\n\t\tIPV6ADDRESS2$ = subexp( \"\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{5}\" + LS32$), // \"::\" 5( h16 \":\" ) ls32\n\t\tIPV6ADDRESS3$ = subexp(subexp( H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{4}\" + LS32$), //[ h16 ] \"::\" 4( h16 \":\" ) ls32\n\t\tIPV6ADDRESS4$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,1}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{3}\" + LS32$), //[ *1( h16 \":\" ) h16 ] \"::\" 3( h16 \":\" ) ls32\n\t\tIPV6ADDRESS5$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,2}\" + H16$) + \"?\\\\:\\\\:\" + subexp(H16$ + \"\\\\:\") + \"{2}\" + LS32$), //[ *2( h16 \":\" ) h16 ] \"::\" 2( h16 \":\" ) ls32\n\t\tIPV6ADDRESS6$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,3}\" + H16$) + \"?\\\\:\\\\:\" + H16$ + \"\\\\:\" + LS32$), //[ *3( h16 \":\" ) h16 ] \"::\" h16 \":\" ls32\n\t\tIPV6ADDRESS7$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,4}\" + H16$) + \"?\\\\:\\\\:\" + LS32$), //[ *4( h16 \":\" ) h16 ] \"::\" ls32\n\t\tIPV6ADDRESS8$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,5}\" + H16$) + \"?\\\\:\\\\:\" + H16$ ), //[ *5( h16 \":\" ) h16 ] \"::\" h16\n\t\tIPV6ADDRESS9$ = subexp(subexp(subexp(H16$ + \"\\\\:\") + \"{0,6}\" + H16$) + \"?\\\\:\\\\:\" ), //[ *6( h16 \":\" ) h16 ] \"::\"\n\t\tIPV6ADDRESS$ = subexp([IPV6ADDRESS1$, IPV6ADDRESS2$, IPV6ADDRESS3$, IPV6ADDRESS4$, IPV6ADDRESS5$, IPV6ADDRESS6$, IPV6ADDRESS7$, IPV6ADDRESS8$, IPV6ADDRESS9$].join(\"|\")),\n\t\tZONEID$ = subexp(subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$) + \"+\"), //RFC 6874\n\t\tIPV6ADDRZ$ = subexp(IPV6ADDRESS$ + \"\\\\%25\" + ZONEID$), //RFC 6874\n\t\tIPV6ADDRZ_RELAXED$ = subexp(IPV6ADDRESS$ + subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + ZONEID$), //RFC 6874, with relaxed parsing rules\n\t\tIPVFUTURE$ = subexp(\"[vV]\" + HEXDIG$$ + \"+\\\\.\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:]\") + \"+\"),\n\t\tIP_LITERAL$ = subexp(\"\\\\[\" + subexp(IPV6ADDRZ_RELAXED$ + \"|\" + IPV6ADDRESS$ + \"|\" + IPVFUTURE$) + \"\\\\]\"), //RFC 6874\n\t\tREG_NAME$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$)) + \"*\"),\n\t\tHOST$ = subexp(IP_LITERAL$ + \"|\" + IPV4ADDRESS$ + \"(?!\" + REG_NAME$ + \")\" + \"|\" + REG_NAME$),\n\t\tPORT$ = subexp(DIGIT$$ + \"*\"),\n\t\tAUTHORITY$ = subexp(subexp(USERINFO$ + \"@\") + \"?\" + HOST$ + subexp(\"\\\\:\" + PORT$) + \"?\"),\n\t\tPCHAR$ = subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@]\")),\n\t\tSEGMENT$ = subexp(PCHAR$ + \"*\"),\n\t\tSEGMENT_NZ$ = subexp(PCHAR$ + \"+\"),\n\t\tSEGMENT_NZ_NC$ = subexp(subexp(PCT_ENCODED$ + \"|\" + merge(UNRESERVED$$, SUB_DELIMS$$, \"[\\\\@]\")) + \"+\"),\n\t\tPATH_ABEMPTY$ = subexp(subexp(\"\\\\/\" + SEGMENT$) + \"*\"),\n\t\tPATH_ABSOLUTE$ = subexp(\"\\\\/\" + subexp(SEGMENT_NZ$ + PATH_ABEMPTY$) + \"?\"), //simplified\n\t\tPATH_NOSCHEME$ = subexp(SEGMENT_NZ_NC$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_ROOTLESS$ = subexp(SEGMENT_NZ$ + PATH_ABEMPTY$), //simplified\n\t\tPATH_EMPTY$ = \"(?!\" + PCHAR$ + \")\",\n\t\tPATH$ = subexp(PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tQUERY$ = subexp(subexp(PCHAR$ + \"|\" + merge(\"[\\\\/\\\\?]\", IPRIVATE$$)) + \"*\"),\n\t\tFRAGMENT$ = subexp(subexp(PCHAR$ + \"|[\\\\/\\\\?]\") + \"*\"),\n\t\tHIER_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$),\n\t\tURI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tRELATIVE_PART$ = subexp(subexp(\"\\\\/\\\\/\" + AUTHORITY$ + PATH_ABEMPTY$) + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$),\n\t\tRELATIVE$ = subexp(RELATIVE_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\" + subexp(\"\\\\#\" + FRAGMENT$) + \"?\"),\n\t\tURI_REFERENCE$ = subexp(URI$ + \"|\" + RELATIVE$),\n\t\tABSOLUTE_URI$ = subexp(SCHEME$ + \"\\\\:\" + HIER_PART$ + subexp(\"\\\\?\" + QUERY$) + \"?\"),\n\n\t\tGENERIC_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tRELATIVE_REF$ = \"^(){0}\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_NOSCHEME$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tABSOLUTE_REF$ = \"^(\" + SCHEME$ + \")\\\\:\" + subexp(subexp(\"\\\\/\\\\/(\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?)\") + \"?(\" + PATH_ABEMPTY$ + \"|\" + PATH_ABSOLUTE$ + \"|\" + PATH_ROOTLESS$ + \"|\" + PATH_EMPTY$ + \")\") + subexp(\"\\\\?(\" + QUERY$ + \")\") + \"?$\",\n\t\tSAMEDOC_REF$ = \"^\" + subexp(\"\\\\#(\" + FRAGMENT$ + \")\") + \"?$\",\n\t\tAUTHORITY_REF$ = \"^\" + subexp(\"(\" + USERINFO$ + \")@\") + \"?(\" + HOST$ + \")\" + subexp(\"\\\\:(\" + PORT$ + \")\") + \"?$\"\n\t;\n\n\treturn {\n\t\tNOT_SCHEME : new RegExp(merge(\"[^]\", ALPHA$$, DIGIT$$, \"[\\\\+\\\\-\\\\.]\"), \"g\"),\n\t\tNOT_USERINFO : new RegExp(merge(\"[^\\\\%\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_HOST : new RegExp(merge(\"[^\\\\%\\\\[\\\\]\\\\:]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH : new RegExp(merge(\"[^\\\\%\\\\/\\\\:\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_PATH_NOSCHEME : new RegExp(merge(\"[^\\\\%\\\\/\\\\@]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tNOT_QUERY : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\", IPRIVATE$$), \"g\"),\n\t\tNOT_FRAGMENT : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, SUB_DELIMS$$, \"[\\\\:\\\\@\\\\/\\\\?]\"), \"g\"),\n\t\tESCAPE : new RegExp(merge(\"[^]\", UNRESERVED$$, SUB_DELIMS$$), \"g\"),\n\t\tUNRESERVED : new RegExp(UNRESERVED$$, \"g\"),\n\t\tOTHER_CHARS : new RegExp(merge(\"[^\\\\%]\", UNRESERVED$$, RESERVED$$), \"g\"),\n\t\tPCT_ENCODED : new RegExp(PCT_ENCODED$, \"g\"),\n\t\tIPV4ADDRESS : new RegExp(\"^(\" + IPV4ADDRESS$ + \")$\"),\n\t\tIPV6ADDRESS : new RegExp(\"^\\\\[?(\" + IPV6ADDRESS$ + \")\" + subexp(subexp(\"\\\\%25|\\\\%(?!\" + HEXDIG$$ + \"{2})\") + \"(\" + ZONEID$ + \")\") + \"?\\\\]?$\") //RFC 6874, with relaxed parsing rules\n\t};\n}\n\nexport default buildExps(false);\n","import { URIRegExps } from \"./uri\";\nimport { buildExps } from \"./regexps-uri\";\n\nexport default buildExps(true);\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nexport default punycode;\n","/**\n * URI.js\n *\n * @fileoverview An RFC 3986 compliant, scheme extendable URI parsing/validating/resolving library for JavaScript.\n * @author Gary Court\n * @see http://github.com/garycourt/uri-js\n */\n\n/**\n * Copyright 2011 Gary Court. All rights reserved.\n *\n * Redistribution and use in source and binary forms, with or without modification, are\n * permitted provided that the following conditions are met:\n *\n * 1. Redistributions of source code must retain the above copyright notice, this list of\n * conditions and the following disclaimer.\n *\n * 2. Redistributions in binary form must reproduce the above copyright notice, this list\n * of conditions and the following disclaimer in the documentation and/or other materials\n * provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY GARY COURT ``AS IS'' AND ANY EXPRESS OR IMPLIED\n * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND\n * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GARY COURT OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR\n * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\n * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON\n * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\n * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\n * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * The views and conclusions contained in the software and documentation are those of the\n * authors and should not be interpreted as representing official policies, either expressed\n * or implied, of Gary Court.\n */\n\nimport URI_PROTOCOL from \"./regexps-uri\";\nimport IRI_PROTOCOL from \"./regexps-iri\";\nimport punycode from \"punycode\";\nimport { toUpperCase, typeOf, assign } from \"./util\";\n\nexport interface URIComponents {\n\tscheme?:string;\n\tuserinfo?:string;\n\thost?:string;\n\tport?:number|string;\n\tpath?:string;\n\tquery?:string;\n\tfragment?:string;\n\treference?:string;\n\terror?:string;\n}\n\nexport interface URIOptions {\n\tscheme?:string;\n\treference?:string;\n\ttolerant?:boolean;\n\tabsolutePath?:boolean;\n\tiri?:boolean;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n}\n\nexport interface URISchemeHandler {\n\tscheme:string;\n\tparse(components:ParentComponents, options:Options):Components;\n\tserialize(components:Components, options:Options):ParentComponents;\n\tunicodeSupport?:boolean;\n\tdomainHost?:boolean;\n\tabsolutePath?:boolean;\n}\n\nexport interface URIRegExps {\n\tNOT_SCHEME : RegExp,\n\tNOT_USERINFO : RegExp,\n\tNOT_HOST : RegExp,\n\tNOT_PATH : RegExp,\n\tNOT_PATH_NOSCHEME : RegExp,\n\tNOT_QUERY : RegExp,\n\tNOT_FRAGMENT : RegExp,\n\tESCAPE : RegExp,\n\tUNRESERVED : RegExp,\n\tOTHER_CHARS : RegExp,\n\tPCT_ENCODED : RegExp,\n\tIPV4ADDRESS : RegExp,\n\tIPV6ADDRESS : RegExp,\n}\n\nexport const SCHEMES:{[scheme:string]:URISchemeHandler} = {};\n\nexport function pctEncChar(chr:string):string {\n\tconst c = chr.charCodeAt(0);\n\tlet e:string;\n\n\tif (c < 16) e = \"%0\" + c.toString(16).toUpperCase();\n\telse if (c < 128) e = \"%\" + c.toString(16).toUpperCase();\n\telse if (c < 2048) e = \"%\" + ((c >> 6) | 192).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\telse e = \"%\" + ((c >> 12) | 224).toString(16).toUpperCase() + \"%\" + (((c >> 6) & 63) | 128).toString(16).toUpperCase() + \"%\" + ((c & 63) | 128).toString(16).toUpperCase();\n\n\treturn e;\n}\n\nexport function pctDecChars(str:string):string {\n\tlet newStr = \"\";\n\tlet i = 0;\n\tconst il = str.length;\n\n\twhile (i < il) {\n\t\tconst c = parseInt(str.substr(i + 1, 2), 16);\n\n\t\tif (c < 128) {\n\t\t\tnewStr += String.fromCharCode(c);\n\t\t\ti += 3;\n\t\t}\n\t\telse if (c >= 194 && c < 224) {\n\t\t\tif ((il - i) >= 6) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 31) << 6) | (c2 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 6);\n\t\t\t}\n\t\t\ti += 6;\n\t\t}\n\t\telse if (c >= 224) {\n\t\t\tif ((il - i) >= 9) {\n\t\t\t\tconst c2 = parseInt(str.substr(i + 4, 2), 16);\n\t\t\t\tconst c3 = parseInt(str.substr(i + 7, 2), 16);\n\t\t\t\tnewStr += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\n\t\t\t} else {\n\t\t\t\tnewStr += str.substr(i, 9);\n\t\t\t}\n\t\t\ti += 9;\n\t\t}\n\t\telse {\n\t\t\tnewStr += str.substr(i, 3);\n\t\t\ti += 3;\n\t\t}\n\t}\n\n\treturn newStr;\n}\n\nfunction _normalizeComponentEncoding(components:URIComponents, protocol:URIRegExps) {\n\tfunction decodeUnreserved(str:string):string {\n\t\tconst decStr = pctDecChars(str);\n\t\treturn (!decStr.match(protocol.UNRESERVED) ? str : decStr);\n\t}\n\n\tif (components.scheme) components.scheme = String(components.scheme).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_SCHEME, \"\");\n\tif (components.userinfo !== undefined) components.userinfo = String(components.userinfo).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_USERINFO, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.host !== undefined) components.host = String(components.host).replace(protocol.PCT_ENCODED, decodeUnreserved).toLowerCase().replace(protocol.NOT_HOST, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.path !== undefined) components.path = String(components.path).replace(protocol.PCT_ENCODED, decodeUnreserved).replace((components.scheme ? protocol.NOT_PATH : protocol.NOT_PATH_NOSCHEME), pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.query !== undefined) components.query = String(components.query).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_QUERY, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\tif (components.fragment !== undefined) components.fragment = String(components.fragment).replace(protocol.PCT_ENCODED, decodeUnreserved).replace(protocol.NOT_FRAGMENT, pctEncChar).replace(protocol.PCT_ENCODED, toUpperCase);\n\n\treturn components;\n};\n\nfunction _stripLeadingZeros(str:string):string {\n\treturn str.replace(/^0*(.*)/, \"$1\") || \"0\";\n}\n\nfunction _normalizeIPv4(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV4ADDRESS) || [];\n\tconst [, address] = matches;\n\t\n\tif (address) {\n\t\treturn address.split(\".\").map(_stripLeadingZeros).join(\".\");\n\t} else {\n\t\treturn host;\n\t}\n}\n\nfunction _normalizeIPv6(host:string, protocol:URIRegExps):string {\n\tconst matches = host.match(protocol.IPV6ADDRESS) || [];\n\tconst [, address, zone] = matches;\n\n\tif (address) {\n\t\tconst [last, first] = address.toLowerCase().split('::').reverse();\n\t\tconst firstFields = first ? first.split(\":\").map(_stripLeadingZeros) : [];\n\t\tconst lastFields = last.split(\":\").map(_stripLeadingZeros);\n\t\tconst isLastFieldIPv4Address = protocol.IPV4ADDRESS.test(lastFields[lastFields.length - 1]);\n\t\tconst fieldCount = isLastFieldIPv4Address ? 7 : 8;\n\t\tconst lastFieldsStart = lastFields.length - fieldCount;\n\t\tconst fields = Array(fieldCount);\n\n\t\tfor (let x = 0; x < fieldCount; ++x) {\n\t\t\tfields[x] = firstFields[x] || lastFields[lastFieldsStart + x] || '';\n\t\t}\n\n\t\tif (isLastFieldIPv4Address) {\n\t\t\tfields[fieldCount - 1] = _normalizeIPv4(fields[fieldCount - 1], protocol);\n\t\t}\n\n\t\tconst allZeroFields = fields.reduce>((acc, field, index) => {\n\t\t\tif (!field || field === \"0\") {\n\t\t\t\tconst lastLongest = acc[acc.length - 1];\n\t\t\t\tif (lastLongest && lastLongest.index + lastLongest.length === index) {\n\t\t\t\t\tlastLongest.length++;\n\t\t\t\t} else {\n\t\t\t\t\tacc.push({ index, length : 1 });\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn acc;\n\t\t}, []);\n\n\t\tconst longestZeroFields = allZeroFields.sort((a, b) => b.length - a.length)[0];\n\n\t\tlet newHost:string;\n\t\tif (longestZeroFields && longestZeroFields.length > 1) {\n\t\t\tconst newFirst = fields.slice(0, longestZeroFields.index) ;\n\t\t\tconst newLast = fields.slice(longestZeroFields.index + longestZeroFields.length);\n\t\t\tnewHost = newFirst.join(\":\") + \"::\" + newLast.join(\":\");\n\t\t} else {\n\t\t\tnewHost = fields.join(\":\");\n\t\t}\n\n\t\tif (zone) {\n\t\t\tnewHost += \"%\" + zone;\n\t\t}\n\n\t\treturn newHost;\n\t} else {\n\t\treturn host;\n\t}\n}\n\nconst URI_PARSE = /^(?:([^:\\/?#]+):)?(?:\\/\\/((?:([^\\/?#@]*)@)?(\\[[^\\/?#\\]]+\\]|[^\\/?#:]*)(?:\\:(\\d*))?))?([^?#]*)(?:\\?([^#]*))?(?:#((?:.|\\n|\\r)*))?/i;\nconst NO_MATCH_IS_UNDEFINED = ((\"\").match(/(){0}/))[1] === undefined;\n\nexport function parse(uriString:string, options:URIOptions = {}):URIComponents {\n\tconst components:URIComponents = {};\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\n\tif (options.reference === \"suffix\") uriString = (options.scheme ? options.scheme + \":\" : \"\") + \"//\" + uriString;\n\n\tconst matches = uriString.match(URI_PARSE);\n\n\tif (matches) {\n\t\tif (NO_MATCH_IS_UNDEFINED) {\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1];\n\t\t\tcomponents.userinfo = matches[3];\n\t\t\tcomponents.host = matches[4];\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = matches[7];\n\t\t\tcomponents.fragment = matches[8];\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = matches[5];\n\t\t\t}\n\t\t} else { //IE FIX for improper RegExp matching\n\t\t\t//store each component\n\t\t\tcomponents.scheme = matches[1] || undefined;\n\t\t\tcomponents.userinfo = (uriString.indexOf(\"@\") !== -1 ? matches[3] : undefined);\n\t\t\tcomponents.host = (uriString.indexOf(\"//\") !== -1 ? matches[4] : undefined);\n\t\t\tcomponents.port = parseInt(matches[5], 10);\n\t\t\tcomponents.path = matches[6] || \"\";\n\t\t\tcomponents.query = (uriString.indexOf(\"?\") !== -1 ? matches[7] : undefined);\n\t\t\tcomponents.fragment = (uriString.indexOf(\"#\") !== -1 ? matches[8] : undefined);\n\n\t\t\t//fix port number\n\t\t\tif (isNaN(components.port)) {\n\t\t\t\tcomponents.port = (uriString.match(/\\/\\/(?:.|\\n)*\\:(?:\\/|\\?|\\#|$)/) ? matches[4] : undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (components.host) {\n\t\t\t//normalize IP hosts\n\t\t\tcomponents.host = _normalizeIPv6(_normalizeIPv4(components.host, protocol), protocol);\n\t\t}\n\n\t\t//determine reference type\n\t\tif (components.scheme === undefined && components.userinfo === undefined && components.host === undefined && components.port === undefined && !components.path && components.query === undefined) {\n\t\t\tcomponents.reference = \"same-document\";\n\t\t} else if (components.scheme === undefined) {\n\t\t\tcomponents.reference = \"relative\";\n\t\t} else if (components.fragment === undefined) {\n\t\t\tcomponents.reference = \"absolute\";\n\t\t} else {\n\t\t\tcomponents.reference = \"uri\";\n\t\t}\n\n\t\t//check for reference errors\n\t\tif (options.reference && options.reference !== \"suffix\" && options.reference !== components.reference) {\n\t\t\tcomponents.error = components.error || \"URI is not a \" + options.reference + \" reference.\";\n\t\t}\n\n\t\t//find scheme handler\n\t\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t\t//check if scheme can't handle IRIs\n\t\tif (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) {\n\t\t\t//if host component is a domain name\n\t\t\tif (components.host && (options.domainHost || (schemeHandler && schemeHandler.domainHost))) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\tcomponents.host = punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t}\n\t\t\t//convert IRI -> URI\n\t\t\t_normalizeComponentEncoding(components, URI_PROTOCOL);\n\t\t} else {\n\t\t\t//normalize encodings\n\t\t\t_normalizeComponentEncoding(components, protocol);\n\t\t}\n\n\t\t//perform scheme specific parsing\n\t\tif (schemeHandler && schemeHandler.parse) {\n\t\t\tschemeHandler.parse(components, options);\n\t\t}\n\t} else {\n\t\tcomponents.error = components.error || \"URI can not be parsed.\";\n\t}\n\n\treturn components;\n};\n\nfunction _recomposeAuthority(components:URIComponents, options:URIOptions):string|undefined {\n\tconst protocol = (options.iri !== false ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\tif (components.userinfo !== undefined) {\n\t\turiTokens.push(components.userinfo);\n\t\turiTokens.push(\"@\");\n\t}\n\n\tif (components.host !== undefined) {\n\t\t//normalize IP hosts, add brackets and escape zone separator for IPv6\n\t\turiTokens.push(_normalizeIPv6(_normalizeIPv4(String(components.host), protocol), protocol).replace(protocol.IPV6ADDRESS, (_, $1, $2) => \"[\" + $1 + ($2 ? \"%25\" + $2 : \"\") + \"]\"));\n\t}\n\n\tif (typeof components.port === \"number\") {\n\t\turiTokens.push(\":\");\n\t\turiTokens.push(components.port.toString(10));\n\t}\n\n\treturn uriTokens.length ? uriTokens.join(\"\") : undefined;\n};\n\nconst RDS1 = /^\\.\\.?\\//;\nconst RDS2 = /^\\/\\.(\\/|$)/;\nconst RDS3 = /^\\/\\.\\.(\\/|$)/;\nconst RDS4 = /^\\.\\.?$/;\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/;\n\nexport function removeDotSegments(input:string):string {\n\tconst output:Array = [];\n\n\twhile (input.length) {\n\t\tif (input.match(RDS1)) {\n\t\t\tinput = input.replace(RDS1, \"\");\n\t\t} else if (input.match(RDS2)) {\n\t\t\tinput = input.replace(RDS2, \"/\");\n\t\t} else if (input.match(RDS3)) {\n\t\t\tinput = input.replace(RDS3, \"/\");\n\t\t\toutput.pop();\n\t\t} else if (input === \".\" || input === \"..\") {\n\t\t\tinput = \"\";\n\t\t} else {\n\t\t\tconst im = input.match(RDS5);\n\t\t\tif (im) {\n\t\t\t\tconst s = im[0];\n\t\t\t\tinput = input.slice(s.length);\n\t\t\t\toutput.push(s);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unexpected dot segment condition\");\n\t\t\t}\n\t\t}\n\t}\n\n\treturn output.join(\"\");\n};\n\nexport function serialize(components:URIComponents, options:URIOptions = {}):string {\n\tconst protocol = (options.iri ? IRI_PROTOCOL : URI_PROTOCOL);\n\tconst uriTokens:Array = [];\n\n\t//find scheme handler\n\tconst schemeHandler = SCHEMES[(options.scheme || components.scheme || \"\").toLowerCase()];\n\n\t//perform scheme specific serialization\n\tif (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options);\n\n\tif (components.host) {\n\t\t//if host component is an IPv6 address\n\t\tif (protocol.IPV6ADDRESS.test(components.host)) {\n\t\t\t//TODO: normalize IPv6 address as per RFC 5952\n\t\t}\n\n\t\t//if host component is a domain name\n\t\telse if (options.domainHost || (schemeHandler && schemeHandler.domainHost)) {\n\t\t\t//convert IDN via punycode\n\t\t\ttry {\n\t\t\t\tcomponents.host = (!options.iri ? punycode.toASCII(components.host.replace(protocol.PCT_ENCODED, pctDecChars).toLowerCase()) : punycode.toUnicode(components.host));\n\t\t\t} catch (e) {\n\t\t\t\tcomponents.error = components.error || \"Host's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t}\n\t\t}\n\t}\n\n\t//normalize encoding\n\t_normalizeComponentEncoding(components, protocol);\n\n\tif (options.reference !== \"suffix\" && components.scheme) {\n\t\turiTokens.push(components.scheme);\n\t\turiTokens.push(\":\");\n\t}\n\n\tconst authority = _recomposeAuthority(components, options);\n\tif (authority !== undefined) {\n\t\tif (options.reference !== \"suffix\") {\n\t\t\turiTokens.push(\"//\");\n\t\t}\n\n\t\turiTokens.push(authority);\n\n\t\tif (components.path && components.path.charAt(0) !== \"/\") {\n\t\t\turiTokens.push(\"/\");\n\t\t}\n\t}\n\n\tif (components.path !== undefined) {\n\t\tlet s = components.path;\n\n\t\tif (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) {\n\t\t\ts = removeDotSegments(s);\n\t\t}\n\n\t\tif (authority === undefined) {\n\t\t\ts = s.replace(/^\\/\\//, \"/%2F\"); //don't allow the path to start with \"//\"\n\t\t}\n\n\t\turiTokens.push(s);\n\t}\n\n\tif (components.query !== undefined) {\n\t\turiTokens.push(\"?\");\n\t\turiTokens.push(components.query);\n\t}\n\n\tif (components.fragment !== undefined) {\n\t\turiTokens.push(\"#\");\n\t\turiTokens.push(components.fragment);\n\t}\n\n\treturn uriTokens.join(\"\"); //merge tokens into a string\n};\n\nexport function resolveComponents(base:URIComponents, relative:URIComponents, options:URIOptions = {}, skipNormalization?:boolean):URIComponents {\n\tconst target:URIComponents = {};\n\n\tif (!skipNormalization) {\n\t\tbase = parse(serialize(base, options), options); //normalize base components\n\t\trelative = parse(serialize(relative, options), options); //normalize relative components\n\t}\n\toptions = options || {};\n\n\tif (!options.tolerant && relative.scheme) {\n\t\ttarget.scheme = relative.scheme;\n\t\t//target.authority = relative.authority;\n\t\ttarget.userinfo = relative.userinfo;\n\t\ttarget.host = relative.host;\n\t\ttarget.port = relative.port;\n\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\ttarget.query = relative.query;\n\t} else {\n\t\tif (relative.userinfo !== undefined || relative.host !== undefined || relative.port !== undefined) {\n\t\t\t//target.authority = relative.authority;\n\t\t\ttarget.userinfo = relative.userinfo;\n\t\t\ttarget.host = relative.host;\n\t\t\ttarget.port = relative.port;\n\t\t\ttarget.path = removeDotSegments(relative.path || \"\");\n\t\t\ttarget.query = relative.query;\n\t\t} else {\n\t\t\tif (!relative.path) {\n\t\t\t\ttarget.path = base.path;\n\t\t\t\tif (relative.query !== undefined) {\n\t\t\t\t\ttarget.query = relative.query;\n\t\t\t\t} else {\n\t\t\t\t\ttarget.query = base.query;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (relative.path.charAt(0) === \"/\") {\n\t\t\t\t\ttarget.path = removeDotSegments(relative.path);\n\t\t\t\t} else {\n\t\t\t\t\tif ((base.userinfo !== undefined || base.host !== undefined || base.port !== undefined) && !base.path) {\n\t\t\t\t\t\ttarget.path = \"/\" + relative.path;\n\t\t\t\t\t} else if (!base.path) {\n\t\t\t\t\t\ttarget.path = relative.path;\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttarget.path = base.path.slice(0, base.path.lastIndexOf(\"/\") + 1) + relative.path;\n\t\t\t\t\t}\n\t\t\t\t\ttarget.path = removeDotSegments(target.path);\n\t\t\t\t}\n\t\t\t\ttarget.query = relative.query;\n\t\t\t}\n\t\t\t//target.authority = base.authority;\n\t\t\ttarget.userinfo = base.userinfo;\n\t\t\ttarget.host = base.host;\n\t\t\ttarget.port = base.port;\n\t\t}\n\t\ttarget.scheme = base.scheme;\n\t}\n\n\ttarget.fragment = relative.fragment;\n\n\treturn target;\n};\n\nexport function resolve(baseURI:string, relativeURI:string, options?:URIOptions):string {\n\tconst schemelessOptions = assign({ scheme : 'null' }, options);\n\treturn serialize(resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true), schemelessOptions);\n};\n\nexport function normalize(uri:string, options?:URIOptions):string;\nexport function normalize(uri:URIComponents, options?:URIOptions):URIComponents;\nexport function normalize(uri:any, options?:URIOptions):any {\n\tif (typeof uri === \"string\") {\n\t\turi = serialize(parse(uri, options), options);\n\t} else if (typeOf(uri) === \"object\") {\n\t\turi = parse(serialize(uri, options), options);\n\t}\n\n\treturn uri;\n};\n\nexport function equal(uriA:string, uriB:string, options?: URIOptions):boolean;\nexport function equal(uriA:URIComponents, uriB:URIComponents, options?:URIOptions):boolean;\nexport function equal(uriA:any, uriB:any, options?:URIOptions):boolean {\n\tif (typeof uriA === \"string\") {\n\t\turiA = serialize(parse(uriA, options), options);\n\t} else if (typeOf(uriA) === \"object\") {\n\t\turiA = serialize(uriA, options);\n\t}\n\n\tif (typeof uriB === \"string\") {\n\t\turiB = serialize(parse(uriB, options), options);\n\t} else if (typeOf(uriB) === \"object\") {\n\t\turiB = serialize(uriB, options);\n\t}\n\n\treturn uriA === uriB;\n};\n\nexport function escapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.ESCAPE : IRI_PROTOCOL.ESCAPE), pctEncChar);\n};\n\nexport function unescapeComponent(str:string, options?:URIOptions):string {\n\treturn str && str.toString().replace((!options || !options.iri ? URI_PROTOCOL.PCT_ENCODED : IRI_PROTOCOL.PCT_ENCODED), pctDecChars);\n};\n","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"http\",\n\n\tdomainHost : true,\n\n\tparse : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//report missing host\n\t\tif (!components.host) {\n\t\t\tcomponents.error = components.error || \"HTTP URIs must have a host.\";\n\t\t}\n\n\t\treturn components;\n\t},\n\n\tserialize : function (components:URIComponents, options:URIOptions):URIComponents {\n\t\t//normalize the default port\n\t\tif (components.port === (String(components.scheme).toLowerCase() !== \"https\" ? 80 : 443) || components.port === \"\") {\n\t\t\tcomponents.port = undefined;\n\t\t}\n\t\t\n\t\t//normalize the empty path\n\t\tif (!components.path) {\n\t\t\tcomponents.path = \"/\";\n\t\t}\n\n\t\t//NOTE: We do not parse query strings for HTTP URIs\n\t\t//as WWW Form Url Encoded query strings are part of the HTML4+ spec,\n\t\t//and not the HTTP spec.\n\n\t\treturn components;\n\t}\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport http from \"./http\";\n\nconst handler:URISchemeHandler = {\n\tscheme : \"https\",\n\tdomainHost : http.domainHost,\n\tparse : http.parse,\n\tserialize : http.serialize\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, pctDecChars, unescapeComponent } from \"../uri\";\nimport punycode from \"punycode\";\nimport { merge, subexp, toUpperCase, toArray } from \"../util\";\n\nexport interface MailtoHeaders {\n\t[hfname:string]:string\n}\n\nexport interface MailtoComponents extends URIComponents {\n\tto:Array,\n\theaders?:MailtoHeaders,\n\tsubject?:string,\n\tbody?:string\n}\n\nconst O:MailtoHeaders = {};\nconst isIRI = true;\n\n//RFC 3986\nconst UNRESERVED$$ = \"[A-Za-z0-9\\\\-\\\\.\\\\_\\\\~\" + (isIRI ? \"\\\\xA0-\\\\u200D\\\\u2010-\\\\u2029\\\\u202F-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFEF\" : \"\") + \"]\";\nconst HEXDIG$$ = \"[0-9A-Fa-f]\"; //case-insensitive\nconst PCT_ENCODED$ = subexp(subexp(\"%[EFef]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%[89A-Fa-f]\" + HEXDIG$$ + \"%\" + HEXDIG$$ + HEXDIG$$) + \"|\" + subexp(\"%\" + HEXDIG$$ + HEXDIG$$)); //expanded\n\n//RFC 5322, except these symbols as per RFC 6068: @ : / ? # [ ] & ; =\n//const ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\#\\\\$\\\\%\\\\&\\\\'\\\\*\\\\+\\\\-\\\\/\\\\=\\\\?\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QTEXT$$ = \"[\\\\x01-\\\\x08\\\\x0B\\\\x0C\\\\x0E-\\\\x1F\\\\x7F]\"; //(%d1-8 / %d11-12 / %d14-31 / %d127)\n//const QTEXT$$ = merge(\"[\\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E]\", OBS_QTEXT$$); //%d33 / %d35-91 / %d93-126 / obs-qtext\n//const VCHAR$$ = \"[\\\\x21-\\\\x7E]\";\n//const WSP$$ = \"[\\\\x20\\\\x09]\";\n//const OBS_QP$ = subexp(\"\\\\\\\\\" + merge(\"[\\\\x00\\\\x0D\\\\x0A]\", OBS_QTEXT$$)); //%d0 / CR / LF / obs-qtext\n//const FWS$ = subexp(subexp(WSP$$ + \"*\" + \"\\\\x0D\\\\x0A\") + \"?\" + WSP$$ + \"+\");\n//const QUOTED_PAIR$ = subexp(subexp(\"\\\\\\\\\" + subexp(VCHAR$$ + \"|\" + WSP$$)) + \"|\" + OBS_QP$);\n//const QUOTED_STRING$ = subexp('\\\\\"' + subexp(FWS$ + \"?\" + QCONTENT$) + \"*\" + FWS$ + \"?\" + '\\\\\"');\nconst ATEXT$$ = \"[A-Za-z0-9\\\\!\\\\$\\\\%\\\\'\\\\*\\\\+\\\\-\\\\^\\\\_\\\\`\\\\{\\\\|\\\\}\\\\~]\";\nconst QTEXT$$ = \"[\\\\!\\\\$\\\\%\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\-\\\\.0-9\\\\<\\\\>A-Z\\\\x5E-\\\\x7E]\";\nconst VCHAR$$ = merge(QTEXT$$, \"[\\\\\\\"\\\\\\\\]\");\nconst DOT_ATOM_TEXT$ = subexp(ATEXT$$ + \"+\" + subexp(\"\\\\.\" + ATEXT$$ + \"+\") + \"*\");\nconst QUOTED_PAIR$ = subexp(\"\\\\\\\\\" + VCHAR$$);\nconst QCONTENT$ = subexp(QTEXT$$ + \"|\" + QUOTED_PAIR$);\nconst QUOTED_STRING$ = subexp('\\\\\"' + QCONTENT$ + \"*\" + '\\\\\"');\n\n//RFC 6068\nconst DTEXT_NO_OBS$$ = \"[\\\\x21-\\\\x5A\\\\x5E-\\\\x7E]\"; //%d33-90 / %d94-126\nconst SOME_DELIMS$$ = \"[\\\\!\\\\$\\\\'\\\\(\\\\)\\\\*\\\\+\\\\,\\\\;\\\\:\\\\@]\";\nconst QCHAR$ = subexp(UNRESERVED$$ + \"|\" + PCT_ENCODED$ + \"|\" + SOME_DELIMS$$);\nconst DOMAIN$ = subexp(DOT_ATOM_TEXT$ + \"|\" + \"\\\\[\" + DTEXT_NO_OBS$$ + \"*\" + \"\\\\]\");\nconst LOCAL_PART$ = subexp(DOT_ATOM_TEXT$ + \"|\" + QUOTED_STRING$);\nconst ADDR_SPEC$ = subexp(LOCAL_PART$ + \"\\\\@\" + DOMAIN$);\nconst TO$ = subexp(ADDR_SPEC$ + subexp(\"\\\\,\" + ADDR_SPEC$) + \"*\");\nconst HFNAME$ = subexp(QCHAR$ + \"*\");\nconst HFVALUE$ = HFNAME$;\nconst HFIELD$ = subexp(HFNAME$ + \"\\\\=\" + HFVALUE$);\nconst HFIELDS2$ = subexp(HFIELD$ + subexp(\"\\\\&\" + HFIELD$) + \"*\");\nconst HFIELDS$ = subexp(\"\\\\?\" + HFIELDS2$);\nconst MAILTO_URI = new RegExp(\"^mailto\\\\:\" + TO$ + \"?\" + HFIELDS$ + \"?$\");\n\nconst UNRESERVED = new RegExp(UNRESERVED$$, \"g\");\nconst PCT_ENCODED = new RegExp(PCT_ENCODED$, \"g\");\nconst NOT_LOCAL_PART = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", '[\\\\\"]', VCHAR$$), \"g\");\nconst NOT_DOMAIN = new RegExp(merge(\"[^]\", ATEXT$$, \"[\\\\.]\", \"[\\\\[]\", DTEXT_NO_OBS$$, \"[\\\\]]\"), \"g\");\nconst NOT_HFNAME = new RegExp(merge(\"[^]\", UNRESERVED$$, SOME_DELIMS$$), \"g\");\nconst NOT_HFVALUE = NOT_HFNAME;\nconst TO = new RegExp(\"^\" + TO$ + \"$\");\nconst HFIELDS = new RegExp(\"^\" + HFIELDS2$ + \"$\");\n\nfunction decodeUnreserved(str:string):string {\n\tconst decStr = pctDecChars(str);\n\treturn (!decStr.match(UNRESERVED) ? str : decStr);\n}\n\nconst handler:URISchemeHandler = {\n\tscheme : \"mailto\",\n\n\tparse : function (components:URIComponents, options:URIOptions):MailtoComponents {\n\t\tconst mailtoComponents = components as MailtoComponents;\n\t\tconst to = mailtoComponents.to = (mailtoComponents.path ? mailtoComponents.path.split(\",\") : []);\n\t\tmailtoComponents.path = undefined;\n\n\t\tif (mailtoComponents.query) {\n\t\t\tlet unknownHeaders = false\n\t\t\tconst headers:MailtoHeaders = {};\n\t\t\tconst hfields = mailtoComponents.query.split(\"&\");\n\n\t\t\tfor (let x = 0, xl = hfields.length; x < xl; ++x) {\n\t\t\t\tconst hfield = hfields[x].split(\"=\");\n\n\t\t\t\tswitch (hfield[0]) {\n\t\t\t\t\tcase \"to\":\n\t\t\t\t\t\tconst toAddrs = hfield[1].split(\",\");\n\t\t\t\t\t\tfor (let x = 0, xl = toAddrs.length; x < xl; ++x) {\n\t\t\t\t\t\t\tto.push(toAddrs[x]);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"subject\":\n\t\t\t\t\t\tmailtoComponents.subject = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"body\":\n\t\t\t\t\t\tmailtoComponents.body = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tunknownHeaders = true;\n\t\t\t\t\t\theaders[unescapeComponent(hfield[0], options)] = unescapeComponent(hfield[1], options);\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (unknownHeaders) mailtoComponents.headers = headers;\n\t\t}\n\n\t\tmailtoComponents.query = undefined;\n\n\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\tconst addr = to[x].split(\"@\");\n\n\t\t\taddr[0] = unescapeComponent(addr[0]);\n\n\t\t\tif (!options.unicodeSupport) {\n\t\t\t\t//convert Unicode IDN -> ASCII IDN\n\t\t\t\ttry {\n\t\t\t\t\taddr[1] = punycode.toASCII(unescapeComponent(addr[1], options).toLowerCase());\n\t\t\t\t} catch (e) {\n\t\t\t\t\tmailtoComponents.error = mailtoComponents.error || \"Email address's domain name can not be converted to ASCII via punycode: \" + e;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\taddr[1] = unescapeComponent(addr[1], options).toLowerCase();\n\t\t\t}\n\n\t\t\tto[x] = addr.join(\"@\");\n\t\t}\n\n\t\treturn mailtoComponents;\n\t},\n\n\tserialize : function (mailtoComponents:MailtoComponents, options:URIOptions):URIComponents {\n\t\tconst components = mailtoComponents as URIComponents;\n\t\tconst to = toArray(mailtoComponents.to);\n\t\tif (to) {\n\t\t\tfor (let x = 0, xl = to.length; x < xl; ++x) {\n\t\t\t\tconst toAddr = String(to[x]);\n\t\t\t\tconst atIdx = toAddr.lastIndexOf(\"@\");\n\t\t\t\tconst localPart = (toAddr.slice(0, atIdx)).replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_LOCAL_PART, pctEncChar);\n\t\t\t\tlet domain = toAddr.slice(atIdx + 1);\n\n\t\t\t\t//convert IDN via punycode\n\t\t\t\ttry {\n\t\t\t\t\tdomain = (!options.iri ? punycode.toASCII(unescapeComponent(domain, options).toLowerCase()) : punycode.toUnicode(domain));\n\t\t\t\t} catch (e) {\n\t\t\t\t\tcomponents.error = components.error || \"Email address's domain name can not be converted to \" + (!options.iri ? \"ASCII\" : \"Unicode\") + \" via punycode: \" + e;\n\t\t\t\t}\n\n\t\t\t\tto[x] = localPart + \"@\" + domain;\n\t\t\t}\n\n\t\t\tcomponents.path = to.join(\",\");\n\t\t}\n\n\t\tconst headers = mailtoComponents.headers = mailtoComponents.headers || {};\n\n\t\tif (mailtoComponents.subject) headers[\"subject\"] = mailtoComponents.subject;\n\t\tif (mailtoComponents.body) headers[\"body\"] = mailtoComponents.body;\n\n\t\tconst fields = [];\n\t\tfor (const name in headers) {\n\t\t\tif (headers[name] !== O[name]) {\n\t\t\t\tfields.push(\n\t\t\t\t\tname.replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFNAME, pctEncChar) +\n\t\t\t\t\t\"=\" +\n\t\t\t\t\theaders[name].replace(PCT_ENCODED, decodeUnreserved).replace(PCT_ENCODED, toUpperCase).replace(NOT_HFVALUE, pctEncChar)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\tif (fields.length) {\n\t\t\tcomponents.query = fields.join(\"&\");\n\t\t}\n\n\t\treturn components;\n\t}\n}\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { pctEncChar, SCHEMES } from \"../uri\";\n\nexport interface URNComponents extends URIComponents {\n\tnid?:string;\n\tnss?:string;\n}\n\nexport interface URNOptions extends URIOptions {\n\tnid?:string;\n}\n\nconst NID$ = \"(?:[0-9A-Za-z][0-9A-Za-z\\\\-]{1,31})\";\nconst PCT_ENCODED$ = \"(?:\\\\%[0-9A-Fa-f]{2})\";\nconst TRANS$$ = \"[0-9A-Za-z\\\\(\\\\)\\\\+\\\\,\\\\-\\\\.\\\\:\\\\=\\\\@\\\\;\\\\$\\\\_\\\\!\\\\*\\\\'\\\\/\\\\?\\\\#]\";\nconst NSS$ = \"(?:(?:\" + PCT_ENCODED$ + \"|\" + TRANS$$ + \")+)\";\nconst URN_SCHEME = new RegExp(\"^urn\\\\:(\" + NID$ + \")$\");\nconst URN_PATH = new RegExp(\"^(\" + NID$ + \")\\\\:(\" + NSS$ + \")$\");\nconst URN_PARSE = /^([^\\:]+)\\:(.*)/;\nconst URN_EXCLUDED = /[\\x00-\\x20\\\\\\\"\\&\\<\\>\\[\\]\\^\\`\\{\\|\\}\\~\\x7F-\\xFF]/g;\n\n//RFC 2141\nconst handler:URISchemeHandler = {\n\tscheme : \"urn\",\n\n\tparse : function (components:URIComponents, options:URNOptions):URNComponents {\n\t\tconst matches = components.path && components.path.match(URN_PARSE);\n\t\tlet urnComponents = components as URNComponents;\n\n\t\tif (matches) {\n\t\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\t\tconst nid = matches[1].toLowerCase();\n\t\t\tconst nss = matches[2];\n\t\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\t\turnComponents.nid = nid;\n\t\t\turnComponents.nss = nss;\n\t\t\turnComponents.path = undefined;\n\n\t\t\tif (schemeHandler) {\n\t\t\t\turnComponents = schemeHandler.parse(urnComponents, options) as URNComponents;\n\t\t\t}\n\t\t} else {\n\t\t\turnComponents.error = urnComponents.error || \"URN can not be parsed.\";\n\t\t}\n\n\t\treturn urnComponents;\n\t},\n\n\tserialize : function (urnComponents:URNComponents, options:URNOptions):URIComponents {\n\t\tconst scheme = options.scheme || urnComponents.scheme || \"urn\";\n\t\tconst nid = urnComponents.nid;\n\t\tconst urnScheme = `${scheme}:${options.nid || nid}`;\n\t\tconst schemeHandler = SCHEMES[urnScheme];\n\n\t\tif (schemeHandler) {\n\t\t\turnComponents = schemeHandler.serialize(urnComponents, options) as URNComponents;\n\t\t}\n\n\t\tconst uriComponents = urnComponents as URIComponents;\n\t\tconst nss = urnComponents.nss;\n\t\turiComponents.path = `${nid || options.nid}:${nss}`;\n\n\t\treturn uriComponents;\n\t},\n};\n\nexport default handler;","import { URISchemeHandler, URIComponents, URIOptions } from \"../uri\";\nimport { URNComponents } from \"./urn\";\nimport { SCHEMES } from \"../uri\";\n\nexport interface UUIDComponents extends URNComponents {\n\tuuid?: string;\n}\n\nconst UUID = /^[0-9A-Fa-f]{8}(?:\\-[0-9A-Fa-f]{4}){3}\\-[0-9A-Fa-f]{12}$/;\nconst UUID_PARSE = /^[0-9A-Fa-f\\-]{36}/;\n\n//RFC 4122\nconst handler:URISchemeHandler = {\n\tscheme : \"urn:uuid\",\n\n\tparse : function (urnComponents:URNComponents, options:URIOptions):UUIDComponents {\n\t\tconst uuidComponents = urnComponents as UUIDComponents;\n\t\tuuidComponents.uuid = uuidComponents.nss;\n\t\tuuidComponents.nss = undefined;\n\n\t\tif (!options.tolerant && (!uuidComponents.uuid || !uuidComponents.uuid.match(UUID))) {\n\t\t\tuuidComponents.error = uuidComponents.error || \"UUID is not valid.\";\n\t\t}\n\n\t\treturn uuidComponents;\n\t},\n\n\tserialize : function (uuidComponents:UUIDComponents, options:URIOptions):URNComponents {\n\t\tconst urnComponents = uuidComponents as URNComponents;\n\t\t//normalize UUID\n\t\turnComponents.nss = (uuidComponents.uuid || \"\").toLowerCase();\n\t\treturn urnComponents;\n\t},\n};\n\nexport default handler;","import { SCHEMES } from \"./uri\";\n\nimport http from \"./schemes/http\";\nSCHEMES[http.scheme] = http;\n\nimport https from \"./schemes/https\";\nSCHEMES[https.scheme] = https;\n\nimport mailto from \"./schemes/mailto\";\nSCHEMES[mailto.scheme] = mailto;\n\nimport urn from \"./schemes/urn\";\nSCHEMES[urn.scheme] = urn;\n\nimport uuid from \"./schemes/urn-uuid\";\nSCHEMES[uuid.scheme] = uuid;\n\nexport * from \"./uri\";\n","'use strict';\n\n// https://mathiasbynens.be/notes/javascript-encoding\n// https://github.com/bestiejs/punycode.js - punycode.ucs2.decode\nmodule.exports = function ucs2length(str) {\n var length = 0\n , len = str.length\n , pos = 0\n , value;\n while (pos < len) {\n length++;\n value = str.charCodeAt(pos++);\n if (value >= 0xD800 && value <= 0xDBFF && pos < len) {\n // high surrogate, and there is a next character\n value = str.charCodeAt(pos);\n if ((value & 0xFC00) == 0xDC00) pos++; // low surrogate\n }\n }\n return length;\n};\n","'use strict';\n\nvar traverse = module.exports = function (schema, opts, cb) {\n // Legacy support for v0.3.1 and earlier.\n if (typeof opts == 'function') {\n cb = opts;\n opts = {};\n }\n\n cb = opts.cb || cb;\n var pre = (typeof cb == 'function') ? cb : cb.pre || function() {};\n var post = cb.post || function() {};\n\n _traverse(opts, pre, post, schema, '', schema);\n};\n\n\ntraverse.keywords = {\n additionalItems: true,\n items: true,\n contains: true,\n additionalProperties: true,\n propertyNames: true,\n not: true\n};\n\ntraverse.arrayKeywords = {\n items: true,\n allOf: true,\n anyOf: true,\n oneOf: true\n};\n\ntraverse.propsKeywords = {\n definitions: true,\n properties: true,\n patternProperties: true,\n dependencies: true\n};\n\ntraverse.skipKeywords = {\n default: true,\n enum: true,\n const: true,\n required: true,\n maximum: true,\n minimum: true,\n exclusiveMaximum: true,\n exclusiveMinimum: true,\n multipleOf: true,\n maxLength: true,\n minLength: true,\n pattern: true,\n format: true,\n maxItems: true,\n minItems: true,\n uniqueItems: true,\n maxProperties: true,\n minProperties: true\n};\n\n\nfunction _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) {\n if (schema && typeof schema == 'object' && !Array.isArray(schema)) {\n pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex);\n for (var key in schema) {\n var sch = schema[key];\n if (Array.isArray(sch)) {\n if (key in traverse.arrayKeywords) {\n for (var i=0; i%\\\\^`{|}]|%[0-9a-f]{2})|\\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\\*)?)*\\})*$/i;\n// For the source: https://gist.github.com/dperini/729294\n// For test cases: https://mathiasbynens.be/demo/url-regex\n// @todo Delete current URL in favour of the commented out URL rule when this issue is fixed https://github.com/eslint/eslint/issues/7983.\n// var URL = /^(?:(?:https?|ftp):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!10(?:\\.\\d{1,3}){3})(?!127(?:\\.\\d{1,3}){3})(?!169\\.254(?:\\.\\d{1,3}){2})(?!192\\.168(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-?)*[a-z\\u{00a1}-\\u{ffff}0-9]+)(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}0-9]+-?)*[a-z\\u{00a1}-\\u{ffff}0-9]+)*(?:\\.(?:[a-z\\u{00a1}-\\u{ffff}]{2,})))(?::\\d{2,5})?(?:\\/[^\\s]*)?$/iu;\nvar URL = /^(?:(?:http[s\\u017F]?|ftp):\\/\\/)(?:(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+(?::(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?@)?(?:(?!10(?:\\.[0-9]{1,3}){3})(?!127(?:\\.[0-9]{1,3}){3})(?!169\\.254(?:\\.[0-9]{1,3}){2})(?!192\\.168(?:\\.[0-9]{1,3}){2})(?!172\\.(?:1[6-9]|2[0-9]|3[01])(?:\\.[0-9]{1,3}){2})(?:[1-9][0-9]?|1[0-9][0-9]|2[01][0-9]|22[0-3])(?:\\.(?:1?[0-9]{1,2}|2[0-4][0-9]|25[0-5])){2}(?:\\.(?:[1-9][0-9]?|1[0-9][0-9]|2[0-4][0-9]|25[0-4]))|(?:(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)(?:\\.(?:(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+-?)*(?:[0-9KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+)*(?:\\.(?:(?:[KSa-z\\xA1-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]){2,})))(?::[0-9]{2,5})?(?:\\/(?:[\\0-\\x08\\x0E-\\x1F!-\\x9F\\xA1-\\u167F\\u1681-\\u1FFF\\u200B-\\u2027\\u202A-\\u202E\\u2030-\\u205E\\u2060-\\u2FFF\\u3001-\\uD7FF\\uE000-\\uFEFE\\uFF00-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])*)?$/i;\nvar UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;\nvar JSON_POINTER = /^(?:\\/(?:[^~/]|~0|~1)*)*$/;\nvar JSON_POINTER_URI_FRAGMENT = /^#(?:\\/(?:[a-z0-9_\\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;\nvar RELATIVE_JSON_POINTER = /^(?:0|[1-9][0-9]*)(?:#|(?:\\/(?:[^~/]|~0|~1)*)*)$/;\n\n\nmodule.exports = formats;\n\nfunction formats(mode) {\n mode = mode == 'full' ? 'full' : 'fast';\n return util.copy(formats[mode]);\n}\n\n\nformats.fast = {\n // date: http://tools.ietf.org/html/rfc3339#section-5.6\n date: /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d$/,\n // date-time: http://tools.ietf.org/html/rfc3339#section-5.6\n time: /^(?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)?$/i,\n 'date-time': /^\\d\\d\\d\\d-[0-1]\\d-[0-3]\\d[t\\s](?:[0-2]\\d:[0-5]\\d:[0-5]\\d|23:59:60)(?:\\.\\d+)?(?:z|[+-]\\d\\d(?::?\\d\\d)?)$/i,\n // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js\n uri: /^(?:[a-z][a-z0-9+-.]*:)(?:\\/?\\/)?[^\\s]*$/i,\n 'uri-reference': /^(?:(?:[a-z][a-z0-9+-.]*:)?\\/?\\/)?(?:[^\\\\\\s#][^\\s#]*)?(?:#[^\\\\\\s]*)?$/i,\n 'uri-template': URITEMPLATE,\n url: URL,\n // email (sources from jsen validator):\n // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363\n // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'willful violation')\n email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i,\n hostname: HOSTNAME,\n // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n // optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n // uuid: http://tools.ietf.org/html/rfc4122\n uuid: UUID,\n // JSON-pointer: https://tools.ietf.org/html/rfc6901\n // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nformats.full = {\n date: date,\n time: time,\n 'date-time': date_time,\n uri: uri,\n 'uri-reference': URIREF,\n 'uri-template': URITEMPLATE,\n url: URL,\n email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i,\n hostname: HOSTNAME,\n ipv4: /^(?:(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)\\.){3}(?:25[0-5]|2[0-4]\\d|[01]?\\d\\d?)$/,\n ipv6: /^\\s*(?:(?:(?:[0-9a-f]{1,4}:){7}(?:[0-9a-f]{1,4}|:))|(?:(?:[0-9a-f]{1,4}:){6}(?::[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){5}(?:(?:(?::[0-9a-f]{1,4}){1,2})|:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(?:(?:[0-9a-f]{1,4}:){4}(?:(?:(?::[0-9a-f]{1,4}){1,3})|(?:(?::[0-9a-f]{1,4})?:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){3}(?:(?:(?::[0-9a-f]{1,4}){1,4})|(?:(?::[0-9a-f]{1,4}){0,2}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){2}(?:(?:(?::[0-9a-f]{1,4}){1,5})|(?:(?::[0-9a-f]{1,4}){0,3}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?:(?:[0-9a-f]{1,4}:){1}(?:(?:(?::[0-9a-f]{1,4}){1,6})|(?:(?::[0-9a-f]{1,4}){0,4}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(?::(?:(?:(?::[0-9a-f]{1,4}){1,7})|(?:(?::[0-9a-f]{1,4}){0,5}:(?:(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(?:\\.(?:25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(?:%.+)?\\s*$/i,\n regex: regex,\n uuid: UUID,\n 'json-pointer': JSON_POINTER,\n 'json-pointer-uri-fragment': JSON_POINTER_URI_FRAGMENT,\n 'relative-json-pointer': RELATIVE_JSON_POINTER\n};\n\n\nfunction isLeapYear(year) {\n // https://tools.ietf.org/html/rfc3339#appendix-C\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}\n\n\nfunction date(str) {\n // full-date from http://tools.ietf.org/html/rfc3339#section-5.6\n var matches = str.match(DATE);\n if (!matches) return false;\n\n var year = +matches[1];\n var month = +matches[2];\n var day = +matches[3];\n\n return month >= 1 && month <= 12 && day >= 1 &&\n day <= (month == 2 && isLeapYear(year) ? 29 : DAYS[month]);\n}\n\n\nfunction time(str, full) {\n var matches = str.match(TIME);\n if (!matches) return false;\n\n var hour = matches[1];\n var minute = matches[2];\n var second = matches[3];\n var timeZone = matches[5];\n return ((hour <= 23 && minute <= 59 && second <= 59) ||\n (hour == 23 && minute == 59 && second == 60)) &&\n (!full || timeZone);\n}\n\n\nvar DATE_TIME_SEPARATOR = /t|\\s/i;\nfunction date_time(str) {\n // http://tools.ietf.org/html/rfc3339#section-5.6\n var dateTime = str.split(DATE_TIME_SEPARATOR);\n return dateTime.length == 2 && date(dateTime[0]) && time(dateTime[1], true);\n}\n\n\nvar NOT_URI_FRAGMENT = /\\/|:/;\nfunction uri(str) {\n // http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required \".\"\n return NOT_URI_FRAGMENT.test(str) && URI.test(str);\n}\n\n\nvar Z_ANCHOR = /[^\\\\]\\\\Z/;\nfunction regex(str) {\n if (Z_ANCHOR.test(str)) return false;\n try {\n new RegExp(str);\n return true;\n } catch(e) {\n return false;\n }\n}\n","'use strict';\n\nvar ruleModules = require('../dotjs')\n , toHash = require('./util').toHash;\n\nmodule.exports = function rules() {\n var RULES = [\n { type: 'number',\n rules: [ { 'maximum': ['exclusiveMaximum'] },\n { 'minimum': ['exclusiveMinimum'] }, 'multipleOf', 'format'] },\n { type: 'string',\n rules: [ 'maxLength', 'minLength', 'pattern', 'format' ] },\n { type: 'array',\n rules: [ 'maxItems', 'minItems', 'items', 'contains', 'uniqueItems' ] },\n { type: 'object',\n rules: [ 'maxProperties', 'minProperties', 'required', 'dependencies', 'propertyNames',\n { 'properties': ['additionalProperties', 'patternProperties'] } ] },\n { rules: [ '$ref', 'const', 'enum', 'not', 'anyOf', 'oneOf', 'allOf', 'if' ] }\n ];\n\n var ALL = [ 'type', '$comment' ];\n var KEYWORDS = [\n '$schema', '$id', 'id', '$data', '$async', 'title',\n 'description', 'default', 'definitions',\n 'examples', 'readOnly', 'writeOnly',\n 'contentMediaType', 'contentEncoding',\n 'additionalItems', 'then', 'else'\n ];\n var TYPES = [ 'number', 'integer', 'string', 'array', 'object', 'boolean', 'null' ];\n RULES.all = toHash(ALL);\n RULES.types = toHash(TYPES);\n\n RULES.forEach(function (group) {\n group.rules = group.rules.map(function (keyword) {\n var implKeywords;\n if (typeof keyword == 'object') {\n var key = Object.keys(keyword)[0];\n implKeywords = keyword[key];\n keyword = key;\n implKeywords.forEach(function (k) {\n ALL.push(k);\n RULES.all[k] = true;\n });\n }\n ALL.push(keyword);\n var rule = RULES.all[keyword] = {\n keyword: keyword,\n code: ruleModules[keyword],\n implements: implKeywords\n };\n return rule;\n });\n\n RULES.all.$comment = {\n keyword: '$comment',\n code: ruleModules.$comment\n };\n\n if (group.type) RULES.types[group.type] = group;\n });\n\n RULES.keywords = toHash(ALL.concat(KEYWORDS));\n RULES.custom = {};\n\n return RULES;\n};\n","'use strict';\n\n//all requires must be explicit because browserify won't work with dynamic requires\nmodule.exports = {\n '$ref': require('./ref'),\n allOf: require('./allOf'),\n anyOf: require('./anyOf'),\n '$comment': require('./comment'),\n const: require('./const'),\n contains: require('./contains'),\n dependencies: require('./dependencies'),\n 'enum': require('./enum'),\n format: require('./format'),\n 'if': require('./if'),\n items: require('./items'),\n maximum: require('./_limit'),\n minimum: require('./_limit'),\n maxItems: require('./_limitItems'),\n minItems: require('./_limitItems'),\n maxLength: require('./_limitLength'),\n minLength: require('./_limitLength'),\n maxProperties: require('./_limitProperties'),\n minProperties: require('./_limitProperties'),\n multipleOf: require('./multipleOf'),\n not: require('./not'),\n oneOf: require('./oneOf'),\n pattern: require('./pattern'),\n properties: require('./properties'),\n propertyNames: require('./propertyNames'),\n required: require('./required'),\n uniqueItems: require('./uniqueItems'),\n validate: require('./validate')\n};\n","'use strict';\nmodule.exports = function generate_ref(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $async, $refCode;\n if ($schema == '#' || $schema == '#/') {\n if (it.isRoot) {\n $async = it.async;\n $refCode = 'validate';\n } else {\n $async = it.root.schema.$async === true;\n $refCode = 'root.refVal[0]';\n }\n } else {\n var $refVal = it.resolveRef(it.baseId, $schema, it.isRoot);\n if ($refVal === undefined) {\n var $message = it.MissingRefError.message(it.baseId, $schema);\n if (it.opts.missingRefs == 'fail') {\n it.logger.error($message);\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('$ref') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { ref: \\'' + (it.util.escapeQuotes($schema)) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'can\\\\\\'t resolve reference ' + (it.util.escapeQuotes($schema)) + '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ' + (it.util.toQuotedString($schema)) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n } else if (it.opts.missingRefs == 'ignore') {\n it.logger.warn($message);\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n } else {\n throw new it.MissingRefError(it.baseId, $schema, $message);\n }\n } else if ($refVal.inline) {\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n $it.schema = $refVal.schema;\n $it.schemaPath = '';\n $it.errSchemaPath = $schema;\n var $code = it.validate($it).replace(/validate\\.schema/g, $refVal.code);\n out += ' ' + ($code) + ' ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n }\n } else {\n $async = $refVal.$async === true || (it.async && $refVal.$async !== false);\n $refCode = $refVal.code;\n }\n }\n if ($refCode) {\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = '';\n if (it.opts.passContext) {\n out += ' ' + ($refCode) + '.call(this, ';\n } else {\n out += ' ' + ($refCode) + '( ';\n }\n out += ' ' + ($data) + ', (dataPath || \\'\\')';\n if (it.errorPath != '\"\"') {\n out += ' + ' + (it.errorPath);\n }\n var $parentData = $dataLvl ? 'data' + (($dataLvl - 1) || '') : 'parentData',\n $parentDataProperty = $dataLvl ? it.dataPathArr[$dataLvl] : 'parentDataProperty';\n out += ' , ' + ($parentData) + ' , ' + ($parentDataProperty) + ', rootData) ';\n var __callValidate = out;\n out = $$outStack.pop();\n if ($async) {\n if (!it.async) throw new Error('async schema referenced by sync schema');\n if ($breakOnError) {\n out += ' var ' + ($valid) + '; ';\n }\n out += ' try { await ' + (__callValidate) + '; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = true; ';\n }\n out += ' } catch (e) { if (!(e instanceof ValidationError)) throw e; if (vErrors === null) vErrors = e.errors; else vErrors = vErrors.concat(e.errors); errors = vErrors.length; ';\n if ($breakOnError) {\n out += ' ' + ($valid) + ' = false; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($valid) + ') { ';\n }\n } else {\n out += ' if (!' + (__callValidate) + ') { if (vErrors === null) vErrors = ' + ($refCode) + '.errors; else vErrors = vErrors.concat(' + ($refCode) + '.errors); errors = vErrors.length; } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_allOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $allSchemasEmpty = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n $allSchemasEmpty = false;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($breakOnError) {\n if ($allSchemasEmpty) {\n out += ' if (true) { ';\n } else {\n out += ' ' + ($closingBraces.slice(0, -1)) + ' ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_anyOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $noEmptySchema = $schema.every(function($sch) {\n return (it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all));\n });\n if ($noEmptySchema) {\n var $currentBaseId = $it.baseId;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = false; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($valid) + ' || ' + ($nextValid) + '; if (!' + ($valid) + ') { ';\n $closingBraces += '}';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('anyOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match some schema in anyOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_comment(it, $keyword, $ruleType) {\n var out = ' ';\n var $schema = it.schema[$keyword];\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $comment = it.util.toQuotedString($schema);\n if (it.opts.$comment === true) {\n out += ' console.log(' + ($comment) + ');';\n } else if (typeof it.opts.$comment == 'function') {\n out += ' self._opts.$comment(' + ($comment) + ', ' + (it.util.toQuotedString($errSchemaPath)) + ', validate.root.schema);';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_const(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!$isData) {\n out += ' var schema' + ($lvl) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ' = equal(' + ($data) + ', schema' + ($lvl) + '); if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('const') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValue: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to constant\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_contains(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId,\n $nonEmptySchema = (it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all));\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if ($nonEmptySchema) {\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($nextValid) + ' = false; for (var ' + ($idx) + ' = 0; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (' + ($nextValid) + ') break; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' ' + ($closingBraces) + ' if (!' + ($nextValid) + ') {';\n } else {\n out += ' if (' + ($data) + '.length == 0) {';\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('contains') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should contain a valid item\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n if ($nonEmptySchema) {\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n }\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_dependencies(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $schemaDeps = {},\n $propertyDeps = {},\n $ownProperties = it.opts.ownProperties;\n for ($property in $schema) {\n if ($property == '__proto__') continue;\n var $sch = $schema[$property];\n var $deps = Array.isArray($sch) ? $propertyDeps : $schemaDeps;\n $deps[$property] = $sch;\n }\n out += 'var ' + ($errs) + ' = errors;';\n var $currentErrorPath = it.errorPath;\n out += 'var missing' + ($lvl) + ';';\n for (var $property in $propertyDeps) {\n $deps = $propertyDeps[$property];\n if ($deps.length) {\n out += ' if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n if ($breakOnError) {\n out += ' && ( ';\n var arr1 = $deps;\n if (arr1) {\n var $propertyKey, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $propertyKey = arr1[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ')) { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n } else {\n out += ' ) { ';\n var arr2 = $deps;\n if (arr2) {\n var $propertyKey, i2 = -1,\n l2 = arr2.length - 1;\n while (i2 < l2) {\n $propertyKey = arr2[i2 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('dependencies') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { property: \\'' + (it.util.escapeQuotes($property)) + '\\', missingProperty: \\'' + ($missingProperty) + '\\', depsCount: ' + ($deps.length) + ', deps: \\'' + (it.util.escapeQuotes($deps.length == 1 ? $deps[0] : $deps.join(\", \"))) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should have ';\n if ($deps.length == 1) {\n out += 'property ' + (it.util.escapeQuotes($deps[0]));\n } else {\n out += 'properties ' + (it.util.escapeQuotes($deps.join(\", \")));\n }\n out += ' when property ' + (it.util.escapeQuotes($property)) + ' is present\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n out += ' } ';\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n var $currentBaseId = $it.baseId;\n for (var $property in $schemaDeps) {\n var $sch = $schemaDeps[$property];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if ( ' + ($data) + (it.util.getProperty($property)) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($property)) + '\\') ';\n }\n out += ') { ';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + it.util.getProperty($property);\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($property);\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_enum(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $i = 'i' + $lvl,\n $vSchema = 'schema' + $lvl;\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + ';';\n }\n out += 'var ' + ($valid) + ';';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += '' + ($valid) + ' = false;for (var ' + ($i) + '=0; ' + ($i) + '<' + ($vSchema) + '.length; ' + ($i) + '++) if (equal(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + '])) { ' + ($valid) + ' = true; break; }';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('enum') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { allowedValues: schema' + ($lvl) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be equal to one of the allowed values\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' }';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_format(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n if (it.opts.format === false) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $unknownFormats = it.opts.unknownFormats,\n $allowUnknown = Array.isArray($unknownFormats);\n if ($isData) {\n var $format = 'format' + $lvl,\n $isObject = 'isObject' + $lvl,\n $formatType = 'formatType' + $lvl;\n out += ' var ' + ($format) + ' = formats[' + ($schemaValue) + ']; var ' + ($isObject) + ' = typeof ' + ($format) + ' == \\'object\\' && !(' + ($format) + ' instanceof RegExp) && ' + ($format) + '.validate; var ' + ($formatType) + ' = ' + ($isObject) + ' && ' + ($format) + '.type || \\'string\\'; if (' + ($isObject) + ') { ';\n if (it.async) {\n out += ' var async' + ($lvl) + ' = ' + ($format) + '.async; ';\n }\n out += ' ' + ($format) + ' = ' + ($format) + '.validate; } if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' (';\n if ($unknownFormats != 'ignore') {\n out += ' (' + ($schemaValue) + ' && !' + ($format) + ' ';\n if ($allowUnknown) {\n out += ' && self._opts.unknownFormats.indexOf(' + ($schemaValue) + ') == -1 ';\n }\n out += ') || ';\n }\n out += ' (' + ($format) + ' && ' + ($formatType) + ' == \\'' + ($ruleType) + '\\' && !(typeof ' + ($format) + ' == \\'function\\' ? ';\n if (it.async) {\n out += ' (async' + ($lvl) + ' ? await ' + ($format) + '(' + ($data) + ') : ' + ($format) + '(' + ($data) + ')) ';\n } else {\n out += ' ' + ($format) + '(' + ($data) + ') ';\n }\n out += ' : ' + ($format) + '.test(' + ($data) + '))))) {';\n } else {\n var $format = it.formats[$schema];\n if (!$format) {\n if ($unknownFormats == 'ignore') {\n it.logger.warn('unknown format \"' + $schema + '\" ignored in schema at path \"' + it.errSchemaPath + '\"');\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else if ($allowUnknown && $unknownFormats.indexOf($schema) >= 0) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n } else {\n throw new Error('unknown format \"' + $schema + '\" is used in schema at path \"' + it.errSchemaPath + '\"');\n }\n }\n var $isObject = typeof $format == 'object' && !($format instanceof RegExp) && $format.validate;\n var $formatType = $isObject && $format.type || 'string';\n if ($isObject) {\n var $async = $format.async === true;\n $format = $format.validate;\n }\n if ($formatType != $ruleType) {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n return out;\n }\n if ($async) {\n if (!it.async) throw new Error('async format in sync schema');\n var $formatRef = 'formats' + it.util.getProperty($schema) + '.validate';\n out += ' if (!(await ' + ($formatRef) + '(' + ($data) + '))) { ';\n } else {\n out += ' if (! ';\n var $formatRef = 'formats' + it.util.getProperty($schema);\n if ($isObject) $formatRef += '.validate';\n if (typeof $format == 'function') {\n out += ' ' + ($formatRef) + '(' + ($data) + ') ';\n } else {\n out += ' ' + ($formatRef) + '.test(' + ($data) + ') ';\n }\n out += ') { ';\n }\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('format') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { format: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match format \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_if(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $thenSch = it.schema['then'],\n $elseSch = it.schema['else'],\n $thenPresent = $thenSch !== undefined && (it.opts.strictKeywords ? typeof $thenSch == 'object' && Object.keys($thenSch).length > 0 : it.util.schemaHasRules($thenSch, it.RULES.all)),\n $elsePresent = $elseSch !== undefined && (it.opts.strictKeywords ? typeof $elseSch == 'object' && Object.keys($elseSch).length > 0 : it.util.schemaHasRules($elseSch, it.RULES.all)),\n $currentBaseId = $it.baseId;\n if ($thenPresent || $elsePresent) {\n var $ifClause;\n $it.createErrors = false;\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; var ' + ($valid) + ' = true; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n $it.createErrors = true;\n out += ' errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n if ($thenPresent) {\n out += ' if (' + ($nextValid) + ') { ';\n $it.schema = it.schema['then'];\n $it.schemaPath = it.schemaPath + '.then';\n $it.errSchemaPath = it.errSchemaPath + '/then';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'then\\'; ';\n } else {\n $ifClause = '\\'then\\'';\n }\n out += ' } ';\n if ($elsePresent) {\n out += ' else { ';\n }\n } else {\n out += ' if (!' + ($nextValid) + ') { ';\n }\n if ($elsePresent) {\n $it.schema = it.schema['else'];\n $it.schemaPath = it.schemaPath + '.else';\n $it.errSchemaPath = it.errSchemaPath + '/else';\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n out += ' ' + ($valid) + ' = ' + ($nextValid) + '; ';\n if ($thenPresent && $elsePresent) {\n $ifClause = 'ifClause' + $lvl;\n out += ' var ' + ($ifClause) + ' = \\'else\\'; ';\n } else {\n $ifClause = '\\'else\\'';\n }\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('if') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { failingKeyword: ' + ($ifClause) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match \"\\' + ' + ($ifClause) + ' + \\'\" schema\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_items(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $idx = 'i' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $currentBaseId = it.baseId;\n out += 'var ' + ($errs) + ' = errors;var ' + ($valid) + ';';\n if (Array.isArray($schema)) {\n var $additionalItems = it.schema.additionalItems;\n if ($additionalItems === false) {\n out += ' ' + ($valid) + ' = ' + ($data) + '.length <= ' + ($schema.length) + '; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { limit: ' + ($schema.length) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have more than ' + ($schema.length) + ' items\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n $closingBraces += '}';\n out += ' else { ';\n }\n }\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($i) + ') { ';\n var $passData = $data + '[' + $i + ']';\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n $it.errorPath = it.util.getPathExpr(it.errorPath, $i, it.opts.jsonPointers, true);\n $it.dataPathArr[$dataNxt] = $i;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if (typeof $additionalItems == 'object' && (it.opts.strictKeywords ? typeof $additionalItems == 'object' && Object.keys($additionalItems).length > 0 : it.util.schemaHasRules($additionalItems, it.RULES.all))) {\n $it.schema = $additionalItems;\n $it.schemaPath = it.schemaPath + '.additionalItems';\n $it.errSchemaPath = it.errSchemaPath + '/additionalItems';\n out += ' ' + ($nextValid) + ' = true; if (' + ($data) + '.length > ' + ($schema.length) + ') { for (var ' + ($idx) + ' = ' + ($schema.length) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n } else if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' for (var ' + ($idx) + ' = ' + (0) + '; ' + ($idx) + ' < ' + ($data) + '.length; ' + ($idx) + '++) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $idx, it.opts.jsonPointers, true);\n var $passData = $data + '[' + $idx + ']';\n $it.dataPathArr[$dataNxt] = $idx;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' }';\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_multipleOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (!($isData || typeof $schema == 'number')) {\n throw new Error($keyword + ' must be number');\n }\n out += 'var division' + ($lvl) + ';if (';\n if ($isData) {\n out += ' ' + ($schemaValue) + ' !== undefined && ( typeof ' + ($schemaValue) + ' != \\'number\\' || ';\n }\n out += ' (division' + ($lvl) + ' = ' + ($data) + ' / ' + ($schemaValue) + ', ';\n if (it.opts.multipleOfPrecision) {\n out += ' Math.abs(Math.round(division' + ($lvl) + ') - division' + ($lvl) + ') > 1e-' + (it.opts.multipleOfPrecision) + ' ';\n } else {\n out += ' division' + ($lvl) + ' !== parseInt(division' + ($lvl) + ') ';\n }\n out += ' ) ';\n if ($isData) {\n out += ' ) ';\n }\n out += ' ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('multipleOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { multipleOf: ' + ($schemaValue) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should be multiple of ';\n if ($isData) {\n out += '\\' + ' + ($schemaValue);\n } else {\n out += '' + ($schemaValue) + '\\'';\n }\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_not(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.createErrors = false;\n var $allErrorsOption;\n if ($it.opts.allErrors) {\n $allErrorsOption = $it.opts.allErrors;\n $it.opts.allErrors = false;\n }\n out += ' ' + (it.validate($it)) + ' ';\n $it.createErrors = true;\n if ($allErrorsOption) $it.opts.allErrors = $allErrorsOption;\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (' + ($nextValid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; } ';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n } else {\n out += ' var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('not') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: {} ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT be valid\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if ($breakOnError) {\n out += ' if (false) { ';\n }\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_oneOf(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $currentBaseId = $it.baseId,\n $prevValid = 'prevValid' + $lvl,\n $passingSchemas = 'passingSchemas' + $lvl;\n out += 'var ' + ($errs) + ' = errors , ' + ($prevValid) + ' = false , ' + ($valid) + ' = false , ' + ($passingSchemas) + ' = null; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var arr1 = $schema;\n if (arr1) {\n var $sch, $i = -1,\n l1 = arr1.length - 1;\n while ($i < l1) {\n $sch = arr1[$i += 1];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + '[' + $i + ']';\n $it.errSchemaPath = $errSchemaPath + '/' + $i;\n out += ' ' + (it.validate($it)) + ' ';\n $it.baseId = $currentBaseId;\n } else {\n out += ' var ' + ($nextValid) + ' = true; ';\n }\n if ($i) {\n out += ' if (' + ($nextValid) + ' && ' + ($prevValid) + ') { ' + ($valid) + ' = false; ' + ($passingSchemas) + ' = [' + ($passingSchemas) + ', ' + ($i) + ']; } else { ';\n $closingBraces += '}';\n }\n out += ' if (' + ($nextValid) + ') { ' + ($valid) + ' = ' + ($prevValid) + ' = true; ' + ($passingSchemas) + ' = ' + ($i) + '; }';\n }\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += '' + ($closingBraces) + 'if (!' + ($valid) + ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('oneOf') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { passingSchemas: ' + ($passingSchemas) + ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match exactly one schema in oneOf\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError(vErrors); ';\n } else {\n out += ' validate.errors = vErrors; return false; ';\n }\n }\n out += '} else { errors = ' + ($errs) + '; if (vErrors !== null) { if (' + ($errs) + ') vErrors.length = ' + ($errs) + '; else vErrors = null; }';\n if (it.opts.allErrors) {\n out += ' } ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_pattern(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n var $regexp = $isData ? '(new RegExp(' + $schemaValue + '))' : it.usePattern($schema);\n out += 'if ( ';\n if ($isData) {\n out += ' (' + ($schemaValue) + ' !== undefined && typeof ' + ($schemaValue) + ' != \\'string\\') || ';\n }\n out += ' !' + ($regexp) + '.test(' + ($data) + ') ) { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('pattern') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { pattern: ';\n if ($isData) {\n out += '' + ($schemaValue);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should match pattern \"';\n if ($isData) {\n out += '\\' + ' + ($schemaValue) + ' + \\'';\n } else {\n out += '' + (it.util.escapeQuotes($schema));\n }\n out += '\"\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + (it.util.toQuotedString($schema));\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += '} ';\n if ($breakOnError) {\n out += ' else { ';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_properties(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl;\n var $schemaKeys = Object.keys($schema || {}).filter(notProto),\n $pProperties = it.schema.patternProperties || {},\n $pPropertyKeys = Object.keys($pProperties).filter(notProto),\n $aProperties = it.schema.additionalProperties,\n $someProperties = $schemaKeys.length || $pPropertyKeys.length,\n $noAdditional = $aProperties === false,\n $additionalIsSchema = typeof $aProperties == 'object' && Object.keys($aProperties).length,\n $removeAdditional = it.opts.removeAdditional,\n $checkAdditional = $noAdditional || $additionalIsSchema || $removeAdditional,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n var $required = it.schema.required;\n if ($required && !(it.opts.$data && $required.$data) && $required.length < it.opts.loopRequired) {\n var $requiredHash = it.util.toHash($required);\n }\n\n function notProto(p) {\n return p !== '__proto__';\n }\n out += 'var ' + ($errs) + ' = errors;var ' + ($nextValid) + ' = true;';\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined;';\n }\n if ($checkAdditional) {\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n if ($someProperties) {\n out += ' var isAdditional' + ($lvl) + ' = !(false ';\n if ($schemaKeys.length) {\n if ($schemaKeys.length > 8) {\n out += ' || validate.schema' + ($schemaPath) + '.hasOwnProperty(' + ($key) + ') ';\n } else {\n var arr1 = $schemaKeys;\n if (arr1) {\n var $propertyKey, i1 = -1,\n l1 = arr1.length - 1;\n while (i1 < l1) {\n $propertyKey = arr1[i1 += 1];\n out += ' || ' + ($key) + ' == ' + (it.util.toQuotedString($propertyKey)) + ' ';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr2 = $pPropertyKeys;\n if (arr2) {\n var $pProperty, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $pProperty = arr2[$i += 1];\n out += ' || ' + (it.usePattern($pProperty)) + '.test(' + ($key) + ') ';\n }\n }\n }\n out += ' ); if (isAdditional' + ($lvl) + ') { ';\n }\n if ($removeAdditional == 'all') {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n var $currentErrorPath = it.errorPath;\n var $additionalProperty = '\\' + ' + $key + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n }\n if ($noAdditional) {\n if ($removeAdditional) {\n out += ' delete ' + ($data) + '[' + ($key) + ']; ';\n } else {\n out += ' ' + ($nextValid) + ' = false; ';\n var $currErrSchemaPath = $errSchemaPath;\n $errSchemaPath = it.errSchemaPath + '/additionalProperties';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('additionalProperties') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { additionalProperty: \\'' + ($additionalProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is an invalid additional property';\n } else {\n out += 'should NOT have additional properties';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: false , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n if ($breakOnError) {\n out += ' break; ';\n }\n }\n } else if ($additionalIsSchema) {\n if ($removeAdditional == 'failing') {\n out += ' var ' + ($errs) + ' = errors; ';\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n out += ' if (!' + ($nextValid) + ') { errors = ' + ($errs) + '; if (validate.errors !== null) { if (errors) validate.errors.length = errors; else validate.errors = null; } delete ' + ($data) + '[' + ($key) + ']; } ';\n it.compositeRule = $it.compositeRule = $wasComposite;\n } else {\n $it.schema = $aProperties;\n $it.schemaPath = it.schemaPath + '.additionalProperties';\n $it.errSchemaPath = it.errSchemaPath + '/additionalProperties';\n $it.errorPath = it.opts._errorDataPathProperty ? it.errorPath : it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n }\n }\n it.errorPath = $currentErrorPath;\n }\n if ($someProperties) {\n out += ' } ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n var $useDefaults = it.opts.useDefaults && !it.compositeRule;\n if ($schemaKeys.length) {\n var arr3 = $schemaKeys;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $sch = $schema[$propertyKey];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n var $prop = it.util.getProperty($propertyKey),\n $passData = $data + $prop,\n $hasDefault = $useDefaults && $sch.default !== undefined;\n $it.schema = $sch;\n $it.schemaPath = $schemaPath + $prop;\n $it.errSchemaPath = $errSchemaPath + '/' + it.util.escapeFragment($propertyKey);\n $it.errorPath = it.util.getPath(it.errorPath, $propertyKey, it.opts.jsonPointers);\n $it.dataPathArr[$dataNxt] = it.util.toQuotedString($propertyKey);\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n $code = it.util.varReplace($code, $nextData, $passData);\n var $useData = $passData;\n } else {\n var $useData = $nextData;\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ';\n }\n if ($hasDefault) {\n out += ' ' + ($code) + ' ';\n } else {\n if ($requiredHash && $requiredHash[$propertyKey]) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = false; ';\n var $currentErrorPath = it.errorPath,\n $currErrSchemaPath = $errSchemaPath,\n $missingProperty = it.util.escapeQuotes($propertyKey);\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n $errSchemaPath = it.errSchemaPath + '/required';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n $errSchemaPath = $currErrSchemaPath;\n it.errorPath = $currentErrorPath;\n out += ' } else { ';\n } else {\n if ($breakOnError) {\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { ' + ($nextValid) + ' = true; } else { ';\n } else {\n out += ' if (' + ($useData) + ' !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ' ) { ';\n }\n }\n out += ' ' + ($code) + ' } ';\n }\n }\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n if ($pPropertyKeys.length) {\n var arr4 = $pPropertyKeys;\n if (arr4) {\n var $pProperty, i4 = -1,\n l4 = arr4.length - 1;\n while (i4 < l4) {\n $pProperty = arr4[i4 += 1];\n var $sch = $pProperties[$pProperty];\n if ((it.opts.strictKeywords ? typeof $sch == 'object' && Object.keys($sch).length > 0 : it.util.schemaHasRules($sch, it.RULES.all))) {\n $it.schema = $sch;\n $it.schemaPath = it.schemaPath + '.patternProperties' + it.util.getProperty($pProperty);\n $it.errSchemaPath = it.errSchemaPath + '/patternProperties/' + it.util.escapeFragment($pProperty);\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' if (' + (it.usePattern($pProperty)) + '.test(' + ($key) + ')) { ';\n $it.errorPath = it.util.getPathExpr(it.errorPath, $key, it.opts.jsonPointers);\n var $passData = $data + '[' + $key + ']';\n $it.dataPathArr[$dataNxt] = $key;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n if ($breakOnError) {\n out += ' if (!' + ($nextValid) + ') break; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else ' + ($nextValid) + ' = true; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' if (' + ($nextValid) + ') { ';\n $closingBraces += '}';\n }\n }\n }\n }\n }\n if ($breakOnError) {\n out += ' ' + ($closingBraces) + ' if (' + ($errs) + ' == errors) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_propertyNames(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $errs = 'errs__' + $lvl;\n var $it = it.util.copy(it);\n var $closingBraces = '';\n $it.level++;\n var $nextValid = 'valid' + $it.level;\n out += 'var ' + ($errs) + ' = errors;';\n if ((it.opts.strictKeywords ? typeof $schema == 'object' && Object.keys($schema).length > 0 : it.util.schemaHasRules($schema, it.RULES.all))) {\n $it.schema = $schema;\n $it.schemaPath = $schemaPath;\n $it.errSchemaPath = $errSchemaPath;\n var $key = 'key' + $lvl,\n $idx = 'idx' + $lvl,\n $i = 'i' + $lvl,\n $invalidName = '\\' + ' + $key + ' + \\'',\n $dataNxt = $it.dataLevel = it.dataLevel + 1,\n $nextData = 'data' + $dataNxt,\n $dataProperties = 'dataProperties' + $lvl,\n $ownProperties = it.opts.ownProperties,\n $currentBaseId = it.baseId;\n if ($ownProperties) {\n out += ' var ' + ($dataProperties) + ' = undefined; ';\n }\n if ($ownProperties) {\n out += ' ' + ($dataProperties) + ' = ' + ($dataProperties) + ' || Object.keys(' + ($data) + '); for (var ' + ($idx) + '=0; ' + ($idx) + '<' + ($dataProperties) + '.length; ' + ($idx) + '++) { var ' + ($key) + ' = ' + ($dataProperties) + '[' + ($idx) + ']; ';\n } else {\n out += ' for (var ' + ($key) + ' in ' + ($data) + ') { ';\n }\n out += ' var startErrs' + ($lvl) + ' = errors; ';\n var $passData = $key;\n var $wasComposite = it.compositeRule;\n it.compositeRule = $it.compositeRule = true;\n var $code = it.validate($it);\n $it.baseId = $currentBaseId;\n if (it.util.varOccurences($code, $nextData) < 2) {\n out += ' ' + (it.util.varReplace($code, $nextData, $passData)) + ' ';\n } else {\n out += ' var ' + ($nextData) + ' = ' + ($passData) + '; ' + ($code) + ' ';\n }\n it.compositeRule = $it.compositeRule = $wasComposite;\n out += ' if (!' + ($nextValid) + ') { for (var ' + ($i) + '=startErrs' + ($lvl) + '; ' + ($i) + ' 0 : it.util.schemaHasRules($propertySch, it.RULES.all)))) {\n $required[$required.length] = $property;\n }\n }\n }\n } else {\n var $required = $schema;\n }\n }\n if ($isData || $required.length) {\n var $currentErrorPath = it.errorPath,\n $loopRequired = $isData || $required.length >= it.opts.loopRequired,\n $ownProperties = it.opts.ownProperties;\n if ($breakOnError) {\n out += ' var missing' + ($lvl) + '; ';\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n out += ' var ' + ($valid) + ' = true; ';\n if ($isData) {\n out += ' if (schema' + ($lvl) + ' === undefined) ' + ($valid) + ' = true; else if (!Array.isArray(schema' + ($lvl) + ')) ' + ($valid) + ' = false; else {';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { ' + ($valid) + ' = ' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] !== undefined ';\n if ($ownProperties) {\n out += ' && Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += '; if (!' + ($valid) + ') break; } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n } else {\n out += ' if ( ';\n var arr2 = $required;\n if (arr2) {\n var $propertyKey, $i = -1,\n l2 = arr2.length - 1;\n while ($i < l2) {\n $propertyKey = arr2[$i += 1];\n if ($i) {\n out += ' || ';\n }\n var $prop = it.util.getProperty($propertyKey),\n $useData = $data + $prop;\n out += ' ( ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') && (missing' + ($lvl) + ' = ' + (it.util.toQuotedString(it.opts.jsonPointers ? $propertyKey : $prop)) + ') ) ';\n }\n }\n out += ') { ';\n var $propertyPath = 'missing' + $lvl,\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.opts.jsonPointers ? it.util.getPathExpr($currentErrorPath, $propertyPath, true) : $currentErrorPath + ' + ' + $propertyPath;\n }\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } else { ';\n }\n } else {\n if ($loopRequired) {\n if (!$isData) {\n out += ' var ' + ($vSchema) + ' = validate.schema' + ($schemaPath) + '; ';\n }\n var $i = 'i' + $lvl,\n $propertyPath = 'schema' + $lvl + '[' + $i + ']',\n $missingProperty = '\\' + ' + $propertyPath + ' + \\'';\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPathExpr($currentErrorPath, $propertyPath, it.opts.jsonPointers);\n }\n if ($isData) {\n out += ' if (' + ($vSchema) + ' && !Array.isArray(' + ($vSchema) + ')) { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } else if (' + ($vSchema) + ' !== undefined) { ';\n }\n out += ' for (var ' + ($i) + ' = 0; ' + ($i) + ' < ' + ($vSchema) + '.length; ' + ($i) + '++) { if (' + ($data) + '[' + ($vSchema) + '[' + ($i) + ']] === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', ' + ($vSchema) + '[' + ($i) + ']) ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } } ';\n if ($isData) {\n out += ' } ';\n }\n } else {\n var arr3 = $required;\n if (arr3) {\n var $propertyKey, i3 = -1,\n l3 = arr3.length - 1;\n while (i3 < l3) {\n $propertyKey = arr3[i3 += 1];\n var $prop = it.util.getProperty($propertyKey),\n $missingProperty = it.util.escapeQuotes($propertyKey),\n $useData = $data + $prop;\n if (it.opts._errorDataPathProperty) {\n it.errorPath = it.util.getPath($currentErrorPath, $propertyKey, it.opts.jsonPointers);\n }\n out += ' if ( ' + ($useData) + ' === undefined ';\n if ($ownProperties) {\n out += ' || ! Object.prototype.hasOwnProperty.call(' + ($data) + ', \\'' + (it.util.escapeQuotes($propertyKey)) + '\\') ';\n }\n out += ') { var err = '; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('required') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { missingProperty: \\'' + ($missingProperty) + '\\' } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'';\n if (it.opts._errorDataPathProperty) {\n out += 'is a required property';\n } else {\n out += 'should have required property \\\\\\'' + ($missingProperty) + '\\\\\\'';\n }\n out += '\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: validate.schema' + ($schemaPath) + ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n out += '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; } ';\n }\n }\n }\n }\n it.errorPath = $currentErrorPath;\n } else if ($breakOnError) {\n out += ' if (true) {';\n }\n return out;\n}\n","'use strict';\nmodule.exports = function generate_uniqueItems(it, $keyword, $ruleType) {\n var out = ' ';\n var $lvl = it.level;\n var $dataLvl = it.dataLevel;\n var $schema = it.schema[$keyword];\n var $schemaPath = it.schemaPath + it.util.getProperty($keyword);\n var $errSchemaPath = it.errSchemaPath + '/' + $keyword;\n var $breakOnError = !it.opts.allErrors;\n var $data = 'data' + ($dataLvl || '');\n var $valid = 'valid' + $lvl;\n var $isData = it.opts.$data && $schema && $schema.$data,\n $schemaValue;\n if ($isData) {\n out += ' var schema' + ($lvl) + ' = ' + (it.util.getData($schema.$data, $dataLvl, it.dataPathArr)) + '; ';\n $schemaValue = 'schema' + $lvl;\n } else {\n $schemaValue = $schema;\n }\n if (($schema || $isData) && it.opts.uniqueItems !== false) {\n if ($isData) {\n out += ' var ' + ($valid) + '; if (' + ($schemaValue) + ' === false || ' + ($schemaValue) + ' === undefined) ' + ($valid) + ' = true; else if (typeof ' + ($schemaValue) + ' != \\'boolean\\') ' + ($valid) + ' = false; else { ';\n }\n out += ' var i = ' + ($data) + '.length , ' + ($valid) + ' = true , j; if (i > 1) { ';\n var $itemType = it.schema.items && it.schema.items.type,\n $typeIsArray = Array.isArray($itemType);\n if (!$itemType || $itemType == 'object' || $itemType == 'array' || ($typeIsArray && ($itemType.indexOf('object') >= 0 || $itemType.indexOf('array') >= 0))) {\n out += ' outer: for (;i--;) { for (j = i; j--;) { if (equal(' + ($data) + '[i], ' + ($data) + '[j])) { ' + ($valid) + ' = false; break outer; } } } ';\n } else {\n out += ' var itemIndices = {}, item; for (;i--;) { var item = ' + ($data) + '[i]; ';\n var $method = 'checkDataType' + ($typeIsArray ? 's' : '');\n out += ' if (' + (it.util[$method]($itemType, 'item', it.opts.strictNumbers, true)) + ') continue; ';\n if ($typeIsArray) {\n out += ' if (typeof item == \\'string\\') item = \\'\"\\' + item; ';\n }\n out += ' if (typeof itemIndices[item] == \\'number\\') { ' + ($valid) + ' = false; j = itemIndices[item]; break; } itemIndices[item] = i; } ';\n }\n out += ' } ';\n if ($isData) {\n out += ' } ';\n }\n out += ' if (!' + ($valid) + ') { ';\n var $$outStack = $$outStack || [];\n $$outStack.push(out);\n out = ''; /* istanbul ignore else */\n if (it.createErrors !== false) {\n out += ' { keyword: \\'' + ('uniqueItems') + '\\' , dataPath: (dataPath || \\'\\') + ' + (it.errorPath) + ' , schemaPath: ' + (it.util.toQuotedString($errSchemaPath)) + ' , params: { i: i, j: j } ';\n if (it.opts.messages !== false) {\n out += ' , message: \\'should NOT have duplicate items (items ## \\' + j + \\' and \\' + i + \\' are identical)\\' ';\n }\n if (it.opts.verbose) {\n out += ' , schema: ';\n if ($isData) {\n out += 'validate.schema' + ($schemaPath);\n } else {\n out += '' + ($schema);\n }\n out += ' , parentSchema: validate.schema' + (it.schemaPath) + ' , data: ' + ($data) + ' ';\n }\n out += ' } ';\n } else {\n out += ' {} ';\n }\n var __err = out;\n out = $$outStack.pop();\n if (!it.compositeRule && $breakOnError) {\n /* istanbul ignore if */\n if (it.async) {\n out += ' throw new ValidationError([' + (__err) + ']); ';\n } else {\n out += ' validate.errors = [' + (__err) + ']; return false; ';\n }\n } else {\n out += ' var err = ' + (__err) + '; if (vErrors === null) vErrors = [err]; else vErrors.push(err); errors++; ';\n }\n out += ' } ';\n if ($breakOnError) {\n out += ' else { ';\n }\n } else {\n if ($breakOnError) {\n out += ' if (true) { ';\n }\n }\n return out;\n}\n","'use strict';\n\nvar KEYWORDS = [\n 'multipleOf',\n 'maximum',\n 'exclusiveMaximum',\n 'minimum',\n 'exclusiveMinimum',\n 'maxLength',\n 'minLength',\n 'pattern',\n 'additionalItems',\n 'maxItems',\n 'minItems',\n 'uniqueItems',\n 'maxProperties',\n 'minProperties',\n 'required',\n 'additionalProperties',\n 'enum',\n 'format',\n 'const'\n];\n\nmodule.exports = function (metaSchema, keywordsJsonPointers) {\n for (var i=0; i>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n var exp = {};\n var FORCE = fails(function () {\n return !!spaces[KEY]() || non[KEY]() != non;\n });\n var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n if (ALIAS) exp[ALIAS] = fn;\n $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n string = String(defined(string));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n};\n\nmodule.exports = exporter;\n","'use strict';\n// https://github.com/tc39/Array.prototype.includes\nvar $export = require('./_export');\nvar $includes = require('./_array-includes')(true);\n\n$export($export.P, 'Array', {\n includes: function includes(el /* , fromIndex = 0 */) {\n return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n\nrequire('./_add-to-unscopables')('includes');\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar build = require('./build');\nvar isValid = require('./is-valid');\n\n// if you are using cluster or multiple servers use this to make each instance\n// has a unique value for worker\n// Note: I don't know if this is automatically set when using third\n// party cluster solutions such as pm2.\nvar clusterWorkerId = require('./util/cluster-worker-id') || 0;\n\n/**\n * Set the seed.\n * Highly recommended if you don't want people to try to figure out your id schema.\n * exposed as shortid.seed(int)\n * @param seed Integer value to seed the random alphabet. ALWAYS USE THE SAME SEED or you might get overlaps.\n */\nfunction seed(seedValue) {\n alphabet.seed(seedValue);\n return module.exports;\n}\n\n/**\n * Set the cluster worker or machine id\n * exposed as shortid.worker(int)\n * @param workerId worker must be positive integer. Number less than 16 is recommended.\n * returns shortid module so it can be chained.\n */\nfunction worker(workerId) {\n clusterWorkerId = workerId;\n return module.exports;\n}\n\n/**\n *\n * sets new characters to use in the alphabet\n * returns the shuffled alphabet\n */\nfunction characters(newCharacters) {\n if (newCharacters !== undefined) {\n alphabet.characters(newCharacters);\n }\n\n return alphabet.shuffled();\n}\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction generate() {\n return build(clusterWorkerId);\n}\n\n// Export all other functions as properties of the generate function\nmodule.exports = generate;\nmodule.exports.generate = generate;\nmodule.exports.seed = seed;\nmodule.exports.worker = worker;\nmodule.exports.characters = characters;\nmodule.exports.isValid = isValid;\n","'use strict';\n\n// Found this seed-based random generator somewhere\n// Based on The Central Randomizer 1.3 (C) 1997 by Paul Houle (houle@msc.cornell.edu)\n\nvar seed = 1;\n\n/**\n * return a random number based on a seed\n * @param seed\n * @returns {number}\n */\nfunction getNextValue() {\n seed = (seed * 9301 + 49297) % 233280;\n return seed/(233280.0);\n}\n\nfunction setSeed(_seed_) {\n seed = _seed_;\n}\n\nmodule.exports = {\n nextValue: getNextValue,\n seed: setSeed\n};\n","'use strict';\n\nvar generate = require('./generate');\nvar alphabet = require('./alphabet');\n\n// Ignore all milliseconds before a certain time to reduce the size of the date entropy without sacrificing uniqueness.\n// This number should be updated every year or so to keep the generated id short.\n// To regenerate `new Date() - 0` and bump the version. Always bump the version!\nvar REDUCE_TIME = 1567752802062;\n\n// don't change unless we change the algos or REDUCE_TIME\n// must be an integer and less than 16\nvar version = 7;\n\n// Counter is used when shortid is called multiple times in one second.\nvar counter;\n\n// Remember the last time shortid was called in case counter is needed.\nvar previousSeconds;\n\n/**\n * Generate unique id\n * Returns string id\n */\nfunction build(clusterWorkerId) {\n var str = '';\n\n var seconds = Math.floor((Date.now() - REDUCE_TIME) * 0.001);\n\n if (seconds === previousSeconds) {\n counter++;\n } else {\n counter = 0;\n previousSeconds = seconds;\n }\n\n str = str + generate(version);\n str = str + generate(clusterWorkerId);\n if (counter > 0) {\n str = str + generate(counter);\n }\n str = str + generate(seconds);\n return str;\n}\n\nmodule.exports = build;\n","'use strict';\n\nvar alphabet = require('./alphabet');\nvar random = require('./random/random-byte');\nvar format = require('nanoid/format');\n\nfunction generate(number) {\n var loopCounter = 0;\n var done;\n\n var str = '';\n\n while (!done) {\n str = str + format(random, alphabet.get(), 1);\n done = number < (Math.pow(16, loopCounter + 1 ) );\n loopCounter++;\n }\n return str;\n}\n\nmodule.exports = generate;\n","'use strict';\n\nvar crypto = typeof window === 'object' && (window.crypto || window.msCrypto); // IE 11 uses window.msCrypto\n\nvar randomByte;\n\nif (!crypto || !crypto.getRandomValues) {\n randomByte = function(size) {\n var bytes = [];\n for (var i = 0; i < size; i++) {\n bytes.push(Math.floor(Math.random() * 256));\n }\n return bytes;\n };\n} else {\n randomByte = function(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n };\n}\n\nmodule.exports = randomByte;\n","// This file replaces `format.js` in bundlers like webpack or Rollup,\n// according to `browser` config in `package.json`.\n\nmodule.exports = function (random, alphabet, size) {\n // We can’t use bytes bigger than the alphabet. To make bytes values closer\n // to the alphabet, we apply bitmask on them. We look for the closest\n // `2 ** x - 1` number, which will be bigger than alphabet size. If we have\n // 30 symbols in the alphabet, we will take 31 (00011111).\n // We do not use faster Math.clz32, because it is not available in browsers.\n var mask = (2 << Math.log(alphabet.length - 1) / Math.LN2) - 1\n // Bitmask is not a perfect solution (in our example it will pass 31 bytes,\n // which is bigger than the alphabet). As a result, we will need more bytes,\n // than ID size, because we will refuse bytes bigger than the alphabet.\n\n // Every hardware random generator call is costly,\n // because we need to wait for entropy collection. This is why often it will\n // be faster to ask for few extra bytes in advance, to avoid additional calls.\n\n // Here we calculate how many random bytes should we call in advance.\n // It depends on ID length, mask / alphabet size and magic number 1.6\n // (which was selected according benchmarks).\n\n // -~f => Math.ceil(f) if n is float number\n // -~i => i + 1 if n is integer number\n var step = -~(1.6 * mask * size / alphabet.length)\n var id = ''\n\n while (true) {\n var bytes = random(step)\n // Compact alternative for `for (var i = 0; i < step; i++)`\n var i = step\n while (i--) {\n // If random byte is bigger than alphabet even after bitmask,\n // we refuse it by `|| ''`.\n id += alphabet[bytes[i] & mask] || ''\n // More compact than `id.length + 1 === size`\n if (id.length === +size) return id\n }\n }\n}\n","'use strict';\nvar alphabet = require('./alphabet');\n\nfunction isShortId(id) {\n if (!id || typeof id !== 'string' || id.length < 6 ) {\n return false;\n }\n\n var nonAlphabetic = new RegExp('[^' +\n alphabet.get().replace(/[|\\\\{}()[\\]^$+*?.-]/g, '\\\\$&') +\n ']');\n return !nonAlphabetic.test(id);\n}\n\nmodule.exports = isShortId;\n","'use strict';\n\nmodule.exports = 0;\n","var core = require('../../modules/_core');\nvar $JSON = core.JSON || (core.JSON = { stringify: JSON.stringify });\nmodule.exports = function stringify(it) { // eslint-disable-line no-unused-vars\n return $JSON.stringify.apply($JSON, arguments);\n};\n","require('../modules/es6.object.to-string');\nrequire('../modules/es6.string.iterator');\nrequire('../modules/web.dom.iterable');\nrequire('../modules/es6.promise');\nrequire('../modules/es7.promise.finally');\nrequire('../modules/es7.promise.try');\nmodule.exports = require('../modules/_core').Promise;\n","'use strict';\nvar LIBRARY = require('./_library');\nvar global = require('./_global');\nvar ctx = require('./_ctx');\nvar classof = require('./_classof');\nvar $export = require('./_export');\nvar isObject = require('./_is-object');\nvar aFunction = require('./_a-function');\nvar anInstance = require('./_an-instance');\nvar forOf = require('./_for-of');\nvar speciesConstructor = require('./_species-constructor');\nvar task = require('./_task').set;\nvar microtask = require('./_microtask')();\nvar newPromiseCapabilityModule = require('./_new-promise-capability');\nvar perform = require('./_perform');\nvar userAgent = require('./_user-agent');\nvar promiseResolve = require('./_promise-resolve');\nvar PROMISE = 'Promise';\nvar TypeError = global.TypeError;\nvar process = global.process;\nvar versions = process && process.versions;\nvar v8 = versions && versions.v8 || '';\nvar $Promise = global[PROMISE];\nvar isNode = classof(process) == 'process';\nvar empty = function () { /* empty */ };\nvar Internal, newGenericPromiseCapability, OwnPromiseCapability, Wrapper;\nvar newPromiseCapability = newGenericPromiseCapability = newPromiseCapabilityModule.f;\n\nvar USE_NATIVE = !!function () {\n try {\n // correct subclassing with @@species support\n var promise = $Promise.resolve(1);\n var FakePromise = (promise.constructor = {})[require('./_wks')('species')] = function (exec) {\n exec(empty, empty);\n };\n // unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n return (isNode || typeof PromiseRejectionEvent == 'function')\n && promise.then(empty) instanceof FakePromise\n // v8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // we can't detect it synchronously, so just check versions\n && v8.indexOf('6.6') !== 0\n && userAgent.indexOf('Chrome/66') === -1;\n } catch (e) { /* empty */ }\n}();\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && typeof (then = it.then) == 'function' ? then : false;\n};\nvar notify = function (promise, isReject) {\n if (promise._n) return;\n promise._n = true;\n var chain = promise._c;\n microtask(function () {\n var value = promise._v;\n var ok = promise._s == 1;\n var i = 0;\n var run = function (reaction) {\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (promise._h == 2) onHandleUnhandled(promise);\n promise._h = 1;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // may throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n then.call(result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (e) {\n if (domain && !exited) domain.exit();\n reject(e);\n }\n };\n while (chain.length > i) run(chain[i++]); // variable length - can't use forEach\n promise._c = [];\n promise._n = false;\n if (isReject && !promise._h) onUnhandled(promise);\n });\n};\nvar onUnhandled = function (promise) {\n task.call(global, function () {\n var value = promise._v;\n var unhandled = isUnhandled(promise);\n var result, handler, console;\n if (unhandled) {\n result = perform(function () {\n if (isNode) {\n process.emit('unhandledRejection', value, promise);\n } else if (handler = global.onunhandledrejection) {\n handler({ promise: promise, reason: value });\n } else if ((console = global.console) && console.error) {\n console.error('Unhandled promise rejection', value);\n }\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n promise._h = isNode || isUnhandled(promise) ? 2 : 1;\n } promise._a = undefined;\n if (unhandled && result.e) throw result.v;\n });\n};\nvar isUnhandled = function (promise) {\n return promise._h !== 1 && (promise._a || promise._c).length === 0;\n};\nvar onHandleUnhandled = function (promise) {\n task.call(global, function () {\n var handler;\n if (isNode) {\n process.emit('rejectionHandled', promise);\n } else if (handler = global.onrejectionhandled) {\n handler({ promise: promise, reason: promise._v });\n }\n });\n};\nvar $reject = function (value) {\n var promise = this;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n promise._v = value;\n promise._s = 2;\n if (!promise._a) promise._a = promise._c.slice();\n notify(promise, true);\n};\nvar $resolve = function (value) {\n var promise = this;\n var then;\n if (promise._d) return;\n promise._d = true;\n promise = promise._w || promise; // unwrap\n try {\n if (promise === value) throw TypeError(\"Promise can't be resolved itself\");\n if (then = isThenable(value)) {\n microtask(function () {\n var wrapper = { _w: promise, _d: false }; // wrap\n try {\n then.call(value, ctx($resolve, wrapper, 1), ctx($reject, wrapper, 1));\n } catch (e) {\n $reject.call(wrapper, e);\n }\n });\n } else {\n promise._v = value;\n promise._s = 1;\n notify(promise, false);\n }\n } catch (e) {\n $reject.call({ _w: promise, _d: false }, e); // wrap\n }\n};\n\n// constructor polyfill\nif (!USE_NATIVE) {\n // 25.4.3.1 Promise(executor)\n $Promise = function Promise(executor) {\n anInstance(this, $Promise, PROMISE, '_h');\n aFunction(executor);\n Internal.call(this);\n try {\n executor(ctx($resolve, this, 1), ctx($reject, this, 1));\n } catch (err) {\n $reject.call(this, err);\n }\n };\n // eslint-disable-next-line no-unused-vars\n Internal = function Promise(executor) {\n this._c = []; // <- awaiting reactions\n this._a = undefined; // <- checked in isUnhandled reactions\n this._s = 0; // <- state\n this._d = false; // <- done\n this._v = undefined; // <- value\n this._h = 0; // <- rejection state, 0 - default, 1 - handled, 2 - unhandled\n this._n = false; // <- notify\n };\n Internal.prototype = require('./_redefine-all')($Promise.prototype, {\n // 25.4.5.3 Promise.prototype.then(onFulfilled, onRejected)\n then: function then(onFulfilled, onRejected) {\n var reaction = newPromiseCapability(speciesConstructor(this, $Promise));\n reaction.ok = typeof onFulfilled == 'function' ? onFulfilled : true;\n reaction.fail = typeof onRejected == 'function' && onRejected;\n reaction.domain = isNode ? process.domain : undefined;\n this._c.push(reaction);\n if (this._a) this._a.push(reaction);\n if (this._s) notify(this, false);\n return reaction.promise;\n },\n // 25.4.5.1 Promise.prototype.catch(onRejected)\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n });\n OwnPromiseCapability = function () {\n var promise = new Internal();\n this.promise = promise;\n this.resolve = ctx($resolve, promise, 1);\n this.reject = ctx($reject, promise, 1);\n };\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === $Promise || C === Wrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, { Promise: $Promise });\nrequire('./_set-to-string-tag')($Promise, PROMISE);\nrequire('./_set-species')(PROMISE);\nWrapper = require('./_core')[PROMISE];\n\n// statics\n$export($export.S + $export.F * !USE_NATIVE, PROMISE, {\n // 25.4.4.5 Promise.reject(r)\n reject: function reject(r) {\n var capability = newPromiseCapability(this);\n var $$reject = capability.reject;\n $$reject(r);\n return capability.promise;\n }\n});\n$export($export.S + $export.F * (LIBRARY || !USE_NATIVE), PROMISE, {\n // 25.4.4.6 Promise.resolve(x)\n resolve: function resolve(x) {\n return promiseResolve(LIBRARY && this === Wrapper ? $Promise : this, x);\n }\n});\n$export($export.S + $export.F * !(USE_NATIVE && require('./_iter-detect')(function (iter) {\n $Promise.all(iter)['catch'](empty);\n})), PROMISE, {\n // 25.4.4.1 Promise.all(iterable)\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var values = [];\n var index = 0;\n var remaining = 1;\n forOf(iterable, false, function (promise) {\n var $index = index++;\n var alreadyCalled = false;\n values.push(undefined);\n remaining++;\n C.resolve(promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[$index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.e) reject(result.v);\n return capability.promise;\n },\n // 25.4.4.4 Promise.race(iterable)\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapability(C);\n var reject = capability.reject;\n var result = perform(function () {\n forOf(iterable, false, function (promise) {\n C.resolve(promise).then(capability.resolve, reject);\n });\n });\n if (result.e) reject(result.v);\n return capability.promise;\n }\n});\n","// fast apply, http://jsperf.lnkit.com/fast-apply/5\nmodule.exports = function (fn, args, that) {\n var un = that === undefined;\n switch (args.length) {\n case 0: return un ? fn()\n : fn.call(that);\n case 1: return un ? fn(args[0])\n : fn.call(that, args[0]);\n case 2: return un ? fn(args[0], args[1])\n : fn.call(that, args[0], args[1]);\n case 3: return un ? fn(args[0], args[1], args[2])\n : fn.call(that, args[0], args[1], args[2]);\n case 4: return un ? fn(args[0], args[1], args[2], args[3])\n : fn.call(that, args[0], args[1], args[2], args[3]);\n } return fn.apply(that, args);\n};\n","var global = require('./_global');\nvar macrotask = require('./_task').set;\nvar Observer = global.MutationObserver || global.WebKitMutationObserver;\nvar process = global.process;\nvar Promise = global.Promise;\nvar isNode = require('./_cof')(process) == 'process';\n\nmodule.exports = function () {\n var head, last, notify;\n\n var flush = function () {\n var parent, fn;\n if (isNode && (parent = process.domain)) parent.exit();\n while (head) {\n fn = head.fn;\n head = head.next;\n try {\n fn();\n } catch (e) {\n if (head) notify();\n else last = undefined;\n throw e;\n }\n } last = undefined;\n if (parent) parent.enter();\n };\n\n // Node.js\n if (isNode) {\n notify = function () {\n process.nextTick(flush);\n };\n // browsers with MutationObserver, except iOS Safari - https://github.com/zloirock/core-js/issues/339\n } else if (Observer && !(global.navigator && global.navigator.standalone)) {\n var toggle = true;\n var node = document.createTextNode('');\n new Observer(flush).observe(node, { characterData: true }); // eslint-disable-line no-new\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n var promise = Promise.resolve(undefined);\n notify = function () {\n promise.then(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessag\n // - onreadystatechange\n // - setTimeout\n } else {\n notify = function () {\n // strange IE + webpack dev server bug - use .call(global)\n macrotask.call(global, flush);\n };\n }\n\n return function (fn) {\n var task = { fn: fn, next: undefined };\n if (last) last.next = task;\n if (!head) {\n head = task;\n notify();\n } last = task;\n };\n};\n","var global = require('./_global');\nvar navigator = global.navigator;\n\nmodule.exports = navigator && navigator.userAgent || '';\n","// https://github.com/tc39/proposal-promise-finally\n'use strict';\nvar $export = require('./_export');\nvar core = require('./_core');\nvar global = require('./_global');\nvar speciesConstructor = require('./_species-constructor');\nvar promiseResolve = require('./_promise-resolve');\n\n$export($export.P + $export.R, 'Promise', { 'finally': function (onFinally) {\n var C = speciesConstructor(this, core.Promise || global.Promise);\n var isFunction = typeof onFinally == 'function';\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n} });\n","'use strict';\n// https://github.com/tc39/proposal-promise-try\nvar $export = require('./_export');\nvar newPromiseCapability = require('./_new-promise-capability');\nvar perform = require('./_perform');\n\n$export($export.S, 'Promise', { 'try': function (callbackfn) {\n var promiseCapability = newPromiseCapability.f(this);\n var result = perform(callbackfn);\n (result.e ? promiseCapability.reject : promiseCapability.resolve)(result.v);\n return promiseCapability.promise;\n} });\n","module.exports = Array.isArray || function (arr) {\n return Object.prototype.toString.call(arr) == '[object Array]';\n};\n","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport _classCallCheck from \"@babel/runtime-corejs2/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime-corejs2/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime-corejs2/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime-corejs2/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime-corejs2/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime-corejs2/helpers/esm/defineProperty\";\nimport _Object$keys from \"@babel/runtime-corejs2/core-js/object/keys\";\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { shouldRender, parseDateString, toDateString, pad } from \"../../utils\";\n\nfunction rangeOptions(start, stop) {\n var options = [];\n\n for (var i = start; i <= stop; i++) {\n options.push({\n value: i,\n label: pad(i, 2)\n });\n }\n\n return options;\n}\n\nfunction readyForChange(state) {\n return _Object$keys(state).every(function (key) {\n return state[key] !== -1;\n });\n}\n\nfunction DateElement(props) {\n var type = props.type,\n range = props.range,\n value = props.value,\n select = props.select,\n rootId = props.rootId,\n disabled = props.disabled,\n readonly = props.readonly,\n autofocus = props.autofocus,\n registry = props.registry,\n onBlur = props.onBlur;\n var id = rootId + \"_\" + type;\n var SelectWidget = registry.widgets.SelectWidget;\n return React.createElement(SelectWidget, {\n schema: {\n type: \"integer\"\n },\n id: id,\n className: \"form-control\",\n options: {\n enumOptions: rangeOptions(range[0], range[1])\n },\n placeholder: type,\n value: value,\n disabled: disabled,\n readonly: readonly,\n autofocus: autofocus,\n onChange: function onChange(value) {\n return select(type, value);\n },\n onBlur: onBlur\n });\n}\n\nvar AltDateWidget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(AltDateWidget, _Component);\n\n function AltDateWidget(props) {\n var _this;\n\n _classCallCheck(this, AltDateWidget);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AltDateWidget).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (property, value) {\n _this.setState(_defineProperty({}, property, typeof value === \"undefined\" ? -1 : value), function () {\n // Only propagate to parent state if we have a complete date{time}\n if (readyForChange(_this.state)) {\n _this.props.onChange(toDateString(_this.state, _this.props.time));\n }\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"setNow\", function (event) {\n event.preventDefault();\n var _this$props = _this.props,\n time = _this$props.time,\n disabled = _this$props.disabled,\n readonly = _this$props.readonly,\n onChange = _this$props.onChange;\n\n if (disabled || readonly) {\n return;\n }\n\n var nowDateObj = parseDateString(new Date().toJSON(), time);\n\n _this.setState(nowDateObj, function () {\n return onChange(toDateString(_this.state, time));\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"clear\", function (event) {\n event.preventDefault();\n var _this$props2 = _this.props,\n time = _this$props2.time,\n disabled = _this$props2.disabled,\n readonly = _this$props2.readonly,\n onChange = _this$props2.onChange;\n\n if (disabled || readonly) {\n return;\n }\n\n _this.setState(parseDateString(\"\", time), function () {\n return onChange(undefined);\n });\n });\n\n _this.state = parseDateString(props.value, props.time);\n return _this;\n }\n\n _createClass(AltDateWidget, [{\n key: \"UNSAFE_componentWillReceiveProps\",\n value: function UNSAFE_componentWillReceiveProps(nextProps) {\n this.setState(parseDateString(nextProps.value, nextProps.time));\n }\n }, {\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return shouldRender(this, nextProps, nextState);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n id = _this$props3.id,\n disabled = _this$props3.disabled,\n readonly = _this$props3.readonly,\n autofocus = _this$props3.autofocus,\n registry = _this$props3.registry,\n onBlur = _this$props3.onBlur,\n options = _this$props3.options;\n return React.createElement(\"ul\", {\n className: \"list-inline\"\n }, this.dateElementProps.map(function (elemProps, i) {\n return React.createElement(\"li\", {\n key: i\n }, React.createElement(DateElement, _extends({\n rootId: id,\n select: _this2.onChange\n }, elemProps, {\n disabled: disabled,\n readonly: readonly,\n registry: registry,\n onBlur: onBlur,\n autofocus: autofocus && i === 0\n })));\n }), (options.hideNowButton !== \"undefined\" ? !options.hideNowButton : true) && React.createElement(\"li\", null, React.createElement(\"a\", {\n href: \"#\",\n className: \"btn btn-info btn-now\",\n onClick: this.setNow\n }, \"Now\")), (options.hideClearButton !== \"undefined\" ? !options.hideClearButton : true) && React.createElement(\"li\", null, React.createElement(\"a\", {\n href: \"#\",\n className: \"btn btn-warning btn-clear\",\n onClick: this.clear\n }, \"Clear\")));\n }\n }, {\n key: \"dateElementProps\",\n get: function get() {\n var _this$props4 = this.props,\n time = _this$props4.time,\n options = _this$props4.options;\n var _this$state = this.state,\n year = _this$state.year,\n month = _this$state.month,\n day = _this$state.day,\n hour = _this$state.hour,\n minute = _this$state.minute,\n second = _this$state.second;\n var data = [{\n type: \"year\",\n range: options.yearsRange,\n value: year\n }, {\n type: \"month\",\n range: [1, 12],\n value: month\n }, {\n type: \"day\",\n range: [1, 31],\n value: day\n }];\n\n if (time) {\n data.push({\n type: \"hour\",\n range: [0, 23],\n value: hour\n }, {\n type: \"minute\",\n range: [0, 59],\n value: minute\n }, {\n type: \"second\",\n range: [0, 59],\n value: second\n });\n }\n\n return data;\n }\n }]);\n\n return AltDateWidget;\n}(Component);\n\n_defineProperty(AltDateWidget, \"defaultProps\", {\n time: false,\n disabled: false,\n readonly: false,\n autofocus: false,\n options: {\n yearsRange: [1900, new Date().getFullYear() + 2]\n }\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n AltDateWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n value: PropTypes.string,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n autofocus: PropTypes.bool,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n time: PropTypes.bool,\n options: PropTypes.object\n };\n}\n\nexport default AltDateWidget;","import _objectSpread from \"@babel/runtime-corejs2/helpers/esm/objectSpread\";\nimport _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport AltDateWidget from \"./AltDateWidget\";\n\nfunction AltDateTimeWidget(props) {\n var AltDateWidget = props.registry.widgets.AltDateWidget;\n return React.createElement(AltDateWidget, _extends({\n time: true\n }, props));\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n AltDateTimeWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n value: PropTypes.string,\n required: PropTypes.bool,\n onChange: PropTypes.func,\n options: PropTypes.object\n };\n}\n\nAltDateTimeWidget.defaultProps = _objectSpread({}, AltDateWidget.defaultProps, {\n time: true\n});\nexport default AltDateTimeWidget;","import _Set from \"@babel/runtime-corejs2/core-js/set\";\nimport _toConsumableArray from \"@babel/runtime-corejs2/helpers/esm/toConsumableArray\";\nimport _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime-corejs2/helpers/esm/objectWithoutProperties\";\nimport _JSON$stringify from \"@babel/runtime-corejs2/core-js/json/stringify\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction BaseInput(props) {\n // Note: since React 15.2.0 we can't forward unknown element attributes, so we\n // exclude the \"options\" and \"schema\" ones here.\n if (!props.id) {\n console.log(\"No id for\", props);\n throw new Error(\"no id for props \".concat(_JSON$stringify(props)));\n }\n\n var value = props.value,\n readonly = props.readonly,\n disabled = props.disabled,\n autofocus = props.autofocus,\n onBlur = props.onBlur,\n onFocus = props.onFocus,\n options = props.options,\n schema = props.schema,\n uiSchema = props.uiSchema,\n formContext = props.formContext,\n registry = props.registry,\n rawErrors = props.rawErrors,\n inputProps = _objectWithoutProperties(props, [\"value\", \"readonly\", \"disabled\", \"autofocus\", \"onBlur\", \"onFocus\", \"options\", \"schema\", \"uiSchema\", \"formContext\", \"registry\", \"rawErrors\"]); // If options.inputType is set use that as the input type\n\n\n if (options.inputType) {\n inputProps.type = options.inputType;\n } else if (!inputProps.type) {\n // If the schema is of type number or integer, set the input type to number\n if (schema.type === \"number\") {\n inputProps.type = \"number\"; // Setting step to 'any' fixes a bug in Safari where decimals are not\n // allowed in number inputs\n\n inputProps.step = \"any\";\n } else if (schema.type === \"integer\") {\n inputProps.type = \"number\"; // Since this is integer, you always want to step up or down in multiples\n // of 1\n\n inputProps.step = \"1\";\n } else {\n inputProps.type = \"text\";\n }\n }\n\n if (options.autocomplete) {\n inputProps.autoComplete = options.autocomplete;\n } // If multipleOf is defined, use this as the step value. This mainly improves\n // the experience for keyboard users (who can use the up/down KB arrows).\n\n\n if (schema.multipleOf) {\n inputProps.step = schema.multipleOf;\n }\n\n if (typeof schema.minimum !== \"undefined\") {\n inputProps.min = schema.minimum;\n }\n\n if (typeof schema.maximum !== \"undefined\") {\n inputProps.max = schema.maximum;\n }\n\n var _onChange = function _onChange(_ref) {\n var value = _ref.target.value;\n return props.onChange(value === \"\" ? options.emptyValue : value);\n };\n\n return [React.createElement(\"input\", _extends({\n key: inputProps.id,\n className: \"form-control\",\n readOnly: readonly,\n disabled: disabled,\n autoFocus: autofocus,\n value: value == null ? \"\" : value\n }, inputProps, {\n list: schema.examples ? \"examples_\".concat(inputProps.id) : null,\n onChange: _onChange,\n onBlur: onBlur && function (event) {\n return onBlur(inputProps.id, event.target.value);\n },\n onFocus: onFocus && function (event) {\n return onFocus(inputProps.id, event.target.value);\n }\n })), schema.examples ? React.createElement(\"datalist\", {\n id: \"examples_\".concat(inputProps.id)\n }, _toConsumableArray(new _Set(schema.examples.concat(schema[\"default\"] ? [schema[\"default\"]] : []))).map(function (example) {\n return React.createElement(\"option\", {\n key: example,\n value: example\n });\n })) : null];\n}\n\nBaseInput.defaultProps = {\n required: false,\n disabled: false,\n readonly: false,\n autofocus: false\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n BaseInput.propTypes = {\n id: PropTypes.string.isRequired,\n placeholder: PropTypes.string,\n value: PropTypes.any,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n autofocus: PropTypes.bool,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func\n };\n}\n\nexport default BaseInput;","import React from \"react\";\nimport PropTypes from \"prop-types\"; // Check to see if a schema specifies that a value must be true\n\nfunction schemaRequiresTrueValue(schema) {\n // Check if const is a truthy value\n if (schema[\"const\"]) {\n return true;\n } // Check if an enum has a single value of true\n\n\n if (schema[\"enum\"] && schema[\"enum\"].length === 1 && schema[\"enum\"][0] === true) {\n return true;\n } // If anyOf has a single value, evaluate the subschema\n\n\n if (schema.anyOf && schema.anyOf.length === 1) {\n return schemaRequiresTrueValue(schema.anyOf[0]);\n } // If oneOf has a single value, evaluate the subschema\n\n\n if (schema.oneOf && schema.oneOf.length === 1) {\n return schemaRequiresTrueValue(schema.oneOf[0]);\n } // Evaluate each subschema in allOf, to see if one of them requires a true\n // value\n\n\n if (schema.allOf) {\n return schema.allOf.some(schemaRequiresTrueValue);\n }\n}\n\nfunction CheckboxWidget(props) {\n var schema = props.schema,\n id = props.id,\n value = props.value,\n disabled = props.disabled,\n readonly = props.readonly,\n label = props.label,\n autofocus = props.autofocus,\n onBlur = props.onBlur,\n onFocus = props.onFocus,\n _onChange = props.onChange,\n DescriptionField = props.DescriptionField; // Because an unchecked checkbox will cause html5 validation to fail, only add\n // the \"required\" attribute if the field value must be \"true\", due to the\n // \"const\" or \"enum\" keywords\n\n var required = schemaRequiresTrueValue(schema);\n return React.createElement(\"div\", {\n className: \"checkbox \".concat(disabled || readonly ? \"disabled\" : \"\")\n }, schema.description && React.createElement(DescriptionField, {\n description: schema.description\n }), React.createElement(\"label\", null, React.createElement(\"input\", {\n type: \"checkbox\",\n id: id,\n checked: typeof value === \"undefined\" ? false : value,\n required: required,\n disabled: disabled || readonly,\n autoFocus: autofocus,\n onChange: function onChange(event) {\n return _onChange(event.target.checked);\n },\n onBlur: onBlur && function (event) {\n return onBlur(id, event.target.checked);\n },\n onFocus: onFocus && function (event) {\n return onFocus(id, event.target.checked);\n }\n }), React.createElement(\"span\", null, label)));\n}\n\nCheckboxWidget.defaultProps = {\n autofocus: false\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n CheckboxWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n value: PropTypes.bool,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n autofocus: PropTypes.bool,\n onChange: PropTypes.func\n };\n}\n\nexport default CheckboxWidget;","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction selectValue(value, selected, all) {\n var at = all.indexOf(value);\n var updated = selected.slice(0, at).concat(value, selected.slice(at)); // As inserting values at predefined index positions doesn't work with empty\n // arrays, we need to reorder the updated selection to match the initial order\n\n return updated.sort(function (a, b) {\n return all.indexOf(a) > all.indexOf(b);\n });\n}\n\nfunction deselectValue(value, selected) {\n return selected.filter(function (v) {\n return v !== value;\n });\n}\n\nfunction CheckboxesWidget(props) {\n var id = props.id,\n disabled = props.disabled,\n options = props.options,\n value = props.value,\n autofocus = props.autofocus,\n readonly = props.readonly,\n _onChange = props.onChange;\n var enumOptions = options.enumOptions,\n enumDisabled = options.enumDisabled,\n inline = options.inline;\n return React.createElement(\"div\", {\n className: \"checkboxes\",\n id: id\n }, enumOptions.map(function (option, index) {\n var checked = value.indexOf(option.value) !== -1;\n var itemDisabled = enumDisabled && enumDisabled.indexOf(option.value) != -1;\n var disabledCls = disabled || itemDisabled || readonly ? \"disabled\" : \"\";\n var checkbox = React.createElement(\"span\", null, React.createElement(\"input\", {\n type: \"checkbox\",\n id: \"\".concat(id, \"_\").concat(index),\n checked: checked,\n disabled: disabled || itemDisabled || readonly,\n autoFocus: autofocus && index === 0,\n onChange: function onChange(event) {\n var all = enumOptions.map(function (_ref) {\n var value = _ref.value;\n return value;\n });\n\n if (event.target.checked) {\n _onChange(selectValue(option.value, value, all));\n } else {\n _onChange(deselectValue(option.value, value));\n }\n }\n }), React.createElement(\"span\", null, option.label));\n return inline ? React.createElement(\"label\", {\n key: index,\n className: \"checkbox-inline \".concat(disabledCls)\n }, checkbox) : React.createElement(\"div\", {\n key: index,\n className: \"checkbox \".concat(disabledCls)\n }, React.createElement(\"label\", null, checkbox));\n }));\n}\n\nCheckboxesWidget.defaultProps = {\n autofocus: false,\n options: {\n inline: false\n }\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n CheckboxesWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n options: PropTypes.shape({\n enumOptions: PropTypes.array,\n inline: PropTypes.bool\n }).isRequired,\n value: PropTypes.any,\n required: PropTypes.bool,\n readonly: PropTypes.bool,\n disabled: PropTypes.bool,\n multiple: PropTypes.bool,\n autofocus: PropTypes.bool,\n onChange: PropTypes.func\n };\n}\n\nexport default CheckboxesWidget;","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction ColorWidget(props) {\n var disabled = props.disabled,\n readonly = props.readonly,\n BaseInput = props.registry.widgets.BaseInput;\n return React.createElement(BaseInput, _extends({\n type: \"color\"\n }, props, {\n disabled: disabled || readonly\n }));\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n ColorWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n value: PropTypes.string,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n autofocus: PropTypes.bool,\n onChange: PropTypes.func\n };\n}\n\nexport default ColorWidget;","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction DateWidget(props) {\n var _onChange = props.onChange,\n BaseInput = props.registry.widgets.BaseInput;\n return React.createElement(BaseInput, _extends({\n type: \"date\"\n }, props, {\n onChange: function onChange(value) {\n return _onChange(value || undefined);\n }\n }));\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n DateWidget.propTypes = {\n value: PropTypes.string\n };\n}\n\nexport default DateWidget;","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { utcToLocal, localToUTC } from \"../../utils\";\n\nfunction DateTimeWidget(props) {\n var value = props.value,\n _onChange = props.onChange,\n BaseInput = props.registry.widgets.BaseInput;\n return React.createElement(BaseInput, _extends({\n type: \"datetime-local\"\n }, props, {\n value: utcToLocal(value),\n onChange: function onChange(value) {\n return _onChange(localToUTC(value));\n }\n }));\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n DateTimeWidget.propTypes = {\n value: PropTypes.string\n };\n}\n\nexport default DateTimeWidget;","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction EmailWidget(props) {\n var BaseInput = props.registry.widgets.BaseInput;\n return React.createElement(BaseInput, _extends({\n type: \"email\"\n }, props));\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n EmailWidget.propTypes = {\n value: PropTypes.string\n };\n}\n\nexport default EmailWidget;","import _Array$isArray from \"@babel/runtime-corejs2/core-js/array/is-array\";\nimport _classCallCheck from \"@babel/runtime-corejs2/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime-corejs2/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime-corejs2/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime-corejs2/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime-corejs2/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime-corejs2/helpers/esm/defineProperty\";\nimport _Promise from \"@babel/runtime-corejs2/core-js/promise\";\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport { dataURItoBlob, shouldRender } from \"../../utils\";\n\nfunction addNameToDataURL(dataURL, name) {\n return dataURL.replace(\";base64\", \";name=\".concat(encodeURIComponent(name), \";base64\"));\n}\n\nfunction processFile(file) {\n var name = file.name,\n size = file.size,\n type = file.type;\n return new _Promise(function (resolve, reject) {\n var reader = new window.FileReader();\n reader.onerror = reject;\n\n reader.onload = function (event) {\n resolve({\n dataURL: addNameToDataURL(event.target.result, name),\n name: name,\n size: size,\n type: type\n });\n };\n\n reader.readAsDataURL(file);\n });\n}\n\nfunction processFiles(files) {\n return _Promise.all([].map.call(files, processFile));\n}\n\nfunction FilesInfo(props) {\n var filesInfo = props.filesInfo;\n\n if (filesInfo.length === 0) {\n return null;\n }\n\n return React.createElement(\"ul\", {\n className: \"file-info\"\n }, filesInfo.map(function (fileInfo, key) {\n var name = fileInfo.name,\n size = fileInfo.size,\n type = fileInfo.type;\n return React.createElement(\"li\", {\n key: key\n }, React.createElement(\"strong\", null, name), \" (\", type, \", \", size, \" bytes)\");\n }));\n}\n\nfunction extractFileInfo(dataURLs) {\n return dataURLs.filter(function (dataURL) {\n return typeof dataURL !== \"undefined\";\n }).map(function (dataURL) {\n var _dataURItoBlob = dataURItoBlob(dataURL),\n blob = _dataURItoBlob.blob,\n name = _dataURItoBlob.name;\n\n return {\n name: name,\n size: blob.size,\n type: blob.type\n };\n });\n}\n\nvar FileWidget =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(FileWidget, _Component);\n\n function FileWidget(props) {\n var _this;\n\n _classCallCheck(this, FileWidget);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(FileWidget).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"onChange\", function (event) {\n var _this$props = _this.props,\n multiple = _this$props.multiple,\n onChange = _this$props.onChange;\n processFiles(event.target.files).then(function (filesInfo) {\n var state = {\n values: filesInfo.map(function (fileInfo) {\n return fileInfo.dataURL;\n }),\n filesInfo: filesInfo\n };\n\n _this.setState(state, function () {\n if (multiple) {\n onChange(state.values);\n } else {\n onChange(state.values[0]);\n }\n });\n });\n });\n\n var value = props.value;\n var values = _Array$isArray(value) ? value : [value];\n _this.state = {\n values: values,\n filesInfo: extractFileInfo(values)\n };\n return _this;\n }\n\n _createClass(FileWidget, [{\n key: \"shouldComponentUpdate\",\n value: function shouldComponentUpdate(nextProps, nextState) {\n return shouldRender(this, nextProps, nextState);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props2 = this.props,\n multiple = _this$props2.multiple,\n id = _this$props2.id,\n readonly = _this$props2.readonly,\n disabled = _this$props2.disabled,\n autofocus = _this$props2.autofocus,\n options = _this$props2.options;\n var filesInfo = this.state.filesInfo;\n return React.createElement(\"div\", null, React.createElement(\"p\", null, React.createElement(\"input\", {\n ref: function ref(_ref) {\n return _this2.inputRef = _ref;\n },\n id: id,\n type: \"file\",\n disabled: readonly || disabled,\n onChange: this.onChange,\n defaultValue: \"\",\n autoFocus: autofocus,\n multiple: multiple,\n accept: options.accept\n })), React.createElement(FilesInfo, {\n filesInfo: filesInfo\n }));\n }\n }]);\n\n return FileWidget;\n}(Component);\n\nFileWidget.defaultProps = {\n autofocus: false\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n FileWidget.propTypes = {\n multiple: PropTypes.bool,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.arrayOf(PropTypes.string)]),\n autofocus: PropTypes.bool\n };\n}\n\nexport default FileWidget;","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction HiddenWidget(_ref) {\n var id = _ref.id,\n value = _ref.value;\n return React.createElement(\"input\", {\n type: \"hidden\",\n id: id,\n value: typeof value === \"undefined\" ? \"\" : value\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n HiddenWidget.propTypes = {\n id: PropTypes.string.isRequired,\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number, PropTypes.bool])\n };\n}\n\nexport default HiddenWidget;","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction PasswordWidget(props) {\n var BaseInput = props.registry.widgets.BaseInput;\n return React.createElement(BaseInput, _extends({\n type: \"password\"\n }, props));\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n PasswordWidget.propTypes = {\n value: PropTypes.string\n };\n}\n\nexport default PasswordWidget;","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction RadioWidget(props) {\n var options = props.options,\n value = props.value,\n required = props.required,\n disabled = props.disabled,\n readonly = props.readonly,\n autofocus = props.autofocus,\n onBlur = props.onBlur,\n onFocus = props.onFocus,\n _onChange = props.onChange,\n id = props.id; // Generating a unique field name to identify this set of radio buttons\n\n var name = Math.random().toString();\n var enumOptions = options.enumOptions,\n enumDisabled = options.enumDisabled,\n inline = options.inline; // checked={checked} has been moved above name={name}, As mentioned in #349;\n // this is a temporary fix for radio button rendering bug in React, facebook/react#7630.\n\n return React.createElement(\"div\", {\n className: \"field-radio-group\",\n id: id\n }, enumOptions.map(function (option, i) {\n var checked = option.value === value;\n var itemDisabled = enumDisabled && enumDisabled.indexOf(option.value) != -1;\n var disabledCls = disabled || itemDisabled || readonly ? \"disabled\" : \"\";\n var radio = React.createElement(\"span\", null, React.createElement(\"input\", {\n type: \"radio\",\n checked: checked,\n name: name,\n required: required,\n value: option.value,\n disabled: disabled || itemDisabled || readonly,\n autoFocus: autofocus && i === 0,\n onChange: function onChange(_) {\n return _onChange(option.value);\n },\n onBlur: onBlur && function (event) {\n return onBlur(id, event.target.value);\n },\n onFocus: onFocus && function (event) {\n return onFocus(id, event.target.value);\n }\n }), React.createElement(\"span\", null, option.label));\n return inline ? React.createElement(\"label\", {\n key: i,\n className: \"radio-inline \".concat(disabledCls)\n }, radio) : React.createElement(\"div\", {\n key: i,\n className: \"radio \".concat(disabledCls)\n }, React.createElement(\"label\", null, radio));\n }));\n}\n\nRadioWidget.defaultProps = {\n autofocus: false\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n RadioWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n options: PropTypes.shape({\n enumOptions: PropTypes.array,\n inline: PropTypes.bool\n }).isRequired,\n value: PropTypes.any,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n autofocus: PropTypes.bool,\n onChange: PropTypes.func\n };\n}\n\nexport default RadioWidget;","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { rangeSpec } from \"../../utils\";\n\nfunction RangeWidget(props) {\n var schema = props.schema,\n value = props.value,\n BaseInput = props.registry.widgets.BaseInput;\n return React.createElement(\"div\", {\n className: \"field-range-wrapper\"\n }, React.createElement(BaseInput, _extends({\n type: \"range\"\n }, props, rangeSpec(schema))), React.createElement(\"span\", {\n className: \"range-view\"\n }, value));\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n RangeWidget.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number])\n };\n}\n\nexport default RangeWidget;","import _Set from \"@babel/runtime-corejs2/core-js/set\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { asNumber, guessType } from \"../../utils\";\nvar nums = new _Set([\"number\", \"integer\"]);\n/**\n * This is a silly limitation in the DOM where option change event values are\n * always retrieved as strings.\n */\n\nfunction processValue(schema, value) {\n // \"enum\" is a reserved word, so only \"type\" and \"items\" can be destructured\n var type = schema.type,\n items = schema.items;\n\n if (value === \"\") {\n return undefined;\n } else if (type === \"array\" && items && nums.has(items.type)) {\n return value.map(asNumber);\n } else if (type === \"boolean\") {\n return value === \"true\";\n } else if (type === \"number\") {\n return asNumber(value);\n } // If type is undefined, but an enum is present, try and infer the type from\n // the enum values\n\n\n if (schema[\"enum\"]) {\n if (schema[\"enum\"].every(function (x) {\n return guessType(x) === \"number\";\n })) {\n return asNumber(value);\n } else if (schema[\"enum\"].every(function (x) {\n return guessType(x) === \"boolean\";\n })) {\n return value === \"true\";\n }\n }\n\n return value;\n}\n\nfunction getValue(event, multiple) {\n if (multiple) {\n return [].slice.call(event.target.options).filter(function (o) {\n return o.selected;\n }).map(function (o) {\n return o.value;\n });\n } else {\n return event.target.value;\n }\n}\n\nfunction SelectWidget(props) {\n var schema = props.schema,\n id = props.id,\n options = props.options,\n value = props.value,\n required = props.required,\n disabled = props.disabled,\n readonly = props.readonly,\n multiple = props.multiple,\n autofocus = props.autofocus,\n _onChange = props.onChange,\n onBlur = props.onBlur,\n onFocus = props.onFocus,\n placeholder = props.placeholder;\n var enumOptions = options.enumOptions,\n enumDisabled = options.enumDisabled;\n var emptyValue = multiple ? [] : \"\";\n return React.createElement(\"select\", {\n id: id,\n multiple: multiple,\n className: \"form-control\",\n value: typeof value === \"undefined\" ? emptyValue : value,\n required: required,\n disabled: disabled || readonly,\n autoFocus: autofocus,\n onBlur: onBlur && function (event) {\n var newValue = getValue(event, multiple);\n onBlur(id, processValue(schema, newValue));\n },\n onFocus: onFocus && function (event) {\n var newValue = getValue(event, multiple);\n onFocus(id, processValue(schema, newValue));\n },\n onChange: function onChange(event) {\n var newValue = getValue(event, multiple);\n\n _onChange(processValue(schema, newValue));\n }\n }, !multiple && schema[\"default\"] === undefined && React.createElement(\"option\", {\n value: \"\"\n }, placeholder), enumOptions.map(function (_ref, i) {\n var value = _ref.value,\n label = _ref.label;\n var disabled = enumDisabled && enumDisabled.indexOf(value) != -1;\n return React.createElement(\"option\", {\n key: i,\n value: value,\n disabled: disabled\n }, label);\n }));\n}\n\nSelectWidget.defaultProps = {\n autofocus: false\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n SelectWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n options: PropTypes.shape({\n enumOptions: PropTypes.array\n }).isRequired,\n value: PropTypes.any,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n multiple: PropTypes.bool,\n autofocus: PropTypes.bool,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func\n };\n}\n\nexport default SelectWidget;","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction TextareaWidget(props) {\n var id = props.id,\n options = props.options,\n placeholder = props.placeholder,\n value = props.value,\n required = props.required,\n disabled = props.disabled,\n readonly = props.readonly,\n autofocus = props.autofocus,\n onChange = props.onChange,\n onBlur = props.onBlur,\n onFocus = props.onFocus;\n\n var _onChange = function _onChange(_ref) {\n var value = _ref.target.value;\n return onChange(value === \"\" ? options.emptyValue : value);\n };\n\n return React.createElement(\"textarea\", {\n id: id,\n className: \"form-control\",\n value: value ? value : \"\",\n placeholder: placeholder,\n required: required,\n disabled: disabled,\n readOnly: readonly,\n autoFocus: autofocus,\n rows: options.rows,\n onBlur: onBlur && function (event) {\n return onBlur(id, event.target.value);\n },\n onFocus: onFocus && function (event) {\n return onFocus(id, event.target.value);\n },\n onChange: _onChange\n });\n}\n\nTextareaWidget.defaultProps = {\n autofocus: false,\n options: {}\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n TextareaWidget.propTypes = {\n schema: PropTypes.object.isRequired,\n id: PropTypes.string.isRequired,\n placeholder: PropTypes.string,\n options: PropTypes.shape({\n rows: PropTypes.number\n }),\n value: PropTypes.string,\n required: PropTypes.bool,\n disabled: PropTypes.bool,\n readonly: PropTypes.bool,\n autofocus: PropTypes.bool,\n onChange: PropTypes.func,\n onBlur: PropTypes.func,\n onFocus: PropTypes.func\n };\n}\n\nexport default TextareaWidget;","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction TextWidget(props) {\n var BaseInput = props.registry.widgets.BaseInput;\n return React.createElement(BaseInput, props);\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n TextWidget.propTypes = {\n value: PropTypes.oneOfType([PropTypes.string, PropTypes.number]),\n id: PropTypes.string\n };\n}\n\nexport default TextWidget;","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction URLWidget(props) {\n var BaseInput = props.registry.widgets.BaseInput;\n return React.createElement(BaseInput, _extends({\n type: \"url\"\n }, props));\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n URLWidget.propTypes = {\n value: PropTypes.string\n };\n}\n\nexport default URLWidget;","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { rangeSpec } from \"../../utils\";\n\nfunction UpDownWidget(props) {\n var BaseInput = props.registry.widgets.BaseInput;\n return React.createElement(BaseInput, _extends({\n type: \"number\"\n }, props, rangeSpec(props.schema)));\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n UpDownWidget.propTypes = {\n value: PropTypes.oneOfType([PropTypes.number, PropTypes.string])\n };\n}\n\nexport default UpDownWidget;","import AltDateWidget from \"./AltDateWidget\";\nimport AltDateTimeWidget from \"./AltDateTimeWidget\";\nimport BaseInput from \"./BaseInput\";\nimport CheckboxWidget from \"./CheckboxWidget\";\nimport CheckboxesWidget from \"./CheckboxesWidget\";\nimport ColorWidget from \"./ColorWidget\";\nimport DateWidget from \"./DateWidget\";\nimport DateTimeWidget from \"./DateTimeWidget\";\nimport EmailWidget from \"./EmailWidget\";\nimport FileWidget from \"./FileWidget\";\nimport HiddenWidget from \"./HiddenWidget\";\nimport PasswordWidget from \"./PasswordWidget\";\nimport RadioWidget from \"./RadioWidget\";\nimport RangeWidget from \"./RangeWidget\";\nimport SelectWidget from \"./SelectWidget\";\nimport TextareaWidget from \"./TextareaWidget\";\nimport TextWidget from \"./TextWidget\";\nimport URLWidget from \"./URLWidget\";\nimport UpDownWidget from \"./UpDownWidget\";\nexport default {\n BaseInput: BaseInput,\n PasswordWidget: PasswordWidget,\n RadioWidget: RadioWidget,\n UpDownWidget: UpDownWidget,\n RangeWidget: RangeWidget,\n SelectWidget: SelectWidget,\n TextWidget: TextWidget,\n DateWidget: DateWidget,\n DateTimeWidget: DateTimeWidget,\n AltDateWidget: AltDateWidget,\n AltDateTimeWidget: AltDateTimeWidget,\n EmailWidget: EmailWidget,\n URLWidget: URLWidget,\n TextareaWidget: TextareaWidget,\n HiddenWidget: HiddenWidget,\n ColorWidget: ColorWidget,\n FileWidget: FileWidget,\n CheckboxWidget: CheckboxWidget,\n CheckboxesWidget: CheckboxesWidget\n};","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime-corejs2/helpers/esm/objectWithoutProperties\";\nimport React from \"react\";\nexport default function IconButton(props) {\n var _props$type = props.type,\n type = _props$type === void 0 ? \"default\" : _props$type,\n icon = props.icon,\n className = props.className,\n otherProps = _objectWithoutProperties(props, [\"type\", \"icon\", \"className\"]);\n\n return React.createElement(\"button\", _extends({\n type: \"button\",\n className: \"btn btn-\".concat(type, \" \").concat(className)\n }, otherProps), React.createElement(\"i\", {\n className: \"glyphicon glyphicon-\".concat(icon)\n }));\n}","import React from \"react\";\nimport IconButton from \"./IconButton\";\nexport default function AddButton(_ref) {\n var className = _ref.className,\n onClick = _ref.onClick,\n disabled = _ref.disabled;\n return React.createElement(\"div\", {\n className: \"row\"\n }, React.createElement(\"p\", {\n className: \"col-xs-3 col-xs-offset-9 text-right \".concat(className)\n }, React.createElement(IconButton, {\n type: \"info\",\n icon: \"plus\",\n className: \"btn-add col-xs-12\",\n \"aria-label\": \"Add\",\n tabIndex: \"0\",\n onClick: onClick,\n disabled: disabled\n })));\n}","import PropTypes from \"prop-types\";\nexport var registry = PropTypes.shape({\n ArrayFieldTemplate: PropTypes.elementType,\n FieldTemplate: PropTypes.elementType,\n ObjectFieldTemplate: PropTypes.elementType,\n definitions: PropTypes.object.isRequired,\n rootSchema: PropTypes.object,\n fields: PropTypes.objectOf(PropTypes.elementType).isRequired,\n formContext: PropTypes.object.isRequired,\n widgets: PropTypes.objectOf(PropTypes.oneOfType([PropTypes.func, PropTypes.object])).isRequired\n});\nexport var fieldProps = {\n autofocus: PropTypes.bool,\n disabled: PropTypes.bool,\n errorSchema: PropTypes.object,\n formData: PropTypes.any,\n idSchema: PropTypes.object,\n onBlur: PropTypes.func,\n onChange: PropTypes.func.isRequired,\n onFocus: PropTypes.func,\n rawErrors: PropTypes.arrayOf(PropTypes.string),\n readonly: PropTypes.bool,\n registry: registry.isRequired,\n required: PropTypes.bool,\n schema: PropTypes.object.isRequired,\n uiSchema: PropTypes.shape({\n \"ui:options\": PropTypes.shape({\n addable: PropTypes.bool,\n orderable: PropTypes.bool,\n removable: PropTypes.bool\n })\n })\n};","import _Object$keys from \"@babel/runtime-corejs2/core-js/object/keys\";\nimport _objectWithoutProperties from \"@babel/runtime-corejs2/helpers/esm/objectWithoutProperties\";\nimport _objectSpread from \"@babel/runtime-corejs2/helpers/esm/objectSpread\";\nimport _parseInt from \"@babel/runtime-corejs2/core-js/parse-int\";\nimport _toConsumableArray from \"@babel/runtime-corejs2/helpers/esm/toConsumableArray\";\nimport _classCallCheck from \"@babel/runtime-corejs2/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime-corejs2/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime-corejs2/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime-corejs2/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime-corejs2/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime-corejs2/helpers/esm/defineProperty\";\nimport _Array$isArray from \"@babel/runtime-corejs2/core-js/array/is-array\";\nimport AddButton from \"../AddButton\";\nimport IconButton from \"../IconButton\";\nimport React, { Component } from \"react\";\nimport includes from \"core-js/library/fn/array/includes\";\nimport * as types from \"../../types\";\nimport { getWidget, getDefaultFormState, getUiOptions, isMultiSelect, isFilesArray, isFixedItems, allowAdditionalItems, optionsList, retrieveSchema, toIdSchema, getDefaultRegistry } from \"../../utils\";\nimport shortid from \"shortid\";\n\nfunction ArrayFieldTitle(_ref) {\n var TitleField = _ref.TitleField,\n idSchema = _ref.idSchema,\n title = _ref.title,\n required = _ref.required;\n\n if (!title) {\n return null;\n }\n\n var id = \"\".concat(idSchema.$id, \"__title\");\n return React.createElement(TitleField, {\n id: id,\n title: title,\n required: required\n });\n}\n\nfunction ArrayFieldDescription(_ref2) {\n var DescriptionField = _ref2.DescriptionField,\n idSchema = _ref2.idSchema,\n description = _ref2.description;\n\n if (!description) {\n return null;\n }\n\n var id = \"\".concat(idSchema.$id, \"__description\");\n return React.createElement(DescriptionField, {\n id: id,\n description: description\n });\n} // Used in the two templates\n\n\nfunction DefaultArrayItem(props) {\n var btnStyle = {\n flex: 1,\n paddingLeft: 6,\n paddingRight: 6,\n fontWeight: \"bold\"\n };\n return React.createElement(\"div\", {\n key: props.key,\n className: props.className\n }, React.createElement(\"div\", {\n className: props.hasToolbar ? \"col-xs-9\" : \"col-xs-12\"\n }, props.children), props.hasToolbar && React.createElement(\"div\", {\n className: \"col-xs-3 array-item-toolbox\"\n }, React.createElement(\"div\", {\n className: \"btn-group\",\n style: {\n display: \"flex\",\n justifyContent: \"space-around\"\n }\n }, (props.hasMoveUp || props.hasMoveDown) && React.createElement(IconButton, {\n icon: \"arrow-up\",\n \"aria-label\": \"Move up\",\n className: \"array-item-move-up\",\n tabIndex: \"-1\",\n style: btnStyle,\n disabled: props.disabled || props.readonly || !props.hasMoveUp,\n onClick: props.onReorderClick(props.index, props.index - 1)\n }), (props.hasMoveUp || props.hasMoveDown) && React.createElement(IconButton, {\n icon: \"arrow-down\",\n className: \"array-item-move-down\",\n \"aria-label\": \"Move down\",\n tabIndex: \"-1\",\n style: btnStyle,\n disabled: props.disabled || props.readonly || !props.hasMoveDown,\n onClick: props.onReorderClick(props.index, props.index + 1)\n }), props.hasRemove && React.createElement(IconButton, {\n type: \"danger\",\n icon: \"remove\",\n \"aria-label\": \"Remove\",\n className: \"array-item-remove\",\n tabIndex: \"-1\",\n style: btnStyle,\n disabled: props.disabled || props.readonly,\n onClick: props.onDropIndexClick(props.index)\n }))));\n}\n\nfunction DefaultFixedArrayFieldTemplate(props) {\n return React.createElement(\"fieldset\", {\n className: props.className,\n id: props.idSchema.$id\n }, React.createElement(ArrayFieldTitle, {\n key: \"array-field-title-\".concat(props.idSchema.$id),\n TitleField: props.TitleField,\n idSchema: props.idSchema,\n title: props.uiSchema[\"ui:title\"] || props.title,\n required: props.required\n }), (props.uiSchema[\"ui:description\"] || props.schema.description) && React.createElement(\"div\", {\n className: \"field-description\",\n key: \"field-description-\".concat(props.idSchema.$id)\n }, props.uiSchema[\"ui:description\"] || props.schema.description), React.createElement(\"div\", {\n className: \"row array-item-list\",\n key: \"array-item-list-\".concat(props.idSchema.$id)\n }, props.items && props.items.map(DefaultArrayItem)), props.canAdd && React.createElement(AddButton, {\n className: \"array-item-add\",\n onClick: props.onAddClick,\n disabled: props.disabled || props.readonly\n }));\n}\n\nfunction DefaultNormalArrayFieldTemplate(props) {\n return React.createElement(\"fieldset\", {\n className: props.className,\n id: props.idSchema.$id\n }, React.createElement(ArrayFieldTitle, {\n key: \"array-field-title-\".concat(props.idSchema.$id),\n TitleField: props.TitleField,\n idSchema: props.idSchema,\n title: props.uiSchema[\"ui:title\"] || props.title,\n required: props.required\n }), (props.uiSchema[\"ui:description\"] || props.schema.description) && React.createElement(ArrayFieldDescription, {\n key: \"array-field-description-\".concat(props.idSchema.$id),\n DescriptionField: props.DescriptionField,\n idSchema: props.idSchema,\n description: props.uiSchema[\"ui:description\"] || props.schema.description\n }), React.createElement(\"div\", {\n className: \"row array-item-list\",\n key: \"array-item-list-\".concat(props.idSchema.$id)\n }, props.items && props.items.map(function (p) {\n return DefaultArrayItem(p);\n })), props.canAdd && React.createElement(AddButton, {\n className: \"array-item-add\",\n onClick: props.onAddClick,\n disabled: props.disabled || props.readonly\n }));\n}\n\nfunction generateRowId() {\n return shortid.generate();\n}\n\nfunction generateKeyedFormData(formData) {\n return !_Array$isArray(formData) ? [] : formData.map(function (item) {\n return {\n key: generateRowId(),\n item: item\n };\n });\n}\n\nfunction keyedToPlainFormData(keyedFormData) {\n return keyedFormData.map(function (keyedItem) {\n return keyedItem.item;\n });\n}\n\nvar ArrayField =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(ArrayField, _Component);\n\n function ArrayField(props) {\n var _this;\n\n _classCallCheck(this, ArrayField);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ArrayField).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"_getNewFormDataRow\", function () {\n var _this$props = _this.props,\n schema = _this$props.schema,\n _this$props$registry = _this$props.registry,\n registry = _this$props$registry === void 0 ? getDefaultRegistry() : _this$props$registry;\n var rootSchema = registry.rootSchema;\n var itemSchema = schema.items;\n\n if (isFixedItems(schema) && allowAdditionalItems(schema)) {\n itemSchema = schema.additionalItems;\n }\n\n return getDefaultFormState(itemSchema, undefined, rootSchema);\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onAddClick\", function (event) {\n if (event) {\n event.preventDefault();\n }\n\n var onChange = _this.props.onChange;\n var newKeyedFormDataRow = {\n key: generateRowId(),\n item: _this._getNewFormDataRow()\n };\n var newKeyedFormData = [].concat(_toConsumableArray(_this.state.keyedFormData), [newKeyedFormDataRow]);\n\n _this.setState({\n keyedFormData: newKeyedFormData,\n updatedKeyedFormData: true\n }, function () {\n return onChange(keyedToPlainFormData(newKeyedFormData));\n });\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onAddIndexClick\", function (index) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n var onChange = _this.props.onChange;\n var newKeyedFormDataRow = {\n key: generateRowId(),\n item: _this._getNewFormDataRow()\n };\n\n var newKeyedFormData = _toConsumableArray(_this.state.keyedFormData);\n\n newKeyedFormData.splice(index, 0, newKeyedFormDataRow);\n\n _this.setState({\n keyedFormData: newKeyedFormData,\n updatedKeyedFormData: true\n }, function () {\n return onChange(keyedToPlainFormData(newKeyedFormData));\n });\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onDropIndexClick\", function (index) {\n return function (event) {\n if (event) {\n event.preventDefault();\n }\n\n var onChange = _this.props.onChange;\n var keyedFormData = _this.state.keyedFormData; // refs #195: revalidate to ensure properly reindexing errors\n\n var newErrorSchema;\n\n if (_this.props.errorSchema) {\n newErrorSchema = {};\n var errorSchema = _this.props.errorSchema;\n\n for (var i in errorSchema) {\n i = _parseInt(i);\n\n if (i < index) {\n newErrorSchema[i] = errorSchema[i];\n } else if (i > index) {\n newErrorSchema[i - 1] = errorSchema[i];\n }\n }\n }\n\n var newKeyedFormData = keyedFormData.filter(function (_, i) {\n return i !== index;\n });\n\n _this.setState({\n keyedFormData: newKeyedFormData,\n updatedKeyedFormData: true\n }, function () {\n return onChange(keyedToPlainFormData(newKeyedFormData), newErrorSchema);\n });\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onReorderClick\", function (index, newIndex) {\n return function (event) {\n if (event) {\n event.preventDefault();\n event.target.blur();\n }\n\n var onChange = _this.props.onChange;\n var newErrorSchema;\n\n if (_this.props.errorSchema) {\n newErrorSchema = {};\n var errorSchema = _this.props.errorSchema;\n\n for (var i in errorSchema) {\n if (i == index) {\n newErrorSchema[newIndex] = errorSchema[index];\n } else if (i == newIndex) {\n newErrorSchema[index] = errorSchema[newIndex];\n } else {\n newErrorSchema[i] = errorSchema[i];\n }\n }\n }\n\n var keyedFormData = _this.state.keyedFormData;\n\n function reOrderArray() {\n // Copy item\n var _newKeyedFormData = keyedFormData.slice(); // Moves item from index to newIndex\n\n\n _newKeyedFormData.splice(index, 1);\n\n _newKeyedFormData.splice(newIndex, 0, keyedFormData[index]);\n\n return _newKeyedFormData;\n }\n\n var newKeyedFormData = reOrderArray();\n\n _this.setState({\n keyedFormData: newKeyedFormData\n }, function () {\n return onChange(keyedToPlainFormData(newKeyedFormData), newErrorSchema);\n });\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onChangeForIndex\", function (index) {\n return function (value, errorSchema) {\n var _this$props2 = _this.props,\n formData = _this$props2.formData,\n onChange = _this$props2.onChange;\n var newFormData = formData.map(function (item, i) {\n // We need to treat undefined items as nulls to have validation.\n // See https://github.com/tdegrunt/jsonschema/issues/206\n var jsonValue = typeof value === \"undefined\" ? null : value;\n return index === i ? jsonValue : item;\n });\n onChange(newFormData, errorSchema && _this.props.errorSchema && _objectSpread({}, _this.props.errorSchema, _defineProperty({}, index, errorSchema)));\n };\n });\n\n _defineProperty(_assertThisInitialized(_this), \"onSelectChange\", function (value) {\n _this.props.onChange(value);\n });\n\n var _formData = props.formData;\n\n var _keyedFormData = generateKeyedFormData(_formData);\n\n _this.state = {\n keyedFormData: _keyedFormData,\n updatedKeyedFormData: false\n };\n return _this;\n }\n\n _createClass(ArrayField, [{\n key: \"isItemRequired\",\n value: function isItemRequired(itemSchema) {\n if (_Array$isArray(itemSchema.type)) {\n // While we don't yet support composite/nullable jsonschema types, it's\n // future-proof to check for requirement against these.\n return !includes(itemSchema.type, \"null\");\n } // All non-null array item types are inherently required by design\n\n\n return itemSchema.type !== \"null\";\n }\n }, {\n key: \"canAddItem\",\n value: function canAddItem(formItems) {\n var _this$props3 = this.props,\n schema = _this$props3.schema,\n uiSchema = _this$props3.uiSchema;\n\n var _getUiOptions = getUiOptions(uiSchema),\n addable = _getUiOptions.addable;\n\n if (addable !== false) {\n // if ui:options.addable was not explicitly set to false, we can add\n // another item if we have not exceeded maxItems yet\n if (schema.maxItems !== undefined) {\n addable = formItems.length < schema.maxItems;\n } else {\n addable = true;\n }\n }\n\n return addable;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props4 = this.props,\n schema = _this$props4.schema,\n uiSchema = _this$props4.uiSchema,\n idSchema = _this$props4.idSchema,\n _this$props4$registry = _this$props4.registry,\n registry = _this$props4$registry === void 0 ? getDefaultRegistry() : _this$props4$registry;\n var rootSchema = registry.rootSchema;\n\n if (!schema.hasOwnProperty(\"items\")) {\n var fields = registry.fields;\n var UnsupportedField = fields.UnsupportedField;\n return React.createElement(UnsupportedField, {\n schema: schema,\n idSchema: idSchema,\n reason: \"Missing items definition\"\n });\n }\n\n if (isFixedItems(schema)) {\n return this.renderFixedArray();\n }\n\n if (isFilesArray(schema, uiSchema, rootSchema)) {\n return this.renderFiles();\n }\n\n if (isMultiSelect(schema, rootSchema)) {\n return this.renderMultiSelect();\n }\n\n return this.renderNormalArray();\n }\n }, {\n key: \"renderNormalArray\",\n value: function renderNormalArray() {\n var _this2 = this;\n\n var _this$props5 = this.props,\n schema = _this$props5.schema,\n uiSchema = _this$props5.uiSchema,\n errorSchema = _this$props5.errorSchema,\n idSchema = _this$props5.idSchema,\n name = _this$props5.name,\n required = _this$props5.required,\n disabled = _this$props5.disabled,\n readonly = _this$props5.readonly,\n autofocus = _this$props5.autofocus,\n _this$props5$registry = _this$props5.registry,\n registry = _this$props5$registry === void 0 ? getDefaultRegistry() : _this$props5$registry,\n onBlur = _this$props5.onBlur,\n onFocus = _this$props5.onFocus,\n idPrefix = _this$props5.idPrefix,\n rawErrors = _this$props5.rawErrors;\n var title = schema.title === undefined ? name : schema.title;\n var ArrayFieldTemplate = registry.ArrayFieldTemplate,\n rootSchema = registry.rootSchema,\n fields = registry.fields,\n formContext = registry.formContext;\n var TitleField = fields.TitleField,\n DescriptionField = fields.DescriptionField;\n var itemsSchema = retrieveSchema(schema.items, rootSchema);\n var formData = keyedToPlainFormData(this.state.keyedFormData);\n var arrayProps = {\n canAdd: this.canAddItem(formData),\n items: this.state.keyedFormData.map(function (keyedItem, index) {\n var key = keyedItem.key,\n item = keyedItem.item;\n var itemSchema = retrieveSchema(schema.items, rootSchema, item);\n var itemErrorSchema = errorSchema ? errorSchema[index] : undefined;\n var itemIdPrefix = idSchema.$id + \"_\" + index;\n var itemIdSchema = toIdSchema(itemSchema, itemIdPrefix, rootSchema, item, idPrefix);\n return _this2.renderArrayFieldItem({\n key: key,\n index: index,\n canMoveUp: index > 0,\n canMoveDown: index < formData.length - 1,\n itemSchema: itemSchema,\n itemIdSchema: itemIdSchema,\n itemErrorSchema: itemErrorSchema,\n itemData: item,\n itemUiSchema: uiSchema.items,\n autofocus: autofocus && index === 0,\n onBlur: onBlur,\n onFocus: onFocus\n });\n }),\n className: \"field field-array field-array-of-\".concat(itemsSchema.type),\n DescriptionField: DescriptionField,\n disabled: disabled,\n idSchema: idSchema,\n uiSchema: uiSchema,\n onAddClick: this.onAddClick,\n readonly: readonly,\n required: required,\n schema: schema,\n title: title,\n TitleField: TitleField,\n formContext: formContext,\n formData: formData,\n rawErrors: rawErrors,\n registry: registry\n }; // Check if a custom render function was passed in\n\n var Component = uiSchema[\"ui:ArrayFieldTemplate\"] || ArrayFieldTemplate || DefaultNormalArrayFieldTemplate;\n return React.createElement(Component, arrayProps);\n }\n }, {\n key: \"renderMultiSelect\",\n value: function renderMultiSelect() {\n var _this$props6 = this.props,\n schema = _this$props6.schema,\n idSchema = _this$props6.idSchema,\n uiSchema = _this$props6.uiSchema,\n formData = _this$props6.formData,\n disabled = _this$props6.disabled,\n readonly = _this$props6.readonly,\n required = _this$props6.required,\n label = _this$props6.label,\n placeholder = _this$props6.placeholder,\n autofocus = _this$props6.autofocus,\n onBlur = _this$props6.onBlur,\n onFocus = _this$props6.onFocus,\n _this$props6$registry = _this$props6.registry,\n registry = _this$props6$registry === void 0 ? getDefaultRegistry() : _this$props6$registry,\n rawErrors = _this$props6.rawErrors;\n var items = this.props.formData;\n var widgets = registry.widgets,\n rootSchema = registry.rootSchema,\n formContext = registry.formContext;\n var itemsSchema = retrieveSchema(schema.items, rootSchema, formData);\n var enumOptions = optionsList(itemsSchema);\n\n var _getUiOptions$enumOpt = _objectSpread({}, getUiOptions(uiSchema), {\n enumOptions: enumOptions\n }),\n _getUiOptions$enumOpt2 = _getUiOptions$enumOpt.widget,\n widget = _getUiOptions$enumOpt2 === void 0 ? \"select\" : _getUiOptions$enumOpt2,\n options = _objectWithoutProperties(_getUiOptions$enumOpt, [\"widget\"]);\n\n var Widget = getWidget(schema, widget, widgets);\n return React.createElement(Widget, {\n id: idSchema && idSchema.$id,\n multiple: true,\n onChange: this.onSelectChange,\n onBlur: onBlur,\n onFocus: onFocus,\n options: options,\n schema: schema,\n registry: registry,\n value: items,\n disabled: disabled,\n readonly: readonly,\n required: required,\n label: label,\n placeholder: placeholder,\n formContext: formContext,\n autofocus: autofocus,\n rawErrors: rawErrors\n });\n }\n }, {\n key: \"renderFiles\",\n value: function renderFiles() {\n var _this$props7 = this.props,\n schema = _this$props7.schema,\n uiSchema = _this$props7.uiSchema,\n idSchema = _this$props7.idSchema,\n name = _this$props7.name,\n disabled = _this$props7.disabled,\n readonly = _this$props7.readonly,\n autofocus = _this$props7.autofocus,\n onBlur = _this$props7.onBlur,\n onFocus = _this$props7.onFocus,\n _this$props7$registry = _this$props7.registry,\n registry = _this$props7$registry === void 0 ? getDefaultRegistry() : _this$props7$registry,\n rawErrors = _this$props7.rawErrors;\n var title = schema.title || name;\n var items = this.props.formData;\n var widgets = registry.widgets,\n formContext = registry.formContext;\n\n var _getUiOptions2 = getUiOptions(uiSchema),\n _getUiOptions2$widget = _getUiOptions2.widget,\n widget = _getUiOptions2$widget === void 0 ? \"files\" : _getUiOptions2$widget,\n options = _objectWithoutProperties(_getUiOptions2, [\"widget\"]);\n\n var Widget = getWidget(schema, widget, widgets);\n return React.createElement(Widget, {\n options: options,\n id: idSchema && idSchema.$id,\n multiple: true,\n onChange: this.onSelectChange,\n onBlur: onBlur,\n onFocus: onFocus,\n schema: schema,\n title: title,\n value: items,\n disabled: disabled,\n readonly: readonly,\n formContext: formContext,\n autofocus: autofocus,\n rawErrors: rawErrors\n });\n }\n }, {\n key: \"renderFixedArray\",\n value: function renderFixedArray() {\n var _this3 = this;\n\n var _this$props8 = this.props,\n schema = _this$props8.schema,\n uiSchema = _this$props8.uiSchema,\n formData = _this$props8.formData,\n errorSchema = _this$props8.errorSchema,\n idPrefix = _this$props8.idPrefix,\n idSchema = _this$props8.idSchema,\n name = _this$props8.name,\n required = _this$props8.required,\n disabled = _this$props8.disabled,\n readonly = _this$props8.readonly,\n autofocus = _this$props8.autofocus,\n _this$props8$registry = _this$props8.registry,\n registry = _this$props8$registry === void 0 ? getDefaultRegistry() : _this$props8$registry,\n onBlur = _this$props8.onBlur,\n onFocus = _this$props8.onFocus,\n rawErrors = _this$props8.rawErrors;\n var title = schema.title || name;\n var items = this.props.formData;\n var ArrayFieldTemplate = registry.ArrayFieldTemplate,\n rootSchema = registry.rootSchema,\n fields = registry.fields,\n formContext = registry.formContext;\n var TitleField = fields.TitleField;\n var itemSchemas = schema.items.map(function (item, index) {\n return retrieveSchema(item, rootSchema, formData[index]);\n });\n var additionalSchema = allowAdditionalItems(schema) ? retrieveSchema(schema.additionalItems, rootSchema, formData) : null;\n\n if (!items || items.length < itemSchemas.length) {\n // to make sure at least all fixed items are generated\n items = items || [];\n items = items.concat(new Array(itemSchemas.length - items.length));\n } // These are the props passed into the render function\n\n\n var arrayProps = {\n canAdd: this.canAddItem(items) && additionalSchema,\n className: \"field field-array field-array-fixed-items\",\n disabled: disabled,\n idSchema: idSchema,\n formData: formData,\n items: this.state.keyedFormData.map(function (keyedItem, index) {\n var key = keyedItem.key,\n item = keyedItem.item;\n var additional = index >= itemSchemas.length;\n var itemSchema = additional ? retrieveSchema(schema.additionalItems, rootSchema, item) : itemSchemas[index];\n var itemIdPrefix = idSchema.$id + \"_\" + index;\n var itemIdSchema = toIdSchema(itemSchema, itemIdPrefix, rootSchema, item, idPrefix);\n var itemUiSchema = additional ? uiSchema.additionalItems || {} : _Array$isArray(uiSchema.items) ? uiSchema.items[index] : uiSchema.items || {};\n var itemErrorSchema = errorSchema ? errorSchema[index] : undefined;\n return _this3.renderArrayFieldItem({\n key: key,\n index: index,\n canRemove: additional,\n canMoveUp: index >= itemSchemas.length + 1,\n canMoveDown: additional && index < items.length - 1,\n itemSchema: itemSchema,\n itemData: item,\n itemUiSchema: itemUiSchema,\n itemIdSchema: itemIdSchema,\n itemErrorSchema: itemErrorSchema,\n autofocus: autofocus && index === 0,\n onBlur: onBlur,\n onFocus: onFocus\n });\n }),\n onAddClick: this.onAddClick,\n readonly: readonly,\n required: required,\n schema: schema,\n uiSchema: uiSchema,\n title: title,\n TitleField: TitleField,\n formContext: formContext,\n rawErrors: rawErrors\n }; // Check if a custom template template was passed in\n\n var Template = uiSchema[\"ui:ArrayFieldTemplate\"] || ArrayFieldTemplate || DefaultFixedArrayFieldTemplate;\n return React.createElement(Template, arrayProps);\n }\n }, {\n key: \"renderArrayFieldItem\",\n value: function renderArrayFieldItem(props) {\n var key = props.key,\n index = props.index,\n _props$canRemove = props.canRemove,\n canRemove = _props$canRemove === void 0 ? true : _props$canRemove,\n _props$canMoveUp = props.canMoveUp,\n canMoveUp = _props$canMoveUp === void 0 ? true : _props$canMoveUp,\n _props$canMoveDown = props.canMoveDown,\n canMoveDown = _props$canMoveDown === void 0 ? true : _props$canMoveDown,\n itemSchema = props.itemSchema,\n itemData = props.itemData,\n itemUiSchema = props.itemUiSchema,\n itemIdSchema = props.itemIdSchema,\n itemErrorSchema = props.itemErrorSchema,\n autofocus = props.autofocus,\n onBlur = props.onBlur,\n onFocus = props.onFocus,\n rawErrors = props.rawErrors;\n var _this$props9 = this.props,\n disabled = _this$props9.disabled,\n readonly = _this$props9.readonly,\n uiSchema = _this$props9.uiSchema,\n _this$props9$registry = _this$props9.registry,\n registry = _this$props9$registry === void 0 ? getDefaultRegistry() : _this$props9$registry;\n var SchemaField = registry.fields.SchemaField;\n\n var _orderable$removable$ = _objectSpread({\n orderable: true,\n removable: true\n }, uiSchema[\"ui:options\"]),\n orderable = _orderable$removable$.orderable,\n removable = _orderable$removable$.removable;\n\n var has = {\n moveUp: orderable && canMoveUp,\n moveDown: orderable && canMoveDown,\n remove: removable && canRemove\n };\n has.toolbar = _Object$keys(has).some(function (key) {\n return has[key];\n });\n return {\n children: React.createElement(SchemaField, {\n index: index,\n schema: itemSchema,\n uiSchema: itemUiSchema,\n formData: itemData,\n errorSchema: itemErrorSchema,\n idSchema: itemIdSchema,\n required: this.isItemRequired(itemSchema),\n onChange: this.onChangeForIndex(index),\n onBlur: onBlur,\n onFocus: onFocus,\n registry: this.props.registry,\n disabled: this.props.disabled,\n readonly: this.props.readonly,\n autofocus: autofocus,\n rawErrors: rawErrors\n }),\n className: \"array-item\",\n disabled: disabled,\n hasToolbar: has.toolbar,\n hasMoveUp: has.moveUp,\n hasMoveDown: has.moveDown,\n hasRemove: has.remove,\n index: index,\n key: key,\n onAddIndexClick: this.onAddIndexClick,\n onDropIndexClick: this.onDropIndexClick,\n onReorderClick: this.onReorderClick,\n readonly: readonly\n };\n }\n }, {\n key: \"itemTitle\",\n get: function get() {\n var schema = this.props.schema;\n return schema.items.title || schema.items.description || \"Item\";\n }\n }], [{\n key: \"getDerivedStateFromProps\",\n value: function getDerivedStateFromProps(nextProps, prevState) {\n // Don't call getDerivedStateFromProps if keyed formdata was just updated.\n if (prevState.updatedKeyedFormData) {\n return {\n updatedKeyedFormData: false\n };\n }\n\n var nextFormData = nextProps.formData;\n var previousKeyedFormData = prevState.keyedFormData;\n var newKeyedFormData = nextFormData.length === previousKeyedFormData.length ? previousKeyedFormData.map(function (previousKeyedFormDatum, index) {\n return {\n key: previousKeyedFormDatum.key,\n item: nextFormData[index]\n };\n }) : generateKeyedFormData(nextFormData);\n return {\n keyedFormData: newKeyedFormData\n };\n }\n }]);\n\n return ArrayField;\n}(Component);\n\n_defineProperty(ArrayField, \"defaultProps\", {\n uiSchema: {},\n formData: [],\n idSchema: {},\n required: false,\n disabled: false,\n readonly: false,\n autofocus: false\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n ArrayField.propTypes = types.fieldProps;\n}\n\nexport default ArrayField;","import _objectSpread from \"@babel/runtime-corejs2/helpers/esm/objectSpread\";\nimport _Array$isArray from \"@babel/runtime-corejs2/core-js/array/is-array\";\nimport _objectWithoutProperties from \"@babel/runtime-corejs2/helpers/esm/objectWithoutProperties\";\nimport React from \"react\";\nimport * as types from \"../../types\";\nimport { getWidget, getUiOptions, optionsList, getDefaultRegistry } from \"../../utils\";\n\nfunction BooleanField(props) {\n var schema = props.schema,\n name = props.name,\n uiSchema = props.uiSchema,\n idSchema = props.idSchema,\n formData = props.formData,\n _props$registry = props.registry,\n registry = _props$registry === void 0 ? getDefaultRegistry() : _props$registry,\n required = props.required,\n disabled = props.disabled,\n readonly = props.readonly,\n autofocus = props.autofocus,\n onChange = props.onChange,\n onFocus = props.onFocus,\n onBlur = props.onBlur,\n rawErrors = props.rawErrors;\n var title = schema.title;\n var widgets = registry.widgets,\n formContext = registry.formContext,\n fields = registry.fields;\n\n var _getUiOptions = getUiOptions(uiSchema),\n _getUiOptions$widget = _getUiOptions.widget,\n widget = _getUiOptions$widget === void 0 ? \"checkbox\" : _getUiOptions$widget,\n options = _objectWithoutProperties(_getUiOptions, [\"widget\"]);\n\n var Widget = getWidget(schema, widget, widgets);\n var enumOptions;\n\n if (_Array$isArray(schema.oneOf)) {\n enumOptions = optionsList({\n oneOf: schema.oneOf.map(function (option) {\n return _objectSpread({}, option, {\n title: option.title || (option[\"const\"] === true ? \"Yes\" : \"No\")\n });\n })\n });\n } else {\n enumOptions = optionsList({\n \"enum\": schema[\"enum\"] || [true, false],\n enumNames: schema.enumNames || (schema[\"enum\"] && schema[\"enum\"][0] === false ? [\"No\", \"Yes\"] : [\"Yes\", \"No\"])\n });\n }\n\n return React.createElement(Widget, {\n options: _objectSpread({}, options, {\n enumOptions: enumOptions\n }),\n schema: schema,\n id: idSchema && idSchema.$id,\n onChange: onChange,\n onFocus: onFocus,\n onBlur: onBlur,\n label: title === undefined ? name : title,\n value: formData,\n required: required,\n disabled: disabled,\n readonly: readonly,\n registry: registry,\n formContext: formContext,\n autofocus: autofocus,\n rawErrors: rawErrors,\n DescriptionField: fields.DescriptionField\n });\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n BooleanField.propTypes = types.fieldProps;\n}\n\nBooleanField.defaultProps = {\n uiSchema: {},\n disabled: false,\n readonly: false,\n autofocus: false\n};\nexport default BooleanField;","import React from \"react\";\nimport PropTypes from \"prop-types\";\n\nfunction DescriptionField(props) {\n var id = props.id,\n description = props.description;\n\n if (!description) {\n return null;\n }\n\n if (typeof description === \"string\") {\n return React.createElement(\"p\", {\n id: id,\n className: \"field-description\"\n }, description);\n } else {\n return React.createElement(\"div\", {\n id: id,\n className: \"field-description\"\n }, description);\n }\n}\n\nif (process.env.NODE_ENV !== \"production\") {\n DescriptionField.propTypes = {\n id: PropTypes.string,\n description: PropTypes.oneOfType([PropTypes.string, PropTypes.element])\n };\n}\n\nexport default DescriptionField;","import _objectWithoutProperties from \"@babel/runtime-corejs2/helpers/esm/objectWithoutProperties\";\nimport _getIterator from \"@babel/runtime-corejs2/core-js/get-iterator\";\nimport _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport _parseInt from \"@babel/runtime-corejs2/core-js/parse-int\";\nimport _classCallCheck from \"@babel/runtime-corejs2/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime-corejs2/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime-corejs2/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime-corejs2/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime-corejs2/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime-corejs2/helpers/esm/defineProperty\";\nimport React, { Component } from \"react\";\nimport PropTypes from \"prop-types\";\nimport * as types from \"../../types\";\nimport { getUiOptions, getWidget, guessType, retrieveSchema, getDefaultFormState, getMatchingOption as _getMatchingOption, deepEquals } from \"../../utils\";\n\nvar AnyOfField =\n/*#__PURE__*/\nfunction (_Component) {\n _inherits(AnyOfField, _Component);\n\n function AnyOfField(props) {\n var _this;\n\n _classCallCheck(this, AnyOfField);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AnyOfField).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"onOptionChange\", function (option) {\n var selectedOption = _parseInt(option, 10);\n\n var _this$props = _this.props,\n formData = _this$props.formData,\n onChange = _this$props.onChange,\n options = _this$props.options,\n registry = _this$props.registry;\n var rootSchema = registry.rootSchema;\n var newOption = retrieveSchema(options[selectedOption], rootSchema, formData); // If the new option is of type object and the current data is an object,\n // discard properties added using the old option.\n\n var newFormData = undefined;\n\n if (guessType(formData) === \"object\" && (newOption.type === \"object\" || newOption.properties)) {\n newFormData = _extends({}, formData);\n var optionsToDiscard = options.slice();\n optionsToDiscard.splice(selectedOption, 1); // Discard any data added using other options\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = _getIterator(optionsToDiscard), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _option = _step.value;\n\n if (_option.properties) {\n for (var key in _option.properties) {\n if (newFormData.hasOwnProperty(key)) {\n delete newFormData[key];\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator[\"return\"] != null) {\n _iterator[\"return\"]();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } // Call getDefaultFormState to make sure defaults are populated on change.\n\n\n onChange(getDefaultFormState(options[selectedOption], newFormData, rootSchema));\n\n _this.setState({\n selectedOption: _parseInt(option, 10)\n });\n });\n\n var _this$props2 = _this.props,\n _formData = _this$props2.formData,\n _options = _this$props2.options;\n _this.state = {\n selectedOption: _this.getMatchingOption(_formData, _options)\n };\n return _this;\n }\n\n _createClass(AnyOfField, [{\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps, prevState) {\n if (!deepEquals(this.props.formData, prevProps.formData) && this.props.idSchema.$id === prevProps.idSchema.$id) {\n var matchingOption = this.getMatchingOption(this.props.formData, this.props.options);\n\n if (!prevState || matchingOption === this.state.selectedOption) {\n return;\n }\n\n this.setState({\n selectedOption: matchingOption\n });\n }\n }\n }, {\n key: \"getMatchingOption\",\n value: function getMatchingOption(formData, options) {\n var rootSchema = this.props.registry.rootSchema;\n\n var option = _getMatchingOption(formData, options, rootSchema);\n\n if (option !== 0) {\n return option;\n } // If the form data matches none of the options, use the currently selected\n // option, assuming it's available; otherwise use the first option\n\n\n return this && this.state ? this.state.selectedOption : 0;\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this$props3 = this.props,\n baseType = _this$props3.baseType,\n disabled = _this$props3.disabled,\n errorSchema = _this$props3.errorSchema,\n formData = _this$props3.formData,\n idPrefix = _this$props3.idPrefix,\n idSchema = _this$props3.idSchema,\n onBlur = _this$props3.onBlur,\n onChange = _this$props3.onChange,\n onFocus = _this$props3.onFocus,\n options = _this$props3.options,\n registry = _this$props3.registry,\n uiSchema = _this$props3.uiSchema,\n schema = _this$props3.schema;\n var _SchemaField = registry.fields.SchemaField;\n var widgets = registry.widgets;\n var selectedOption = this.state.selectedOption;\n\n var _getUiOptions = getUiOptions(uiSchema),\n _getUiOptions$widget = _getUiOptions.widget,\n widget = _getUiOptions$widget === void 0 ? \"select\" : _getUiOptions$widget,\n uiOptions = _objectWithoutProperties(_getUiOptions, [\"widget\"]);\n\n var Widget = getWidget({\n type: \"number\"\n }, widget, widgets);\n var option = options[selectedOption] || null;\n var optionSchema;\n\n if (option) {\n // If the subschema doesn't declare a type, infer the type from the\n // parent schema\n optionSchema = option.type ? option : _extends({}, option, {\n type: baseType\n });\n }\n\n var enumOptions = options.map(function (option, index) {\n return {\n label: option.title || \"Option \".concat(index + 1),\n value: index\n };\n });\n return React.createElement(\"div\", {\n className: \"panel panel-default panel-body\"\n }, React.createElement(\"div\", {\n className: \"form-group\"\n }, React.createElement(Widget, _extends({\n id: \"\".concat(idSchema.$id).concat(schema.oneOf ? \"__oneof_select\" : \"__anyof_select\"),\n schema: {\n type: \"number\",\n \"default\": 0\n },\n onChange: this.onOptionChange,\n onBlur: onBlur,\n onFocus: onFocus,\n value: selectedOption,\n options: {\n enumOptions: enumOptions\n }\n }, uiOptions))), option !== null && React.createElement(_SchemaField, {\n schema: optionSchema,\n uiSchema: uiSchema,\n errorSchema: errorSchema,\n idSchema: idSchema,\n idPrefix: idPrefix,\n formData: formData,\n onChange: onChange,\n onBlur: onBlur,\n onFocus: onFocus,\n registry: registry,\n disabled: disabled\n }));\n }\n }]);\n\n return AnyOfField;\n}(Component);\n\nAnyOfField.defaultProps = {\n disabled: false,\n errorSchema: {},\n idSchema: {},\n uiSchema: {}\n};\n\nif (process.env.NODE_ENV !== \"production\") {\n AnyOfField.propTypes = {\n options: PropTypes.arrayOf(PropTypes.object).isRequired,\n baseType: PropTypes.string,\n uiSchema: PropTypes.object,\n idSchema: PropTypes.object,\n formData: PropTypes.any,\n errorSchema: PropTypes.object,\n registry: types.registry.isRequired\n };\n}\n\nexport default AnyOfField;","import _extends from \"@babel/runtime-corejs2/helpers/esm/extends\";\nimport _objectWithoutProperties from \"@babel/runtime-corejs2/helpers/esm/objectWithoutProperties\";\nimport _classCallCheck from \"@babel/runtime-corejs2/helpers/esm/classCallCheck\";\nimport _createClass from \"@babel/runtime-corejs2/helpers/esm/createClass\";\nimport _possibleConstructorReturn from \"@babel/runtime-corejs2/helpers/esm/possibleConstructorReturn\";\nimport _getPrototypeOf from \"@babel/runtime-corejs2/helpers/esm/getPrototypeOf\";\nimport _assertThisInitialized from \"@babel/runtime-corejs2/helpers/esm/assertThisInitialized\";\nimport _inherits from \"@babel/runtime-corejs2/helpers/esm/inherits\";\nimport _defineProperty from \"@babel/runtime-corejs2/helpers/esm/defineProperty\";\nimport React from \"react\";\nimport * as types from \"../../types\";\nimport { asNumber } from \"../../utils\"; // Matches a string that ends in a . character, optionally followed by a sequence of\n// digits followed by any number of 0 characters up until the end of the line.\n// Ensuring that there is at least one prefixed character is important so that\n// you don't incorrectly match against \"0\".\n\nvar trailingCharMatcherWithPrefix = /\\.([0-9]*0)*$/; // This is used for trimming the trailing 0 and . characters without affecting\n// the rest of the string. Its possible to use one RegEx with groups for this\n// functionality, but it is fairly complex compared to simply defining two\n// different matchers.\n\nvar trailingCharMatcher = /[0.]0*$/;\n/**\n * The NumberField class has some special handling for dealing with trailing\n * decimal points and/or zeroes. This logic is designed to allow trailing values\n * to be visible in the input element, but not be represented in the\n * corresponding form data.\n *\n * The algorithm is as follows:\n *\n * 1. When the input value changes the value is cached in the component state\n *\n * 2. The value is then normalized, removing trailing decimal points and zeros,\n * then passed to the \"onChange\" callback\n *\n * 3. When the component is rendered, the formData value is checked against the\n * value cached in the state. If it matches the cached value, the cached\n * value is passed to the input instead of the formData value\n */\n\nvar NumberField =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(NumberField, _React$Component);\n\n function NumberField(props) {\n var _this;\n\n _classCallCheck(this, NumberField);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NumberField).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"handleChange\", function (value) {\n // Cache the original value in component state\n _this.setState({\n lastValue: value\n }); // Normalize decimals that don't start with a zero character in advance so\n // that the rest of the normalization logic is simpler\n\n\n if (\"\".concat(value).charAt(0) === \".\") {\n value = \"0\".concat(value);\n } // Check that the value is a string (this can happen if the widget used is a\n //